![]() |
Модераторы: Се ля ви |
![]() ![]() ![]() |
|
Joil |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: нет Всего: 8 |
Все доброго утра\дня\вечера\ночи!
Не уверен что пишу в правильной ветке.... Появился такой вопрос. Есть ли в ООП (думаю что есть, но быстрый поиск в гугле и на сайте ничего не дал) принципы (а точнее правила, инструкции или что либо еще) выделения сущностный\классов. Т. е. нужно нам допустим написать программу, анализируем, выделяем сущности (как в БД), создаем классы (пишем внутренности) и все... Как то все это пока делается интуитивно. Может кто подскажет как это делать более менее по правилам? --------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
|||
|
||||
levkunchik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 24.8.2010 Репутация: нет Всего: нет |
ничего не понял :(
|
|||
|
||||
neic |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: нет Всего: 7 |
Почитайте про диаграммы классов в нотации UML.
Т.е. делаете диаграмму классов, из нее генерируете код в ЯП, там разрабатываете внутренности. |
|||
|
||||
Joil |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: нет Всего: 8 |
Не, UML я знаю... я говорю не о способе представления классов и их методов в виде прямоугольничков связанных. А о логике выделения этих прямоугольничков (читай классов)... Т. е. как мы делаем в БД. Допустим нам нужно БД для вокзала(продажа билетов), мы сидим и как то интуитивно или по правилам выделяем сущности. Например (пассажир, билет, место, номер поезда и т. д.). Этим сущностям потом в соответствие создадим таблицы, связанные между собой... И у нас будет БД. Так вот, эти самые сущности, мы выделяем по какой то логике, по каким то принципам, может быть правилам. В ООП классы мы тоже как то выделяем. Ну и собственно вопрос: есть ли какие нибудь правила которые позволят выделять классы наиболее правильно? Ведь можно в большом проекте вместо 30 нужных классов (для более гибкой и удобной разработки и поддержки) выделить 5 и написать ###код, где одно с другим вяжется через ж... --------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
|||
|
||||
ValeryLaptev |
|
|||
Препод Профиль Группа: Участник Сообщений: 41 Регистрация: 19.8.2010 Где: Астрахань Репутация: нет Всего: 1 |
Нету правил пока. Можно почитать у Гради Буча. Но все книжки пока только рекомендуют. Никаких правил не выработали - это чисто творческая часть проекта. И только от опыта зависит, удачно получится или нет.
Есть книжка Кента Бека "Разработка через тестирование" - там ход мыслей Бека расписан. Тоже на эту же тему - очень интересно почитать. |
|||
|
||||
Joil |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: нет Всего: 8 |
Да, это плохо, так как по правилам опыт набирается куда быстрее чем интуитивно. ИМХО. А что значит "пока", просто к слову или Вы уверены в том, что когда то это направление перейдет из области творчества в область следования правилам?
Нужно на днях поискать и гляну! Я так понимаю У Гради Буча какие то общие рекомендации по проектированию(наверное вот в этой книге: Объектно-ориентированный анализ и проектирование)?
Это когда сначала пишут тесты для программы а потом саму программу удовлетворяющую этим тестам? ![]() Спасибо за рекомендации. Но вопрос не закрывается. Предлагаю людям делиться кое-какими мыслями на этот счет, в этой теме. Понимаю конечно что процесс выделения сущностей сформулировать трудно, но все таки, может у кого то есть какие нибудь профессиональные взгляды\методы\мысли\уловки\фичи на этот счет. ![]() Хотел бы еще услышать мнение, очень уважаемого мной, отличного аналитика и здешнего модератора Се ля ви! ![]() Это сообщение отредактировал(а) Joil - 25.8.2010, 12:41 --------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
||||
|
|||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Joil, я думаю что тебе нужно смотреть с сторону Domain-Driven Design. pdf
|
|||
|
||||
ida |
|
||||
![]() замужем ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2277 Регистрация: 14.5.2002 Где: Санкт-Петербург Репутация: 6 Всего: 58 |
В ООП нет, а в ООА (анализ) есть. Т.к. анализ проводится перед проектированием, то вы пользуетесь его результатами в дальнейшем. В основном эти правила формулируются настолько абстрактным языком, что проще объяснить на примере. Одна и та же сущность может быть как классом, так и атрибутом или состоянием - в зависимости от решаемой задачи. А от этого зависит, как проектировать модель, и БД в том числе. Если вы автоматизируете пассажирские перевозки для вашего вокзала, это будет одна схема, если управление подвижным составом - другая, если контроль персонала - третья.
Слава здесь далеко не единственный отличный аналитик ![]() Да и появляется редко в последнее время. Это сообщение отредактировал(а) ida - 27.8.2010, 11:53 |
||||
|
|||||
Joil |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: нет Всего: 8 |
powerOn, спасибо, взгляну! Даже не слышал об этом, хотя может и слышал но не знал что это оно ![]() За это спасибо, тоже буду изучать... Ох... жалко что времени в сутках так мало... да и вообще его мало... Хех... я такого и не говорил ![]() --------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
|||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: нет Всего: 15 |
Как это нет??? По крайней мере 3 метода есть.(читайте Буча, Рамбо внимательнее). 1. Метод "Существительное - глагол" 2. Метод "Карт обязанностей" 3. Метод "OOA RUP". Собственно в этом методе, акцентируется внимание на три класса объектов; Boundary classes, Control classes, entity classes |
|||
|
||||
Ake1a |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
Во-во.
1. Лексический анализ. Подлежащее- сущность/аттрибут и сказуемое - связь/метод 2. Исследование рабочих моделей того-же business domain 3. Ещё чего-то, чего на вскидку не помню, но технология вполне топтаная ![]() |
|||
|
||||
YankovskyAndrey |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 23.10.2008 Где: СПБ Репутация: нет Всего: нет |
Гради Буч не очень(в плане книги). Он такой философ от программирования, постоянно цитирует Страуструпа и прочих. Много воды. Океан.
В его книжке интересна вторая часть(примерно четверть от целого), где он разбирает примеры. Тут тебе и анализ требований и создание дизайна(с диаграммами и блекджеком) и что-то от реализации. Это нужно. Смело можно читать только вторую часть. И лучше на английском, помнится разница была между изданиями. Смотрю в сторону Кента Бека. //Оффтоп Никто не подскажет, где лучше покупать книжки на английском? Или может тему на форуме, не могу конкретных советов найти. |
|||
|
||||
Askofen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.4.2009 Репутация: нет Всего: нет |
Не уверен, что в ООП есть такие принципы/правила. Но мой опыт проектирования показывает, что в основу класса всегда нужно класть какие-то обязанности (функции). Не должно быть бесполезных классов, классов, которые ничего не делают и ни за что не отвечают. Если Вам интересен какой-либо практический пример, то можете посмотреть статьи на эту тему у меня в блоге: Проектирование классов для графического редактора Задача про датчики: Проектирование классов. Часть 1. Задача про датчики: проектирование классов. Часть 2. |
|||
|
||||
RockClimber |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: нет Всего: 15 |
Принципы и правила есть. Но два разных человека, применяя эти правила, могут придти к разным результатам. И нет никакой формулы, по которой можно однозначно рассчитать, что это решение лучше, а это - хуже. И эти формулы никогда не появятся. -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Системный анализ, проектирование и UML" | |
|
Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем: • предпроектные обследования объектов автоматизации; • разработка концепции создания систем; • моделирование бизнес-процессов (в т.ч. на UML); • проектирование архитектуры систем; • управление проектами; • управление качеством; • CASE-средства; • реинжиниринг. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |