C++ Homework 3 - Inheritance. Въпрос относно класовете и абстракцията.
Едно от условията на задачата е:
"Use as many child/parent classes as you think for needed !"
Но представена така, аз лично се сещам само за class Student, class Teacher, class GuestTeacher : public Teacher.
Въпроса ми е, дали има във дадения проблем, по нисък клас от студент и лектор който да бъде наследен от тях, който е общ за всички ?
Колко от вас са направили нещо подобно като описаното по-горе и тн ?
Здравейте, за да не отварям нова тема ще драсна тук.
Въпросите са ми относно трета задача и в частност наследяване и абстракция и полиморфизъм.
Тъй като наследяването подканва към не дублиране на код, първия въпрос е към това.
Да имаме метод/функция само в базовия клас (Person), и в main да извикваме този метод от съответния обект. Разбира се този вариант ще бъде само за параметрите които са от базовия клас!
1.2. Да си направим външен(извън класовете) метод/функция, който да взима base class pointe/reference и от main да го извикваме подавайки обект от съответния клас
Разбира се и тук имаме ограничение до параметрите на базовия клас. Ако искаме да видим параметър от наследения тогава трябва да се използва downcasting, което на няколко места прочетох, че не е много препоръчително. Защото student винагище е ( IS-A ) Person , но Person не винаги е student. И най добрия вариант е да си имплементираме функция за всеки клас която върши съответната работа, но тогава не се ли получава copy -> paste ?
Питам се, защото в някой от домашните видях дублиране на код, като разликата беше единствено различния клас. Т.е метода е деклариран като virtual в базовия клас, след което във всеки един клас е дефиниран, като имплементация е един и същ.
При полиморфизма, мисля че идеята е да смениш начина. Т.е. хората говорят, но едни говорят на китайски, и.т.н.
Надявам се да съм задал правилно въпросите :)