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
Alexandra_Ivanova avatar Alexandra_Ivanova 1 Точки

Аз съм го направила по същия начин с един общ клас "Person".

0
fl3x1324 avatar fl3x1324 60 Точки

Ами да аз направих class SchoolMember с мембъри ID, name, currentCourse. Наследяват го други три класа Student, Teacher, GuestTeacher съответно със дехните си добавени мембъри.

2
dim4o avatar dim4o 288 Точки

@Alex0101, @Alexandra_Ivanova,

SchoolMember е добро като име, но Person за мен не е добре. Приемливо е ако държи само нещо, което характерно за хората като цяло. В случая е само името и е безсмислено да се прави такъв клас. По-скоро бих помислил за BaseTeacher, който налседява SchoolMember и има protected поле _salary. Така Teacher и GuestTeacher като го наследят ще могат да си имплементират и get/set MonthlySalary и съответно get/set getSalaryForCourse като използват _salary;

2
Lirik avatar Lirik 22 Точки

Да и аз си направих клас Persons, в които да се пази информацията за хората изобщо.

Въвел съм и клас Courses, които обработва информацията за курсовете, семинарите като такива.

Горните два класа се наследяват множествено от клас, обработващ учебния процес. Този клас наследява множествено класовете Persons и Courses, а за информацията от класа се ползва структура с union.

1
chelseafan94 avatar chelseafan94 -1 Точки

Имам въпрос по условието:

(Average evaluation mark ) от къде идва тази средна оценка и как да разберем дали му е първия курс на студента?

0
fl3x1324 avatar fl3x1324 60 Точки

Здрасти! Лектора, Мартин каза в Live видеото от вчера, че може просто да пльокнем някаква стойност от 2.00 до 6.00, не е задължително да се изчислява от няколко текущи оценки. Аз смятам да го направя по този начин, а и целта на домашното е да упражним наследяването.

 

Поздрави, Атанас Минков!

1
18/06/2016 18:06:06
chelseafan94 avatar chelseafan94 -1 Точки

Благодаря ти!!!

А добавянето на нови данни това не го взехме мисля: (Add data for students)

Или се лъжа?

0
chelseafan94 avatar chelseafan94 -1 Точки

Не те разбрах за добавянето извинявай, не трябва ли от конзолата при натискане на клавиша и да въведем същите данни, но за друг нов обект. А за това дето пита след като времето изтече за предаване тогава може да се оценява.

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