Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Development and Design  ~  Объектно-ориентированное программирование проблемы и решения
На страницу 1, 2, 3  »
Madlax
Сообщение  13 Мар 2007, 3:19  Ссылка : Ответить с цитатой
 
C нами с 25.01.2005
Репутация: 97.3

проблемы обычно заключаются в том, чтобы не скатиться к структурному программированию ;)

а решения я вижу в использовании шаблонов проектированя (design patterns)

поэтому в этой теме будем обсуждать шаблоны ;)

(в приложенном файле книга GoF, список скорее всего будет пополняться)




Gamma, Helm, Johnson, Vlissides - Design Patterns
design_patterns.zip - 2.01 Mб
Скачиваний: 42

В начало
Профиль : Личное Сообщение
chaser
Сообщение  14 Мар 2007, 12:43  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской 
C нами с 04.02.2005
Репутация: 121.3

Как-то я скептически отношусь к таким книгам. По-моему, под этими шаблонами проектирования пытаются подать и так вполне очевидные вещи, которые просто приходят с опытом и не нуждаются в таком размусоливании и классификации.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID
Рыся
Сообщение  14 Мар 2007, 16:49  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 15.04.2005
Репутация: 133.2

Проблемы, обычно, заключаются в создании правильно работающего и легко сопровождаемого кода. Паттерны проектирования (обычно используют именно это слово, чтобы не пересекалось с переводом на русский концепции template языка C++) так или иначе используются всеми (независимо от парадигмы, будь то ООП или структурное программирование), другой вопрос — степень осознанности и целесообразности использования. Книга "большой четвёрки" несомненно полезна и интересна, из разряда must read/must have, но достаточно академична.

_____________________________
Время не существует, у него нет физического носителя в природе. Его выдумал человек, чтобы измерять скорость.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail : JabberID
MajorQ
Сообщение  14 Мар 2007, 16:57  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.06.2005
Репутация: 548.8

Классифицировать паттерны смысл есть: хотя бы для того, чтобы упростить документирование кода, зачастую достаточно упомянуть название паттерна и какой класс в какой роли выступает вместо подробного описания всего взаимодействия. Книга GoF, это только введение в паттерны, а не их каталог, существует масса распространненых паттернов, не включенных в эту книгу.

PS: а тему стоит переименовать ИМХО, паттерны - это не программирование, а проектирование! Программирование - это процесс их реализации...
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : Сайт
Petro
Сообщение  18 Мар 2007, 19:42  Ссылка : Ответить с цитатой
Возраст: 39 Пол: Мужской 
C нами с 04.05.2006
Репутация: 63.9

Объясните плз в двух словах, что подразумевается под этим красивым названием Disign Patterns? Последнее время все чаще и чаще встречаю это словосочетание, но сути понять не могу... Улыбочка

Пролистав книжку, мне показалось, что это обычные диаграммы классов (Class Diagram) в нотации UML. Или я чето недопонимаю?
В начало
Профиль : Фотоальбом : Личное Сообщение : Сайт : ICQ
MajorQ
Сообщение  18 Мар 2007, 19:52  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.06.2005
Репутация: 548.8

Это не просто диаграммы, это типовые решения. Диаграммы UML - это просто способ их отображения на бумаге вне зависимости от языка программирования. Кстати, там не только диагрммы классов, но и диаграммы взаимодействия (sequence diagrams) должны быть...
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : Сайт
Petro
Сообщение  18 Мар 2007, 20:08  Ссылка : Ответить с цитатой
Возраст: 39 Пол: Мужской 
C нами с 04.05.2006
Репутация: 63.9

MajorQ писал(а):
Кстати, там не только диагрммы классов, но и диаграммы взаимодействия (sequence diagrams) должны быть...

Т.е. на сколько я понимаю design patterns это UML диаграмма классов реализованная в коде, или как? А по поводу взаимиодействия на диаграмме классов оно как раз и показывается... наследование и агрегация итп...
В начало
Профиль : Фотоальбом : Личное Сообщение : Сайт : ICQ
Griphon
Сообщение  18 Мар 2007, 21:50  Ссылка : Ответить с цитатой
Возраст: 51 Пол: Мужской 
C нами с 01.03.2005
Репутация: 226.6

