Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Объектно-ориентированный анализ и проектирование


Автор: Medved 22.3.2007, 04:11
Знакомы ли в с объектно-ориентированным проектированием и UML? 
Используете ли вы паттерны в своих проектах?
Помогают ли они вам в ваших программах?

Спасибо.

Автор: y3u 22.3.2007, 13:49
Использую иногда, когда менеджеры проекта чуть слабее ограничивают по срокам и бюджетам. Обычно это в случае каких-либо сложных именно новых модулей. Далее ИМХО. Примнение такого проектирования для старых модулей не целесообразно, т.к. в большинстве случаев там даже джавадоков нету... ИМХО, все упирается в культуру,  техпроцесс и бюджеты. Если проограммистов постоянно пинать, чтобы код следовал конвеншенсам, чтобы писали юниттесты, чтобы писали джавадоки, а диаграммы и схемы проекта всегда содержались бы в актуальном состоянии - тогда, да, имеет смысл постоянно использовать такой подход к проектированию. В остальных случаях, это надо делать только там, где с помощью него действительно удобно девелоперить...

Автор: Medved 22.3.2007, 14:12
Цитата(y3u @  22.3.2007,  16:49 Найти цитируемый пост)
Если проограммистов постоянно пинать, чтобы код следовал конвеншенсам, чтобы писали юниттесты, чтобы писали джавадоки, а диаграммы и схемы проекта всегда содержались бы в актуальном состоянии - тогда, да, имеет смысл постоянно использовать такой подход к проектированию


Вспомнил ситуацию. Директор фирмы в которой я однов ремя работал, ездил в коммандировку в Ростов. Там ребята написали какой-то софт, и просили за него баснасловные деньги. Директор когда узнал сколько, просто офигел...  smile 

Спросил а чем обусловлена такая цена. А те ответили: "Наш софт написан по всем стандартам".
Потом он приехал к нам из командировки, и начал требовать, чтобы мы начали изучать эти стандарты. Собственно именно тогда я и познакомился с этой тематикой. А до этого писал на Дельфи так - тыкнул кнопку, написал обработчик, довольный...хорошо... (голосом Бората) smile

Автор: _Y_ 22.3.2007, 14:26
Что-то я не вьехал. Вроде конференция по Java - языку глубоко заидеалогизированному и именно на обьектно-ориентированное программирование. Обойтись без него просто нельзя. Так что - и ответов отрицательных быть не может. Пойдите в конфу VB и получите прямо противоположный ответ smile 

ИМХО. Обьектный подход удобен гораздо чаще, чем неудобен, но бывают случаи (а может и целые области, которых я не знаю), когда без обьектов проще и быстрее.

Автор: Medved 22.3.2007, 14:33
Цитата(_Y_ @  22.3.2007,  17:26 Найти цитируемый пост)
Вроде конференция по Java - языку глубоко заидеалогизированному и именно на обьектно-ориентированное программирование. Обойтись без него просто нельзя. 

Отчасти верно. Но некоторые программируют на Java, имея смутные представления о том, что такое фабрика, или медиатор. Так что хоть Java и располагает к полной пардиаграмме ООП, это не гарантирует от того, что ее использует каждый.

Автор: Maksym 22.3.2007, 19:53
я бы еще понял если бы опрос был по аспектно-ориентированному программированию... тут действительно tastes differ. но ооп... странный опрос  smile 
Цитата(Medved @  22.3.2007,  14:33 Найти цитируемый пост)
ак что хоть Java и располагает к полной пардиаграмме ООП, это не гарантирует от того, что ее использует каждый.

Имхо -- гарантирует, как минимум одни класс для main -- нужен  smile 

Автор: Medved 22.3.2007, 20:23
Цитата(Maksym @  22.3.2007,  22:53 Найти цитируемый пост)
Имхо -- гарантирует, как минимум одни класс для main -- нужен  smile 


