![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
FurryFreeman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Где можно на русском и доходчиво почитать про сабж?
Так сказать, шаблоны для чайников. ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Если про паттерны то, имхо, лучшая это книга "банды четырех"
GoF Если шаблоны C++ то Влиссидис и Джоссатис - "Шаблоны C++. Справочник разработчика" (но книга не для чайников) Это сообщение отредактировал(а) MAKCim - 29.5.2006, 21:11 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
FurryFreeman, а поискать? Я про четыре книги расписывал в каком порядке их читать нужно. GOF - яно не лучшая для начала
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
зато почти что классика и вообще, что значит для начала? Человек вообще не знаком с ООП? Тогда ему про паттерны вообще читать пока не надо. А если знаком, то все термины этой книги будут понятны (интерфейс, реализация, инстанцирование, объект, ...) и читать ее будет, имхо, не так уж и сложно. Зато там изложено все четко, лаконично, с примерами реальных приложений и т. д -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
MAKCim, по GOF я не смог разобратся с паттерном "Мост". Эта книга неплоха в качестве справочника
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
тут согласен, причем справочник хороший, в котором быстро можно найти нужную инфу. Важно в общих чертах быть в курсе всего что там написано, чтобы в реальных задачах в принципе представлять, какой метод использовать, а уже реализацию, особенности всегда можно посмотреть в книге.
В чем именно? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
BreakPointMAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
FurryFreeman, прочитай эту тему от начала до конца: Паттерны проектирования, (книги, ресурсы, библиотеки)
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
FurryFreeman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Всем спасибо, буду прокуривать.
![]() |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Что означает в нем "отделение интерфеса от реализации" и т.д. Очень "сумбурно" написано. P.S. Ссылку выдал хорошую -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Отделение интерфейса от реализации означает, что иерархия интерфейса строится "параллельно" иерархии реализации. Цель - дать возможность обеим иерархиям изменяться независимо, без взрывного роста количества классов, которое получилось бы при простом наследовании. В данном случае под реализацией подразумевается не полная реализация интерфейса, а какой-либо его части (которых может быть не одна).
Не буду нарушать традицию и приведу пример иерархии графических фигур. Базовый класс IShape, производные классы IPoint, ICircle, IRect, etc... Обычно приводится пример реализации рисования, который может быть реализован с помощью разных библиотек, которые нужно уметь переключать... Но я приведу другой пример: способы хранения объектов в памяти. Проще всего представить себе контейнер умных указателей на базовый класс IShape. Но если объектов тыщи и мильоны, как-то начинает душить жаба... Даже загрузить все это счастье из файла - уже проблема (пока насоздаешь столько динамических объектов...). Тем более, когда понимаешь, что в динамическом виде эти объекты нафиг не нужны сразу все - реально-то пользователь интерактивной программы работает с несколькими. И за сеанс работы все тыщи явно не окучит. Но некоторые функции от всех объектов все же требуются: скажем, уметь рисоваться и отвечать на какие-нибудь запросы, не изменяющие их состояния. Отсюда приходим к идее: реализуем-ка объекты двумя способами: облегченная реализация, выполняющая только read-only запросы, и полная реализация. Облегченная реализация может быть сделана в виде оболочки над упакованной структурой, прочитанной из файла "большим куском" (т.е. не нуждающейся в конструкторе). А для полной потребуется честный динамический объект. Если мы попробуем унаследовать обе реализации от наследников IShape, что кажется естественным... (не знаю, мне так не кажется, но в книгах пишут, что должно... ![]() -------------------- ... |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
исчерпывающий ответ
![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Спасибо, MAKCim, за +. Сама горжусь.
![]() Тем более учитывая, что когда то, что описано в примере, проектировалось, я еще книгу про паттерны не читала. И испытывала некоторые сомнения: дескать, во накручено. Но книга банды четырех все разложила по полочкам: и название этому, оказывается, есть, и еще покруче навороты встречаются. И вообще, любую проблему дизайна можно решить добавлением одной или нескольких прокладок... Короче, к чему это я: паттерны проектирования начинаешь понимать и оценивать по заслугам только тогда, когда реально столкнешься с проблемами, которые они решают... Т.е., если кто не чувствует позвоночником, какая это ВЕЩЬ, не расстраивайтесь, просто примите к сведению. Даже применять не надо, если что-то кажется излишне навернутым. Но придет время, и вы наверняка столкнетесь с проблемой, не решаемой с помощью if-else... И вот тогда придет время паттернов... -------------------- ... |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Earnest, спасибо, мне это уже бъяснять не надо.
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
А можно поподробней и с рисунками? Уж очень интересно! --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Куда уж подробнее ![]() Читай GoF -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Паттерн вкусный, но адекватного примера применения видеть не приходилось... Самому, в ситуациях, где он по логике вещей должен был применяться, применить корректно не получалось, приходилось делать по-другому... По этому мне интересен пример реальной задачи, решаемой с применением этого паттерна, а также способ ( реализация? ) применения этого паттерна в этой задаче.
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Говорю же - читай GoF, там и примеры реальных приложений есть
благо даже в нете книжку можно найти -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Да читал я, и в бумажном под рукой есть, токо там пример зело убогий, а приведенные примеры использования - до фига сложные для грепанья сорцов и фтыкания. А вот приведенный выше пример - вполне перевариваем, только вот по описанию в посте его понять сложно... --------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
zabivator, ну извини, подробнее не могу, и код выкладывать тоже нельзя, ибо коммерческое приложение.
-------------------- ... |
|||
|
||||
zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Earnest, жаль...
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |