В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
1 | |
C++ ООП27.06.2010, 00:26. Показов 8490. Ответов 36
Метки нет (Все метки)
Просьба дать какую-нибудь интересную программу, дабы теста на курс ООП. Чтобы не из книжки, а реально придуманная про программистом, или начинающим) Зоопарк как предложили парню недавно не предлагать, ибо будет неинтересно) Заранее спасибо. Мне нужна только задача, а не сама программа)
0
|
27.06.2010, 00:26 | |
Ответы с готовыми решениями:
36
ООП ООП ооп ООП на С++ |
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
27.06.2010, 00:38 | 2 |
Lavroff, необходимо разработать основные классы для обеспечения работы метрологической станции, к которой предъявляются следующие требования:
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
27.06.2010, 00:42 | 3 |
Lavroff, ну не нравится про зверюшек, напишите про транспортные средства. То бишь абстрактный класс Транспорт, а от него мотоцикл, автомобиль, паровоз, дризина...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.06.2010, 00:45 [ТС] | 4 |
Вот это нравится больше чем первая задача в этой теме. От той чуток глаза на лоб полезли. А какие параметры включаются в классы и какие функции? Или самому придумать их?
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
27.06.2010, 00:52 | 5 |
Не согласен с тобой. Задача неинтересна. Кроме наследования, в принципе, для решения этой задачи ничего не требуется. Ни полиморфизм, ни инкапсуляцию в широком смысле данная задача не раскрывает.
Первая задача более приближена к задачам возникающим в реальном мире. Есть превосходная книга - Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Прочитаешь, поймешь и осознаешь - читай тест сдан.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.06.2010, 00:55 [ТС] | 6 |
CyBOSSeR, Ну серьезные книги я еще почитаю. А пока только на второй курс перешел. И учусь C++ самостоятельно по одной книжке.
П.С. По той задаче. Каким методами + классами ее реализовать?
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
27.06.2010, 01:07 | 7 |
Ну это как посмотреть
Lavroff, ну подумайте, что может быть общего у транспортных средств... Например переменные-члены максимальная скорость, количество пассажиров... У производного класса автомобиль - тип двигателя (дизель, бензиновый инжекторный, бензиновый карбюраторный), мощность двигателя, etc...
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.06.2010, 01:11 [ТС] | 8 |
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
27.06.2010, 01:18 | 9 |
Ну это опять же - как посмотреть... Если в базовом классе сделать виртуальный метод "расход топлива", в производных можно его переопределять исходя из типа топлива, типа и объёма двигателя... Опять же сам класс "топливо" можно сделать с переменной "название" и функцией, возвращающей энергию в джоулях при расходе определённого объёма. А от него потомков наделать (дрова, уголь, бензин...) с единицами измерения (кубометры, тонны, литры/галлоны)... Короче при желании можно в такие дебри забраться, что будет место и для инкапсуляции, и для полиморфизма...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
27.06.2010, 03:55 [ТС] | 10 | |||||
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
27.06.2010, 05:05 [ТС] | 12 | |||||
Ок. Будет virtual. В каждом абстрактном классе?
Добавлено через 35 минут Кхм. Отмена. Буду налаживать работу хотя бы этих трех классов пока что. Добавлено через 22 минуты Работает. Приблизительно так?
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
27.06.2010, 09:34 | 13 | |||||
Проблема в том, что в таком случае мы будем иметь дело с большим количеством классов, без чего в принципе можно обойтись (что и нужно сделать). Не следует плодить сущностей без необходимости.
Задача не является задачей на ООП. На механизм наследования - да, но не более. В основном потому, что нет взаимодействия между объектами различных классов. Если подразумевается наследование, то деструктор должен быть объявлен виртуальным в базовом классе. Это необходимо для правильного вызова деструктора объекта производного класса при удалении его через указатель на базовый класс. Пример:
Если же мы объявим деструктор виртуальным, вывод будет следующим: Виртуальный деструктор ничем от виртуальной функции не отличается, кроме того, что вызывается автоматически при уничтожении объекта.
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
27.06.2010, 13:29 | 14 |
Ну задачи-то, как таковой, и вовсе небыло... Если делать просто каталог тс с выводом каких-то их параметров, то и классы никакие не нужны, можно нехитрой структурой обойтись (про то, что в С++ структура - тот же класс, я в курсе ). Если же делать игрушку, в которой предполагается управлять машинами/поездами/самолётами, то вот тут как-раз очень много моментов общих для всех классов, но по-разному в них реализованных...
0
|
CyBOSSeR
|
27.06.2010, 14:01
#15
|
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||
27.06.2010, 20:05 [ТС] | 16 | |||||||||||||||
Вот что вырисовывается на данный момент:
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
27.06.2010, 20:49 | 17 |
Lavroff, все методы класса Transport могут и должны быть реализованы в этом же классе. И не надо делать их виртуальными - их реализация во всех подклассах одинакова.
Это также относится к классу Auto.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
27.06.2010, 21:34 [ТС] | 18 | |||||
Хорошо. Так и будет сделано
Добавлено через 35 минут Небольшие изменения.
0
|
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
|
|
27.06.2010, 21:57 | 19 |
Эй, а зачем у тебя car наследует и от transport и от auto? Это же чушь. Сделай просто от Auto.
Добавлено через 7 минут Смотрю у тебя полиморфизма нет... Можешь заюзать например так: сделай еще парочку классов, какой нить мерс да запорожец, пусть они оба умеют делать какоенить действие (виртуальный метод класса car), но по-разному (две различные реализации в соответствующих классах). Пусть бибикают хотя бы, на что фантазии хватит. Потом например сделай массив указателей типа car, понасоздавай динамически рандомных машин, запихай в него. Позапускай методы. Понаслаждайся видом того как одинаковые внешне штуки делают похожие действия по-разному.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
27.06.2010, 22:10 [ТС] | 20 |
Хохол, Точно. Что-то увлекся совсем наследованием. Попробую ща сделать с полиморфизмом
0
|
27.06.2010, 22:10 | |
27.06.2010, 22:10 | |
Помогаю со студенческими работами здесь
20
ООП по ООП . ООП ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |