imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 03.02.2008, 18:26     # 1
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Дизайн классов

Не могли бы опытные программеры (ака "архитекторы") посоветовать общий подход и программы для создания небольшого проекта? Просьба об'яснять подробно, для не-программиста.
Имеется в виду создание общей архитектуры проекта, связь между классами и их наследниками, описание необходимых параметров классов.
Желательно также прога для визуального представления всех этих странных отношений.

У меня есть подозрение что меня отправят на UML, поэтому заранее предупреждаю - не ругаться непонятными словами.
спасибо заранее
crawler вне форума  
Старый 03.02.2008, 19:05     # 2
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
Например так:
Для начала определяется специфика самого проекта, потом проект "разбивается" на составляющие: функционал, GUI. Каджая из частей также разбивается на отдельные, по возможности независимые элементы, с определением способов взимодействия между элементами системы. На основе этого вырабатывется некая модель системы (в простом случае отдельного приложения, в более сложном совокупность приложений). При детальном рассмотрении выявляются элементы, которые могут быть унифицированы и т.п. И на основе всех этих знаний выстаривается примерная иерархия классов проекта.

Простой пример - аудиоплеер:
Функционал: чтение аудио-файлов различных форматов и проигрывание их, ведение плейлистов и т.п..
GUI: Отображение списка проигрываемых файлов, управление процессом проигрывания и т.п.
Примерные классы:
Класс самого приложения;
класс отображения плейлиста;
класс оттображения состояния плеера;
класс движка плеера (то что непосредственно воспроизводит);
набор кодеков для различных форматов - при этом с учетом что фунции работы с разными форматами различаются по реализации, а для движка выглядят одинаково, то кодеки представляют из себя иерархию классов, например с одним базовым и несколькими наследниками, непосредственно отвечающими за реализацию каждого отдельного кодека;
класс управления плейлистами (как сущностями);
класс отдельно взятого плейлиста;
и так далее.

Немного непрофессионально может быть я излагаю, но я просто не хочу вдаваться в технические детали.
А UML - это всего лишь описание и визуализация системы для более наглядного представления как всей системы так и отдельно взятых ее частей. Так что почитать про него советую, как правило где-то рядом встречаются и описания процесса разработки и описания проектов.
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума  
Старый 03.02.2008, 19:41     # 3
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 518

Borland - Гад и сволочь
"Перескажите мне Библию в двух словах, только чтоб доходчиво"...
Проектирование ПО - институтский курс, причём, как правило, рассчитанный не на один семестр. Коротко и доходчиво объяснить такую обширную дисциплину, ИМХО, невозможно в принципе. Особенно человеку, который не имеет соответствующей базовой подготовки...
Если есть желание заняться изучением - начать рекомендую с _http://rsdn.ru/?summary/3387.xml и приобретения книги _http://rsdn.ru/res/book/prog/oomethods.xml
А ещё -
Код:
http://www.google.com/custom?hl=en&lr=&ie=utf-8&oe=utf-8&client=pub-2698861478625135&cof=FORID%3A1%3BGL%3A1%3BLBGC%3A336699%3BLC%3A%230000ff%3BVLC%3A%23663399%3BGFNT%3A%230000ff%3BGIMP%3A%230000ff%3BDIV%3A%23336699%3B&q=%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5+%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be+%d0%be%d0%b1%d0%b5%d1%81%d0%bf%d0%b5%d1%87%d0%b5%d0%bd%d0%b8%d1%8f
PSyton
Замечательно, но малоинформативно... Как я и сказал выше - дисциплина слишком обширна.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 03.02.2008, 22:02     # 4
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Сорри, я не имел в виду совсе с нуля. Я довольно давно пишу код, и имею неплохую базу, но по формальному образованию - не программер, поэтому когда говорят сокращениями - не понимаю.
Я ищу какой-то инструмент, чтобы облегчить проектирование. То есть я примерно знаю какие у меня класссы, какие в них методы. Но держать в голове отношения 10-20 классов мне тяжело. Я хотел узнать как мне облегчить себе работу (общий подход), и конкретно есть ли проги (желательно фриварные) которые помогут мне нарисовать диаграмму классов, и отношений между ними. Как передаются данные, в какой последовательности . Чтоб и самому понятно было, и другим мог бы об'яснить.
crawler вне форума  
Старый 03.02.2008, 23:31     # 5
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 518

