Другие языки программирования и технологии

ООП. Как правильно организовать связь классов?

В общем есть три класса:
Пространство имён ЕГЭ
{
Класс Образовательное_учреждение
{
Строка Название_ОУ;
Число Номер_ОУ;
Коллекция Ученики;
}
Класс Ученик
{
Строка Фамилия, Имя, Отчество;
Символ Пол;
Число Номер_паспорта;
Коллекция Предметы;
}
Класс предмет
{
Строка Название;
Дата Дата_сдачи;
Число Первичный_балл, Итоговый_балл;
}
}

По заданию нужно продемонстрировать некоторые возможности ООП.
Где здесь более адекватно применить наследование абстрастного класса с абстрактным методом?
тут ни где.. ну может быть сделать общий класс для предмета и образовательного учреждения, и там и там название есть. создать абстрактный метод вывода названия
ДК
Дима Кириллов
22 439
Лучший ответ
Если ДЕЙСТВИТЕЛЬНО нужно продемонстрировать основы ООП, то нужно сказать, что для данных трёх типов сущностей использование абстрактного класса и абстрактного метода не просто НЕВОЗМОЖНО, а даже ВРЕДНО.

Почему нельзя абстрактный метод.
У каждой из сущностей есть некое своё поведение, благодаря этом поведению у них появятся методы, например, получить_количество_учеников (), получить_средний_балл (). Метод получить_средний_балл () можно приписать как ОУ, так и ученику. Но если этот метод сделать абстрактным, то у ОУ и ученика придётся делать общий предок с ОДНИМ методом. Ради этого вводить новую абстрактную сущность не имеет смысла. О смысле абстрактных классов чуть ниже.

Почему нельзя абстрактный класс.
Абстрактные классы делаются с одной целью - обработать объект или коллекцию объектов не вдаваясь в конкретные характеристики каждого их них, используя общие методы классов. То есть где-то в программе должно быть место, которое вызывает эти методы. В этом месте нужно "подставить" любой конкретный объект и сохранится смысл его использования. В вашем примере я не могу представить фрагмента программы, в котором можно заменить ОУ на предмет или ученика и при этом сохранится смысл этого фрагмента.

ЗЫ
Попытался пояснить без углубления в термины, но получилось не очень

ЗЗЫ
Но вот если добавить новую сущность ПерсоналОУ (ФИО, Пол, должность), то уже можно объединить с учениками абстрактным классом Персоны (ФИО, Пол), а абстрактный метод, например разрешить_проход_в_ОУ (), используемый охраной.
Да и ещё, с каких это пор Ученики имеют паспорт? У некоторых только свидетельство о рождении.
Общую сущность типо "именованная хрень", которая может показываться на экране к примеру. И все три твои сущности будут унаследованы от нее.
Класс предмет. Каждый класс этого дерева должен ответить, как его имя. Этот метод можно сделать абстрактным и переопределять в каждом подклассе. Не абстрактные методы - методы возвращающие дату сдачи и балл. Класс образовательное учреждение может быть абстрактным, если будут подклассы типа школа, лицей...
Коля Ковалев
Коля Ковалев
1 425
Абстрактный класс Сущность с требуемыми методами для работы с типами Строка, Число. От него наследовать ОУ, Ученик, Предмет и расширять функционал, добавляя методы и свойства.
Совет вредный, за подобные задания надо задающему стучать по голове.
® Михаил ®
® Михаил ®
820
Можно создать абстрактный класс Человек, от него наследовать Ученик.
Nikita Babkin
Nikita Babkin
623
Можно создать абстрактный класс Человек, от него наследовать Ученик.