Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Размышления об объектах  (Прочитано 10074 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 15-12-2005 00:18 » 

В учебнике по С++ есть задачи, где надо описать реальный объект. Лифт, автомобиль...
Всё это я делал, но как-то всё не так. Кто-нибудь мог бы для примера сделать описание какого-нибудь объекта?
Например задача из учебника:
Цитата
Опишите не более, чем в 200 словах что такое автомобиль и что он делает. Составте отдельные списки имён существительных и глаголов. Мы полагаем, что каждое имя существительное соответствует объекту, который необходим для построения системы, в данном случае автомобиля. Выберите пять объектов из вашего списка и для каждого из них составьте список атрибутов и список вариантов поведения. Коротко опишите, как эти объекты взаимодействуют друг с другом и с другими объектами вашего описания. Тем самым вы осуществите несколько важных шагов типичного объектно-ориентированного проектирования.
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 15-12-2005 02:11 » 

А что за учебник? Что-то знакомые примеры Улыбаюсь
Кстати, имхо хорошая книга Г.Буч "Объектно-ориентированное проектирование с примерами на С++". В сети она точно есть.
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
REM
Гость
« Ответ #2 : 15-12-2005 07:07 » new

Цитата
Кто-нибудь мог бы для примера сделать описание какого-нибудь объекта?

Попробую. Требуется разграничить автомобиль на отдельные узлы и агрегаты и описать их как объекты. Автомобиль в данном случае будет не объектом, а, скорее, системой взаимодействующих объектов ли даже подсистем (которую в свою очередь можно попытаться описать как объект, но вот только зачем? Улыбаюсь ). Пример подсистем автомобиля: рулевое управление, трансмиссия, ходовая часть, и т.д. Пример объектов: двигатель, коробка передач и т.д. Список атрибутов и список вариантов поведения для конкретного агрегата приводить не решусь, т.к. плохо знаю мат. часть.

Вообще ИМХО задание так себе: уж больно оно не конкретное.
Записан
REM
Гость
« Ответ #3 : 15-12-2005 07:28 » 

ИМХО, самое главное в этом задании это описание взаимодействия различных объектов. Это действительно является одной из наиболее сложных задач ОО проектирования. Вообще, задание в той форме, в которой оно поставлено весьма сложно. Надо понимать, что речь здесь идёт не о конкретных объектах, а о построении модели взаимодействия нескольких абстрактных классов (этакий Framework). А это уже задача не столько программиста, сколько системного архитектора. Если вы интересуетесь данными вопросами, то возможно вам стоит преобрести хорошую книжку о проектировании.
LEON уже советовал вам подобную
Цитата
Есть одна книга по пректированию программ, она именно для начинающих. К. Ларман. Применение UML и шаблонов проектирования. http://www.ozon.ru/context/detail/id/1048352/
ИМХО, книга не для совсем уж начинающих, но польза от неё огромная. Заодно и с RUP познакомитесь.
Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 15-12-2005 10:34 » 

Это книжка авторов Харви Дейтел и Пол дейтел "Как программировать на С++".
В этом задании, как я понял надо просто описать, что он делает.
Он ездеет. Перевозит пассажиров.Может поворачивать, ускорятся замедлятся. В общем автомобиль как не делимый объект. Плюс ещё наверное можно описать взаимодействие с объектом человек.
Как я понял тут проявляется абстрогированность. Т.е не думая как я буду составлять программу просто рассуждать об объекте. Как я понял в этом должно проявится преимущество ООП.
В общем попробуйте попроще описать автомобиль. Без всяких агрегатов.
Записан
Alf
Гость
« Ответ #5 : 15-12-2005 12:06 » 

Я думаю, тебе для начала неплохо бы почитать Бадда, если еще не читал. Там объектная парадигма изложена доступно, с хорошими примерами и в то же время достаточно серьезно, без излишних упрощений.

Что касается автомобиля - тут, наверное, имеет смысл подумать насчет иерархии классов. На вершине находится абстрактный автомобиль, который ты не купишь в магазине. Он сочетает в себе свойства и методы, которым должен удовлетворять любой автомобиль. Например, у каждого автомобиля есть следующие свойства:

- колесная формула;
- тип, объем, мощность двигателя;
- количество пассажирских мест;
- марка топлива, объем топливного бака;
...

Кроме того, любой автомобиль может: разгоняться, ехать, тормозить, заправляться и т.д.

Далее ты можешь произвести дальнейшую классификацию автомобилей: пассажирские, грузовые, автобусы, специальные и т.д. Каждый их этих подтипов также является автомобилем, поэтому имеет все свойства и методы родительского класса. Кроме того, каждый из них имеет собственные свойства, которые неуместны для других подтипов. Например, среди подтипов специальных автомобилей на каком-то уровне дерева наследования у тебя появится автокран. Для него имеют значение такие свойства, как длина стрелы, максимальный вес груза и высота его подъема. Эти свойства бессмысленны для легкового автомобиля или "скорой помощи". Также у него есть уникальные  методы: поднять-опустить стрелу, поднать-опустить груз и т.д.

Продолжать эту классификацию ты можешь на любую разумную глубину. Например: ВАЗ-2106 является седаном, легковым, автомобилем (3 уровня наследования). Может, найдешь еще какие-то промежуточные подклассы.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 15-12-2005 12:28 » 

Цитата
Это книжка авторов Харви Дейтел и Пол дейтел "Как программировать на С++".
Довольно приличная книга. Там в первых пяти главах  дается обшее описание языка С++. И в конце главы дается кусками объектная парадигма. Но в отрыве от языка.  Чтобы люди смогли понять, зачем вообше объекты нужны. Начиная с 6 части уже идут ООП с привязкой к языку.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
REM
Гость
« Ответ #7 : 15-12-2005 12:51 » 

Если уж разговор пошёл о книжках, то есть замечательная книжка Липмана "Основы программирования на C++" (Stanley Lippman "Essential C++"). Это что касается С++. А если хочется разобраться именно с ООП, то тут я полностью согласен с Альфом -- стоит почитать Бадда. ИМХО, книжка хоть уже и не первой свежести, но всё ещё рулит.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines