imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 29.11.2005, 11:53     # 1
andrei solovjev
Newbie
 
Регистрация: 16.06.2005
Сообщения: 38

andrei solovjev Нуль без палочки
Наследование в С++

Сейчас осваиваю ООП в С++, помогите, пожалуйста, спроектировать, первые 3 задания, последнюю задачу (есть похожая задача: http://listzone.ru/task4.exe ):
Студенты института:
Разработать приложение, позволяющее организовывать работу по учету студентов некоторого подразделения института. Информация об учащемся, хранится в некотором описателе учащегося.
Описатель младшекурсника содержит следующую информацию: ФИО студента, индекс группы, номер профилирующей кафедры, оценки за прошедшую сессию (максимум 5 чисел).
Описатель старшекурсника: ФИО, индекс группы, номер профилирующей кафедры, оценки за прошедшую сессию (максимум 4 числа), направление темы УИР, место выполнения, оценка руководителя и комиссии.
Описатель выпускника: ФИО, индекс группы, номер профилирующей кафедры, направление темы ДП, место выполнения, оценки руководителя, рецензента и ГЭК.
Каждый студент имеет уникальную характеристику - шифр студента (число). Информация обо всех студентах сведена в таблицу, каждый элемент которой содержит шифр и указатель на его описатель. Элементы таблицы упорядочены по возрастанию значений шифра.
Обеспечить выполнение следующих операций:
-включить новый элемент, не нарушая упорядоченности
-найти элемент по заданному шифру
- удалить элемент заданный шифром
- показать содержимое таблицы
Для любого студента:
-вывести информацию о студенте
-получить (вернуть в качестве результата) категорию студента
-получить (вернуть в качестве результата) информацию об оценках в соответствии с категорией студента, записать оценки соответствующего семестра
-изменить индекс учебной группы
-перевести студента в другую категорию учащихся
Для старшекурсников и выпускников:
-получить (вернуть в качестве результата) информацию о теме индивидуальной работы (УИР или ДП) студента, изменить информацию о теме индивидуальной работы
- получить информацию о месте выполнения работы, изменить информацию о месте выполнения работы (УИР или ДП)
Для приложения:
-оформить поступление студента в институт
-оформить перевод студента на новый семестр(добавление записи с возможным изменением статуса)
-отчислить студента из института(исключение записи из таблицы)
Порядок выполнения работы:
1. На основе задачи определить состав классов.
2. Разработать иерархию классов и схему их взаимодействия.
3. Для каждого класса определить его состояние и необходимые методы.
4. Разработать и отладить все классы. Приложение реализовать в виде простой диалоговой программы.
andrei solovjev вне форума  
Старый 29.11.2005, 14:08     # 2
melk
Junior Member
 
Аватар для melk
 
Регистрация: 01.04.2003
Адрес: Новосибирск
Сообщения: 50

melk Известность не заставит себя ждатьmelk Известность не заставит себя ждать
Явно нужен абстрактный базовый класс учащийся и от него будут наследовать 3 разных типа студента.
В абстрактном классе собрать все общее: Шифр, ФИО,... главное не переборщить.

для первых двух(по времени учебы) классов нужны методы конвертации в следующий тип учащегося.
т.е. у младшекурсника должен быть метод toCтаршекурсник() и так далее.

Естественно у всех классов должны быть методы вида get<Property>()
где property - свойство класса, например шифр.

Вроде все.
melk вне форума  
Старый 30.11.2005, 00:19     # 3
andrei solovjev
Newbie
 
Регистрация: 16.06.2005
Сообщения: 38

andrei solovjev Нуль без палочки
Насколько я понимаю, абстрактный класс должен содержать чисто виртуальные функции. Почему там должны храниться поля данных, при наследовании они все уйдут в производный класс. Или можно как-то выборочно определять при наследовании, что шифр первокурснику идет, а тема дипломного проекта нет? Разве не нужно все поля данных определять в производном классе? Как нас учили, производный класс - это базовый класс плюс что-то свое.
andrei solovjev вне форума  
Старый 30.11.2005, 15:30     # 4
topknot
Junior Member
 
Регистрация: 25.09.2004
Адрес: ніжин
Сообщения: 128

topknot Известность не заставит себя ждатьtopknot Известность не заставит себя ждать
Цитата:
Сообщение от andrei solovjev
Насколько я понимаю, абстрактный класс должен содержать чисто виртуальные функции.
да. но не обязательно все должны быть виртуальными. некоторая функциональность вполне может быть реализована в абстрактном базовом классе.

Цитата:
Сообщение от andrei solovjev
Почему там должны храниться поля данных, при наследовании они все уйдут в производный класс.
Общие данные очень логично разместить именно в базовом классе, то что он при этом абстрактый - делу не мешает.

Цитата:
Сообщение от andrei solovjev
Или можно как-то выборочно определять при наследовании, что шифр первокурснику идет, а тема дипломного проекта нет?
ФИО - в базовый (может ещё что-то, ФИО я взял для примера), а вещи специфичечкие для потомков в них и добавлять.

Цитата:
Сообщение от andrei solovjev
Разве не нужно все поля данных определять в производном классе?
не нужно.

Цитата:
Сообщение от andrei solovjev
Как нас учили, производный класс - это базовый класс плюс что-то свое.
Правильно вас учили. Но предыдущее твоё предложение никак не вытекает из этого.
topknot вне форума  
Старый 30.11.2005, 22:39     # 5
andrei solovjev
Newbie
 
Регистрация: 16.06.2005
Сообщения: 38

andrei solovjev Нуль без палочки
topknot, спасибо, кажется до меня дошло как ее делать
andrei solovjev вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:46.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.