Читайте пожалуйста внимательнее!
Я говорю о ПРОЕКТИРОВАНИИ и АНАЛИЗЕ. UML, паттерны, диаграммы и т.п.

Автор: Maksym 22.3.2007, 20:30
Medved
Цитата(Medved @  22.3.2007,  20:23 Найти цитируемый пост)
ПРОЕКТИРОВАНИИ и АНАЛИЗЕ. UML, паттерны, диаграммы и т.п.

Извините, но мне показалось, что из текста вопроса это не совсем понятно.
Но даже в таком виде это скорее опрос о размерах проектов, с которыми приходится работать; ведь, согласитесь, начиная с некоторого, совсем небольшого, объема проекта без этого уже ну обойтись ..


Автор: Medved 22.3.2007, 20:39
Цитата(Maksym @  22.3.2007,  23:30 Найти цитируемый пост)
Но даже в таком виде это скорее опрос о размерах проектов, с которыми приходится работать; ведь, согласитесь, начиная с некоторого, совсем небольшого, объема проекта без этого уже ну обойтись ..

Вы знаете, бывает что как-то обходяться. Правда себе потом дороже выходит.

Добавлено @ 20:44 
Цитата(Maksym @  22.3.2007,  23:30 Найти цитируемый пост)
Извините, но мне показалось, что из текста вопроса это не совсем понятно.


Ээээ.. это как? 
Цитата(Medved @  22.3.2007,  07:11 Найти цитируемый пост)

Используете ли вы объектно-ориентированное проектирование в своих проектах?
Знакомы ли в с объектно-ориентированным проектированием и UML? 
Используете ли вы паттерны в своих проектах?
Помогают ли они вам в ваших программах?


Автор: JUncle 22.3.2007, 20:53
Цитата(Maksym @  22.3.2007,  19:53 Найти цитируемый пост)
Имхо -- гарантирует, как минимум одни класс для main -- нужен 

Применение классов - необходимый, но не достаточный признак того, что программа является объектно-ориентированной.

Автор: Maksym 22.3.2007, 21:00
Цитата(Medved @  22.3.2007,  20:39 Найти цитируемый пост)
Ээээ.. это как? 
Цитата(Medved @  22.3.2007,  07:11 Найти цитируемый пост)

Используете ли вы объектно-ориентированное проектирование в своих проектах?
Знакомы ли в с объектно-ориентированным проектированием и UML? 
Используете ли вы паттерны в своих проектах?
Помогают ли они вам в ваших программах?

Ммм.. сорри, прочел только шапку, без первого поста. Отвечу по пунктам  smile 
  • Использую. Пришел в Java именно за этим и в восторге от реализации маниакально стараюсь обобъектить все и вся.  smile 
  • Знаком + клиенты требуют technical design documents с обязательным наличинем UML-диаграмм на все ключевые вещи.  smile 
  • Использование паттернов было частым, но несколько фрагментарным до того момента, пока не пришлось писать собственный фреймворк, на базе которого разрабатывется около десятка схожих приложений. Только в этом процессе осознал суть и соль..   smile  уверен, что не до конца и для открытий место осталось.
  • Мой код не существует без описанного выше.



Автор: Medved 5.4.2007, 03:08
Леоненков. http://khpi-iip.mipk.kharkiv.edu/library/case/leon/index.html

Автор: adLucem 27.4.2007, 18:08
Специализируюсь на объектно-ориентированных системах, поэтому хотел бы высказать несколько идей.

Шаблоны проектирования вещь очень полезная, но до сих пор вокруг них идут довольно активные дебаты. В основном причиной этих дебатов является неправильное и тем более совершенно неуместное использование шаблонов (например, смотри Кериевски "Рефакторинг с использованием шаблонов"). Я согласен с мыслью, что использование шаблонов должно быть минимальным, так как они заведомо усложняют проект (требуя от того кто с ним работает более высокой квалификации), поэтому их использование должно быть органичным (то есть даже если человек ничего не знает о шаблонах он должен чувствовать, что этот код наилучшим образом подходит в этом месте, а не рыться в книгах в поисках описания шаблона).

