В общем есть три класса:
Пространство имён ЕГЭ
{
Класс Образовательное_учреждение
{
Строка Название_ОУ;
Число Номер_ОУ;
Коллекция Ученики;
}
Класс Ученик
{
Строка Фамилия, Имя, Отчество;
Символ Пол;
Число Номер_паспорта;
Коллекция Предметы;
}
Класс предмет
{
Строка Название;
Дата Дата_сдачи;
Число Первичный_балл, Итоговый_балл;
}
}
По заданию нужно продемонстрировать некоторые возможности ООП.
Где здесь более адекватно применить наследование абстрастного класса с абстрактным методом?
Другие языки программирования и технологии
ООП. Как правильно организовать связь классов?
тут ни где.. ну может быть сделать общий класс для предмета и образовательного учреждения, и там и там название есть. создать абстрактный метод вывода названия
Если ДЕЙСТВИТЕЛЬНО нужно продемонстрировать основы ООП, то нужно сказать, что для данных трёх типов сущностей использование абстрактного класса и абстрактного метода не просто НЕВОЗМОЖНО, а даже ВРЕДНО.
Почему нельзя абстрактный метод.
У каждой из сущностей есть некое своё поведение, благодаря этом поведению у них появятся методы, например, получить_количество_учеников (), получить_средний_балл (). Метод получить_средний_балл () можно приписать как ОУ, так и ученику. Но если этот метод сделать абстрактным, то у ОУ и ученика придётся делать общий предок с ОДНИМ методом. Ради этого вводить новую абстрактную сущность не имеет смысла. О смысле абстрактных классов чуть ниже.
Почему нельзя абстрактный класс.
Абстрактные классы делаются с одной целью - обработать объект или коллекцию объектов не вдаваясь в конкретные характеристики каждого их них, используя общие методы классов. То есть где-то в программе должно быть место, которое вызывает эти методы. В этом месте нужно "подставить" любой конкретный объект и сохранится смысл его использования. В вашем примере я не могу представить фрагмента программы, в котором можно заменить ОУ на предмет или ученика и при этом сохранится смысл этого фрагмента.
ЗЫ
Попытался пояснить без углубления в термины, но получилось не очень
ЗЗЫ
Но вот если добавить новую сущность ПерсоналОУ (ФИО, Пол, должность), то уже можно объединить с учениками абстрактным классом Персоны (ФИО, Пол), а абстрактный метод, например разрешить_проход_в_ОУ (), используемый охраной.
Да и ещё, с каких это пор Ученики имеют паспорт? У некоторых только свидетельство о рождении.
Почему нельзя абстрактный метод.
У каждой из сущностей есть некое своё поведение, благодаря этом поведению у них появятся методы, например, получить_количество_учеников (), получить_средний_балл (). Метод получить_средний_балл () можно приписать как ОУ, так и ученику. Но если этот метод сделать абстрактным, то у ОУ и ученика придётся делать общий предок с ОДНИМ методом. Ради этого вводить новую абстрактную сущность не имеет смысла. О смысле абстрактных классов чуть ниже.
Почему нельзя абстрактный класс.
Абстрактные классы делаются с одной целью - обработать объект или коллекцию объектов не вдаваясь в конкретные характеристики каждого их них, используя общие методы классов. То есть где-то в программе должно быть место, которое вызывает эти методы. В этом месте нужно "подставить" любой конкретный объект и сохранится смысл его использования. В вашем примере я не могу представить фрагмента программы, в котором можно заменить ОУ на предмет или ученика и при этом сохранится смысл этого фрагмента.
ЗЫ
Попытался пояснить без углубления в термины, но получилось не очень
ЗЗЫ
Но вот если добавить новую сущность ПерсоналОУ (ФИО, Пол, должность), то уже можно объединить с учениками абстрактным классом Персоны (ФИО, Пол), а абстрактный метод, например разрешить_проход_в_ОУ (), используемый охраной.
Да и ещё, с каких это пор Ученики имеют паспорт? У некоторых только свидетельство о рождении.
Общую сущность типо "именованная хрень", которая может показываться на экране к примеру. И все три твои сущности будут унаследованы от нее.
Класс предмет. Каждый класс этого дерева должен ответить, как его имя. Этот метод можно сделать абстрактным и переопределять в каждом подклассе. Не абстрактные методы - методы возвращающие дату сдачи и балл. Класс образовательное учреждение может быть абстрактным, если будут подклассы типа школа, лицей...
Абстрактный класс Сущность с требуемыми методами для работы с типами Строка, Число. От него наследовать ОУ, Ученик, Предмет и расширять функционал, добавляя методы и свойства.
Совет вредный, за подобные задания надо задающему стучать по голове.
Совет вредный, за подобные задания надо задающему стучать по голове.
Можно создать абстрактный класс Человек, от него наследовать Ученик.
Можно создать абстрактный класс Человек, от него наследовать Ученик.
Похожие вопросы
- Здравствуйте... есть проект-социальная сеть ...вопрос состоит в том как организовать работу классов на сайте? имеется вви
- Зачем нужно в с++ ООП? Ну классы, объекты? Если в си их не было, но язык исаользуется по сей день.
- Правильно ли я понимаю значении ООП
- Изучнние ООП - стоит ли сейчас?
- ООП. Стоит ли браться за ООП новичку в программировании?:
- ООП - зло. Ваше мнение.
- Объектно ориентированное программирование. (ООП)
- Что такое ООП для человека который не знает других парадигм
- Зачем нужно ООП?
- Что такое "член класса" (ООП), зачем нужны и какие бывают виды