| imho.ws |
![]() |
|
|
|
# 1 |
|
Newbie
Регистрация: 16.06.2005
Сообщения: 38
![]() |
Наследование в С++
Сейчас осваиваю ООП в С++, помогите, пожалуйста, спроектировать, первые 3 задания, последнюю задачу (есть похожая задача: http://listzone.ru/task4.exe ):
Студенты института: Разработать приложение, позволяющее организовывать работу по учету студентов некоторого подразделения института. Информация об учащемся, хранится в некотором описателе учащегося. Описатель младшекурсника содержит следующую информацию: ФИО студента, индекс группы, номер профилирующей кафедры, оценки за прошедшую сессию (максимум 5 чисел). Описатель старшекурсника: ФИО, индекс группы, номер профилирующей кафедры, оценки за прошедшую сессию (максимум 4 числа), направление темы УИР, место выполнения, оценка руководителя и комиссии. Описатель выпускника: ФИО, индекс группы, номер профилирующей кафедры, направление темы ДП, место выполнения, оценки руководителя, рецензента и ГЭК. Каждый студент имеет уникальную характеристику - шифр студента (число). Информация обо всех студентах сведена в таблицу, каждый элемент которой содержит шифр и указатель на его описатель. Элементы таблицы упорядочены по возрастанию значений шифра. Обеспечить выполнение следующих операций: -включить новый элемент, не нарушая упорядоченности -найти элемент по заданному шифру - удалить элемент заданный шифром - показать содержимое таблицы Для любого студента: -вывести информацию о студенте -получить (вернуть в качестве результата) категорию студента -получить (вернуть в качестве результата) информацию об оценках в соответствии с категорией студента, записать оценки соответствующего семестра -изменить индекс учебной группы -перевести студента в другую категорию учащихся Для старшекурсников и выпускников: -получить (вернуть в качестве результата) информацию о теме индивидуальной работы (УИР или ДП) студента, изменить информацию о теме индивидуальной работы - получить информацию о месте выполнения работы, изменить информацию о месте выполнения работы (УИР или ДП) Для приложения: -оформить поступление студента в институт -оформить перевод студента на новый семестр(добавление записи с возможным изменением статуса) -отчислить студента из института(исключение записи из таблицы) Порядок выполнения работы: 1. На основе задачи определить состав классов. 2. Разработать иерархию классов и схему их взаимодействия. 3. Для каждого класса определить его состояние и необходимые методы. 4. Разработать и отладить все классы. Приложение реализовать в виде простой диалоговой программы. |
|
|
|
|
# 2 |
|
Junior Member
Регистрация: 01.04.2003
Адрес: Новосибирск
Сообщения: 50
![]() ![]() |
Явно нужен абстрактный базовый класс учащийся и от него будут наследовать 3 разных типа студента.
В абстрактном классе собрать все общее: Шифр, ФИО,... главное не переборщить. для первых двух(по времени учебы) классов нужны методы конвертации в следующий тип учащегося. т.е. у младшекурсника должен быть метод toCтаршекурсник() и так далее. Естественно у всех классов должны быть методы вида get<Property>() где property - свойство класса, например шифр. Вроде все. |
|
|
|
|
# 3 |
|
Newbie
Регистрация: 16.06.2005
Сообщения: 38
![]() |
Насколько я понимаю, абстрактный класс должен содержать чисто виртуальные функции. Почему там должны храниться поля данных, при наследовании они все уйдут в производный класс. Или можно как-то выборочно определять при наследовании, что шифр первокурснику идет, а тема дипломного проекта нет? Разве не нужно все поля данных определять в производном классе? Как нас учили, производный класс - это базовый класс плюс что-то свое.
|
|
|
|
|
# 4 | |||||
|
Junior Member
Регистрация: 25.09.2004
Адрес: ніжин
Сообщения: 128
![]() ![]() |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
|
|