PDA

Просмотр полной версии : ООП help


ToniKapuchon
01.11.2009, 14:32
Проблема такая, начали изучать java (ну и ООП, по совместительству) и одно из первых заданий расписать классы своей объектной области, без реализации. ООП препод не объясняет, ударившись в синтаксис языка, а расписать классы и выделить сущности надо :confused:, и желательно сделать грамотно, т.к. на них в дальнейшем будет сделан вебпроект (типа курсач, со всеми технологиями джавы). Вот, поэтому обращаюсь к Вам. Помогите словами хотя бы, как вы видите объектную реализацию (какие классы необходимо создать, какой от какого унаследывать)?

Область:

Система Конструкторское бюро. Заказчик представляет Техническое Задание (ТЗ), в котором перечислен перечень Работ с указанием квалификации и количества требуемых специалистов. Администратор рассматривает ТЗ и оформляет Проект, назначая на него незанятых Работников требуемой квалификации, после чего рассчитывается стоимость Проекта и Заказчику выставляется Счет из расчета заработной платы назначенных специалистов. Администратор должен иметь возможность просмотреть список неоплаченных Счетов.

Ra$cal
01.11.2009, 21:28
самый простой вариант - выпиши существительные из этого описания. это - претенденты на звание классов. дальше продумай кто отвечает за создание объектов классов. Например Администратор оформляет проект, значит он создает объекты этого класса. Это очень важный шаг. И готовых решений тут нету, ибо вариантов много. Но советую глянуть книгу Лармана "Применение UML 2.0 и шаблонов проектирования". Там как раз есть шаблоны, описывающие, как разделить ответственности создания и управления классами, что такое высокое зацепление, низкая связанность, как они влияют на проект. Если прочитаешь это(а это не так много страниц), то как минимум сделаешь достаточно грамотную архитектуру.

Algol
02.11.2009, 11:49
Проблема такая...

Хе-хе, так это одна из самых сложных задач. Этими задачами занимаются отдельные люди - архитекторы, постановщики задачи и т.п. Собственно это не задача рядового программиста, и в курсе ООП обычно эта тема не освещается.
Касаемо собственно проблемы - почитай класика - Буча (вот тапример здесь http://www.helloworld.ru/texts/comp/other/oop/ch02.htm). Если более глубоко копать не нужно, этого хватит. А если копать более глубоко, то подход Буча многими критикуется, и вообще говоря, по Бучу реальные программы обычно не пишутся, но как для теории - сойдет.

cyanoвый
02.11.2009, 12:18
почитай С. Макконнелла "Совершенный Код", там достаточно много про это написано.

Чтобы выполнить твою задачу нужно выделить объекты, которые взаимодействуют в твоей задаче, понять, какие у этих объектов есть свойста, какие свойства должны быть "открыты" для других(создать интерфейс), понять их взаимодействия(каждый объект может содержать другие объекты и т.д.). После этого ты можешь создавать уже иерархию классов.

Хе-хе, так это одна из самых сложных задач. Этими задачами занимаются отдельные люди - архитекторы, постановщики задачи и т.п. Собственно это не задача рядового программиста, и в курсе ООП обычно эта тема не освещается.

не всегда из самых сложных, но из самых важных - точно.