Borland - Гад и сволочь
_http://en.wikipedia.org/wiki/List_of_UML_tools
Но UML изучать придётся по-любому...
_http://www.uml.org/

P.S. Вообще говоря, проектирование ПО и его реализация в коде - несколько разные отрасли программирования...
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 04.02.2008, 11:31     # 6
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Все же UML -это только средство, меня больше интересует методология. Мне неохота изобретать велосипед (придумывать КАК лучше проектировать)

То есть используя пример PSyton у меня есть "примерный" список классов, но я не до конца представляю как они взаимодействуют.
crawler вне форума  
Старый 04.02.2008, 12:16     # 7
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 518

Borland - Гад и сволочь
Цитата:
Сообщение от crawler Посмотреть сообщение
меня больше интересует методология
Уже писал:
Цитата:
Сообщение от Borland Посмотреть сообщение
начать рекомендую с _http://rsdn.ru/?summary/3387.xml и приобретения книги _http://rsdn.ru/res/book/prog/oomethods.xml
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 04.02.2008, 14:52     # 8
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от crawler Посмотреть сообщение
нарисовать диаграмму классов, и отношений между ними
Цитата:
Сообщение от crawler Посмотреть сообщение
Все же UML -это только средство, меня больше интересует методология
Ты один раз определись.
EvroStandart вне форума  
Старый 04.02.2008, 15:39     # 9
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
EvroStandart,
1) как
2) чем

Причем "чем" - явно вторично. Рисовать то я могу и на бумажке. Интересует именно подход к дизайну. Наплодить кучу классов и заставить это как-то работать - это не так уж и сложно.
crawler вне форума  
Старый 04.02.2008, 18:42     # 10
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Подход к дизайну зависит от конкретной задачи. Рассыльщика майлов можно одним большим классом оформить. А чтото очень навороченное можно делать через шаблоны.

шаблоны
EvroStandart вне форума  
Старый 05.02.2008, 01:34     # 11
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Подход не должен зависить от задачи. От задачи зависит выбор решения. Шаблонные методы (design patterns)- лишь набор методов, помогающих с'экономить время.

Цитата:
Рассыльщика майлов можно одним большим классом оформить
Можно, если не собираешься ничего менять в дальнейшем.
Как я уже говорил, наплодить гору кода, и заставить его как-то работать - не особо сложная задача, и любая команда с этим справляется через некоторое время. Вопрос был как не совершать лишних телодвижений, а потратить некоторое время на предварительную подготовку, и с'экономить в дальнейшем на переписи кода.

В общем я уже понял в каком направлении копать, Borland - книга действительно отличная (я пока только просмотрел содержание, если у кого завалялась дигитальная копия (можно инглиш) - буду безмерно благодарен)

Последний раз редактировалось crawler; 05.02.2008 в 01:39.
crawler вне форума  
Старый 05.02.2008, 11:55     # 12
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от crawler Посмотреть сообщение
Подход не должен зависить от задачи. От задачи зависит выбор решения.
Чем так сильно отличается подход к дизайну (структура классов) от выбора решения?
Просвяти меня безграмотного.


Цитата:
Сообщение от crawler Посмотреть сообщение
Можно, если не собираешься ничего менять в дальнейшем.
Сделаю клас на 2000 строк кода и буду легко и успешно оформлять регулярные изменения. Уже делал и оформлял.
EvroStandart вне форума  
Старый 05.02.2008, 12:52     # 13
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Подход - это не структура классов. Подход - это как найти наилучшую структуру. Например в каких случаях выбрать Визитера или Стратегию. Почему и когда лучше использовать темплейты. Какой паттерн выбрать и почему.

На этом бесполезную полемику предлагаю закончить. Я может и не прав, но для этого я и поднял тему. Если хочешь добавить чего конкретного - велкам, если нет - то предлагаю тему считать закрытой.
crawler вне форума  
Старый 05.02.2008, 21:26     # 14
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
"наилучшей" не существует по определению - ибо нет предела совершенству

по существу - в любом проекте выделяются сущности (ака объекты класса), что эти сущности могут делать (ака методы класса)

затем идем вниз - ищем общие свойства объектов, сносим их на уровень иерархии ниже, оставляя на текущем слое лишь различия

так до тех пор, пока не дойдем до элементарщины

