|
13 / 13 / 5
Регистрация: 21.06.2013
Сообщений: 128
|
||||||||||||||||||||||||||||||||||||
Задача на наследование и полиморфизм: иерархия классов Person-Student-Teacher28.05.2014, 13:12. Показов 7245. Ответов 0
Метки нет (Все метки)
Добрый день. На просторах интернета нашел задачу по шарпу:
Кликните здесь для просмотра всего текста
2.1. Создать иерархию классов Person-Student-Teacher. Каждый класс – в своей сборке. В каждом классе должны быть свойства, а также виртуальная функция Print и переопределенная функция ToString(). Основная программа создает массив объектов Person или их наследников, после чего выдает его на экран. У каждого Teacher должен быть список Students, которыми он руководит, у каждого Student - Teacher, который им руководит.
Замечание. В процессе реализации возникнет такая ошибка как циклическая зависимость сборок: сборка Student зависит от сборки Teacher и наоборот. Для устранения этой ошибки рекомендуется создать класс Student без поля Teacher, после чего создать производный класс StudentWithAdvisor с полем Teacher в отдельной сборке. 2.2. Для классов Person-Student-Teacher реализовать и оттестировать ToString(), Equals(), GetHashCode(). 2.3. Для классов Person-Student-Teacher реализовать статические методы RandomPerson, RandomStudent, RandomTeacher, которые возвращают случайного из некоторого статического массива. 2.4. С помощью is, as, GetType определить, сколько в массиве персон, студентов и преподавателей и перевести всех студентов на следующий курс. 2.5. Для классов Person-Student-Teacher реализовать глубокое клонирование, определив виртуальный метод Clone(). Клон должен возвращать точную копию по значению и типу. Проиллюстрировать Clone на примере контейнера персон - должны создаваться клоны объекты ровно тех типов, которые содержатся в исходном контейнере. 2.6. Используя метод GetType() класса Student и метод BaseType() класса Type, вывести всех предков класса Student (написать общий метод) Замечание 1. Свойства ("умные" поля) определяются так:
Замечание 2. В конструкторе потомка следует вызывать конструктор предка в списке инициализации:
Замечание 5. p is Student возвращает True если в p - студент или производный класс. p as Student преобразует тип p к Student, а если это невозможно, возвращает null. Замечание 6. Для сравнения на точное совпадение типа используется GetType:
Создать обычные классы со свойствами, проблемы не составляет. Унаследовать тоже не проблема. Если делать по заданию, я бы создал 3 класса, в главной программе сделал массив учеников. В классе Ученик - есть свойство с именем учителя. А в классе Учитель - сделал бы список студентов, которых пришлось бы потом добавлять из массива. Вопросы возникают следующие: 1) Как для классов Person-Student-Teacher реализовать статические методы RandomPerson, RandomStudent, RandomTeacher, которые возвращают случайного из некоторого статического массива? допустим в классе Учитель я могу сделать выбор рендомного ученика, т.к. есть список. А как реализовать метод в классе, который будет выбирать любого ученика, учителя из массива, который создается в основной программе? 2) И как используя свойства сделать добавление/удаление/чтение элементов списка? Или вообще не обращать внимания, что есть приватный список, а описать свойства класса Учитель как "добавление записи", "удаление записи", "получение всего списка"? Больше даже не проблема в реализации, а проблема в понимании текущей задачи... Пока сделал такое: Кликните здесь для просмотра всего текста
Если у кого то есть время и желание подсказать - буду очень благодарен ![]() Добавлено через 1 час 44 минуты В общем получается что-то очень отдаленно напоминающее задание: Кликните здесь для просмотра всего текста
И использование: Кликните здесь для просмотра всего текста
0
|
||||||||||||||||||||||||||||||||||||
| 28.05.2014, 13:12 | |
|
Ответы с готовыми решениями:
0
Задача на множественное наследование, иерархия классов Определить новые версии классов Exam, Person и Student
|
| 28.05.2014, 13:12 | |
|
Помогаю со студенческими работами здесь
1
Наследование и полиморфизм классов Множественное наследование. Иерархия классов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|