Шаблоны улучшают проект при наличии трех основополагающих: знание самих шаблонов разработчиками, понимание причин применения шаблонов и способ применения шаблонов. Зачастую достичь всех трех условий в рамках конкретного проекта и команды разработчиков нельзя. Лучший способ использования паттернов проектирования - не использовать их вообще, пока вы не возникает ситуация, когда без них не обойтись и в которой они приносят реальную выгоду. Сами по себе шаблоны не решают проблем проектирования и не являются повторно используемым кодом (Бертранд Мейер "Объектно-ориентированное конструирование систем"). Изучение шаблонов полезно для развития навыков написания "правильного" (что в первую очередь обозначает понятного) кода, но использование шаблонов не есть самоцель.

UML очень мощное средство, но опять возникает проблема, что большинство разработчиков владеют только азами этого языка и попытка представить структуру на 3-х 4-х связанных диаграммах может только замедлить проект, а не улучшить взаимодействие. Поэтому использование UML зачастую разумно ограничить только начальным уровнем (например, брошюры Кэндалла Скотта).

Вообще ОО проектирование, шаблоны, UML (а также рефакторинг) нужно рассматривать как отдельные вопросы (а еще лучше как конкретные вопросы), иначе можно просто бесконечно говорить о наборе абстрактных вещей.

Автор: Гарри 7.6.2007, 12:29
Паттерны рулят, антипаттерны еще больше  smile UML + генерация кода из него тоже ... Это всё у нас теперь в обязательной программе обучения...  smile 

Помоему, практически всегда в начале проекта использование всех этих вещей означает overhead,  в середине проекта уже начинает приносить первые плоды, а в конце так привыкаешь, что уже не обойтись smile

Кстати есть еще одна крутая вещь которая стоит рядом с software quality, unit тестами, итд... это Software measurement ...

http://en.wikipedia.org/wiki/COCOMO
http://en.wikipedia.org/wiki/Lines_of_code
http://de.wikipedia.org/wiki/Function-Point-Verfahren

Автор: nornad 7.6.2007, 16:53
Цитата(Гарри @  7.6.2007,  15:29 Найти цитируемый пост)
Кстати есть еще одна крутая вещь которая стоит рядом с software quality, unit тестами, итд... это Software measurement ...


Ну, количество строк кода (и другие подобные параметры) - штука довольно глупая, имхо. А всё потому, что хороший софт не обязан иметь минимальное или максимальное число строк кода. Он обязан, в первую очередь, хорошо работать. Быстро, стабильно и удобно. smile 
В целом по шаблонам почти согласен с adLucem - надо головой думать, нужен шаблон в данном месте или нет. Мне, например, из подходов к разработке очень нравится идея экстремального программирования. Только вот в полной мере она подходит далеко не для всех ситуаций. Часть идей можно использовать почти везде, но в целом - не так уж и часто. То же самое и с шаблонами.

Автор: Гарри 7.6.2007, 19:08
Мне кажется lines of code и ему подобные метрики могут быть от случая к случаю не такими и глупыми ... Всё зависит от того, что я хочу узнать о своём проекте? 

Если, допустим я хочу узнать сколько (с точностью до 10%) будет длится написание предстоящего проекта, то естественно тут с lines of code совсем плохо, т.к. ни строчки еще не написано.

А если я буду исходить из таких соображений.. допустим мы уже первой четверти проекта, и что то уже написали. Можно было бы посмотреть на код... сколько комментариев как они выглядят, сколько чистого кода, сколько классов...  Проще говоря, если какой то метод имеет больше 10 параметров, то явно фигню написали ... Если метод имеет свыше ста строк то может быть лучше его разбить ... и так далее smile  Так можно предугадать некоторые проблемы.

Или, как думаете?

Автор: Maksym 7.6.2007, 19:11
много кода написать легко
трудно написать мало кода

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)