какую "визуальную" среду применять - да любую, в которой удобно работать - от UML до Notepad.

главное, чтоб было понятно и удобно
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 08.02.2008, 11:52     # 15
Voland25
Junior Member
 
Регистрация: 28.11.2003
Адрес: Израиль
Пол: Male
Сообщения: 67

Voland25 МолодецVoland25 МолодецVoland25 Молодец
Позволю себе посоветовать...

Фундаментальный труд - Гради Буч - Объектно-ориентированный анализ и проектирование.

Для меня эта книга открыла глаза полностью... дальнейшее - уже вариации.
__________________
"Inter arma leges silent" - "молчат законы при звоне оружия"
Voland25 вне форума  
Старый 09.02.2008, 11:40     # 16
Voland25
Junior Member
 
Регистрация: 28.11.2003
Адрес: Израиль
Пол: Male
Сообщения: 67

Voland25 МолодецVoland25 МолодецVoland25 Молодец
кстати, по поводу ругани непонятными словами... Без того, чтобы до упора разбираться в объектно-ориентированном программировании, ты так или иначе не осилишь архитектуру. Причина проста - ты досконально должен понимать всю логику полиморфизма, абстракции, виртуализации и прочих нюансов... Тогда вдруг все отношения между классами, типа "IS A", "CONTAINS", "USES" и прочие просто сами по себе выстраиваются в четкую картину.

УМЛ - на самом-то деле, под собой имеет всего лишь логику определения "актеров" и "действий" в системе, и их влияния на систему/взаимодействия между собой. И тут уже вступает в дело сам анализ.. Тот же аудио плэер - кто является актерами ? Определение актера - это сущность, способная к интеракции с системой, т.е. способная использовать систему каким-либо образом.
Т.е. в нашем случае актером является прежде всего юзер , верно ? Теперь смотрим, чего ж должен уметь этот актер. Прежде всего - составлять списки треков. Классно! Только что ж такое список треков ? Это лист! Лист чего? Лист треков.. Что имеем как сущность листа ? Трек. значит вот у нас уже связь образовалась: Юзер может составить список треков, т.е. использовать объект управления листами треков, который работает с объектом списка треков, который в свою очередь состоит из набора объектов треков. Мы определили взаимодействие как минимум 3-х классов в системе. И так делается полный анализ требований к системе, и их "перевод" в отношения между различными объектами в системе.

Да, кстати .. первая и самая банальная ошибка начинающих - совсем необязательно, чтобы абсолютно все классы в системе были связаны. Это скорее исключение, чем правило.. В реальном мире таких связей фактически нет. Ну, представим, например, объект автомашины, сидящий в иерархии "средство передвижения"->"моторное средство передвижения"->"Автомашина", и объект "голубь", находящийся в иерархии "животные"->"птицы"->"голубь". В нормальной ситуации эти две сущности никакого отношения не имеют. Однако если этот голубь решит обделать эту автомашину, отношение возникает, и оно не тривиально - т.е. не является подвидом "IS A" или "CONSISTS OF". Тогда появляется надобность уже в некоей сущности, управляющей этим отношением. Из примера ясно, что если требования взаимодействия двух сущностей в системе нет, то и связи, само собой, между ними не будет.

Вот это, как говорится, на пальцах - самое начало объектно-ориентированного анализа... Из этого уже строится архитектура. И, как я и сказал, прежде всего - матчасть. Без крепкой теоретической базы ООД (объектно-ориентированный дизайн) не осилить. Это мое мнение.

З.Ы. Гради Буч в дигитальном варианте у меня есть. Скину без проблем, если кому надо.
__________________
"Inter arma leges silent" - "молчат законы при звоне оружия"

Последний раз редактировалось Voland25; 09.02.2008 в 11:52.
Voland25 вне форума  
Старый 09.02.2008, 12:12     # 17
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Гради Буч в оригинале есть на АваксХоум . Не реклама .

Цитата:
по поводу ругани непонятными словами
очень часто (а по опыту - всегда) когда общаются представители одной профессии, они очень быстро переходят на профессиональный сленг. Который для окружающих просто сотрясение воздуха. А когда просишь "сформулируй для идиота", люди начинают яснее выражать свои мысли, ведь вместо устоявшихся выражений необходимо об'яснять каждое понятие по отдельности.
crawler вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 05:41.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.