Loading...
IvanUch avatar IvanUch 0 Точки

C++ Homework 3 - Inheritance. Въпрос относно класовете и абстракцията.

Едно от условията на задачата е:

"Use as many child/parent classes as you think for needed !"

Но представена така, аз лично се сещам само за class Student, class Teacher, class GuestTeacher : public Teacher.

Въпроса ми е, дали има във дадения проблем, по нисък клас от студент и лектор който да бъде наследен от тях, който е общ за всички ?

Колко от вас са направили нещо подобно като описаното по-горе и тн ?

Тагове:
0
C++ Programming
Alex0101 avatar Alex0101 374 Точки

Здравей,

аз бих изнесъл общото за всички касове в клас Person

4
18/06/2016 12:30:21
v.nikolov avatar v.nikolov 17 Точки

Здравейте, за да не отварям нова тема ще драсна тук.

Въпросите са ми относно трета задача и в частност наследяване и абстракция и полиморфизъм.

Тъй като наследяването подканва към не дублиране на код, първия въпрос е към това.

  1. В случая на задача 3 кое по правилно  
    1. 1. В случая имаме ID и name които са общи за всичките класове(student : Person)

                Да имаме метод/функция само в базовия клас (Person), и в main да извикваме този метод от съответния обект. Разбира се този вариант ще бъде само за параметрите които са от базовия клас!

                 1.2. Да си направим външен(извън класовете) метод/функция, който да взима base class pointe/reference и от main да го извикваме подавайки обект от съответния клас

Разбира се и тук имаме ограничение до параметрите на базовия клас. Ако искаме да видим параметър от наследения тогава трябва да се използва  downcasting, което на няколко места прочетох, че не е много препоръчително. Защото student винагище е  ( IS-A ) Person , но Person  не винаги е student. И най добрия вариант е да си имплементираме функция за всеки клас която върши съответната работа, но тогава не се ли получава copy -> paste ?

Питам се, защото в някой от домашните видях дублиране на код, като разликата беше единствено различния клас. Т.е метода е деклариран като virtual в базовия клас, след което във всеки един клас е дефиниран, като имплементация е един и същ.

При полиморфизма, мисля че идеята е да смениш начина. Т.е. хората говорят, но едни говорят на китайски, и.т.н.

 Надявам се да съм задал правилно въпросите :)

0
23/06/2016 17:03:46
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.