Petro, это решение типовых архитектурных проблем.
С проработкой проблем и сложностей - то есть, чем изобретать велосипед и набивать шишки на собственных ошибках, лучше сразу использовать проработанные решения. С UML это мало связано, просто некоторые источники предпочитают демонстрировать design patterns в виде UML-диаграм, но это только средство представления.
В начало
Профиль : Личное Сообщение
MajorQ
Сообщение  18 Мар 2007, 22:46  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.06.2005
Репутация: 548.8

Petro, а последовательность передачи сообщений как на диаграмме классов отобразить? Только Sequence или Colaboration диаграммы! Паттерн - это сама идея, он не зависит от языка. Лишь бы язык был ОО. UML-диаграммы это только способ отображения паттерна на бумаге/экране.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : Сайт
Petro
Сообщение  18 Мар 2007, 22:46  Ссылка : Ответить с цитатой
Возраст: 39 Пол: Мужской 
C нами с 04.05.2006
Репутация: 63.9

Griphon, а чем по сути являются патерны? Шаблонами классов и связей между ними, описанными сигнатурами заголовков классов и методов, но без реализации?

Добавлено спустя 14 минут 45 секунд:

MajorQ, ну по сути под передачей сообщения в самой концепции ООП является вызов метода, разве не так?
В начало
Профиль : Фотоальбом : Личное Сообщение : Сайт : ICQ
MajorQ
Сообщение  18 Мар 2007, 23:30  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.06.2005
Репутация: 548.8

Petro, так...
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : Сайт
Petro
Сообщение  20 Мар 2007, 20:55  Ссылка : Ответить с цитатой
Возраст: 39 Пол: Мужской 
C нами с 04.05.2006
Репутация: 63.9

Татиана, это же гораздо интереснее! Улыбочка
Кстати к теме не мешало бы вернуться... Есть о чем поговорить, причем говорить можно до бесконечности! )))

Вопрос таков... А для чего нужен ООП, и нужен ли он вообще? Сарказм
В начало
Профиль : Фотоальбом : Личное Сообщение : Сайт : ICQ
Madlax
Сообщение  02 Апр 2007, 23:02  Ссылка : Ответить с цитатой
 
C нами с 25.01.2005
Репутация: 97.3

парадокс ООП

есть фрукты: яблоки, груши и апельсины
есть корзинка, в которой хранятся фрукты
после того, как в корзинку сложены разные фрукты, из нее невозможно достать одни только яблоки ;)

то есть в идеальной ООП клиент видит все объекты в корзинке как фрукты и не может отлечить яблоки от груш ;)

кто знает, как решается?
В начало
Профиль : Личное Сообщение
Griphon
Сообщение  02 Апр 2007, 23:38  Ссылка : Ответить с цитатой
Возраст: 51 Пол: Мужской 
C нами с 01.03.2005
Репутация: 226.6

Madlax, а если без аналогий и иносказаний. Что ты имеешь в виду?

Добавлено спустя 33 секунды:

ЗЫ
Может паттерн Visitor?
В начало
Профиль : Личное Сообщение
MajorQ
Сообщение  03 Апр 2007, 0:16  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.06.2005
Репутация: 548.8

Madlax, типичный контейнер, содержащий объекты, имеющие общего предка. Следовательно, объекты реализуют общий интерфейс фрукт. Зачем тогда их отличать? Либо используй общие методы этого интерфейса (отжать_сок, нарезать_кусочками, очистить_от_кожуры; но не расколоть_скорлупу, ибо это метод для интерфейса орех), либо не складывай в общий контейнер, если уж надо строго разделять. Это не парадокс ООП, это плохая архитектура, неумелое применение концепции ООП.
Есть еще фейк-метод (фейк - потому как он ИМХО "закрывает" иерархию, ограничив количество возможных наследников): использовать виртуальные методы типа bool isApple(), bool isOrange() и т.д. для каждого фрукта. В классе Apple первый будет возвращать true, остальные - false. В Orange, соответсвенно, первый вернет false, второй - true. Но повторюсь, такой метод требует на этапе проектирования базового интерфейса знаний о всех возможных реализациях оного, что не есть гуд...
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : Сайт
Показать сообщения:   
На страницу 1, 2, 3  »

Unsorted   ~  Software  ~  Development and Design  ~  Объектно-ориентированное программирование

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты