2010-09-25 1 views
1

Какие шаги вы выполняете при приближении к описанию проблемы, который необходимо преобразовать в проект OO. Я знаю, что подход может быть субъективным в зависимости от проблемы и варьироваться для каждого, но я уверен, что должны быть какие-то базовые общие шаги, которые последует каждому хорошему дизайнеру, нарушая приведение проблемы к объектам и классам и далее к значительному конкретному дизайн. Просто пытаясь положить вверх, давайте скажем, что процедура для нового дизайнера пчел wannabe похожа на меня.Шаги, которые нужно выполнить при попытке создания OO-запроса проблемы

ответ

2

Я предлагаю следующие шаги. 1. Напишите случай использования. Это поможет вам понять проблему, она должна содержать базовый поток выполнения (правильный путь) и альтернативные пути. 2. Сделайте лингвистический анализ и узнайте класс и методы. (Это необязательно, если вы знаете какой-либо другой хороший метод, а затем используйте его.) 3. Используйте SOLID для разработки классов. 4. Сохраняйте инкапсуляцию, наследование, полиморфизм. Если вы не можете их запомнить, напишите на бумаге или положите на стол. 5. Еще одна вещь, которую вы должны иметь в виду: «Что меняет инкапсуляцию». 6. Используйте шаблоны проектирования, когда они требуются. Не применяйте шаблон дизайна к вашему коду. Попытайтесь сопоставить свою проблему дизайна с любым шаблоном проектирования.

Я также предлагаю книгу «Head First OOAD». Это очень хорошая книга для опираясь на OOAD.

+0

Это хороший список, для начала. Это тот ответ, который я искал. Просто началось с Head First OOAD & Head First Design Patterns и нахожу его очень самолюбивым. Благодаря! –

1

Одним из важных шагов во время проектирования ОО является «принцип единой ответственности». Это довольно большая основа для хорошего дизайна. Компонент http в вашем дизайне будет использовать http-связь для получения заданий, но определенно не сможет обработать эти задания. Процессор рабочих мест должен быть независимым. Оба этих (http и job processor) имеют свою единственную ответственность, назначенную им. Это более общий вид, и внутри ваших компонентов вы создадите дополнительные классы, которые следуют этому принципу.

1

Я рекомендую бесплатную онлайн-книгу http://my.safaribooksonline.com/0131489062/ch01. В нем представлены некоторые архитектурные концепции, а также UML. UML - это инструмент диаграммы для составления схемы и особенно полезен для планирования больших проектов, прежде чем садиться и кодировать их.

1

Я бы не был доволен этим ответом, когда я начинал, но ... он требует много исследований и практики, прежде чем станет второй натурой. Лучший совет, который я могу дать, - изучить проекты у людей, которых вы уважаете, прочитать хорошие книги (шаблоны проектирования GOF - это хорошее место для начала), и попросите опытных людей разобрать ваши проекты.

Узнайте о таких вещах, как принцип единственной ответственности, но вам также нужно будет почувствовать, «что такое правильный размер», или что-то сверх-инженерное. Это в конечном итоге будет зависеть от требований.

1

при чтении проблемы держите список существительных, поскольку они могут стать классами, а глаголы могут стать методами. после этого, повторите их и подтвердите.

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

не забудьте также прочитать об архитектурных узорах.

0

Понимание требований в более широкой перспективе очень важно для разработки чего-то, что выжить в течение длительного времени. Понимание того, что касается домена, бизнеса, потребностей пользователей, ожиданий клиентов, определения невыразимых деталей, также имеет большое значение при разработке программного обеспечения.Может быть N количество вещей, которые влияют на дизайн, такие как частота использования, время использования, сложность рабочего потока, приоритет пользователей, ограничения системы, ресурсы, навыки разработчика, время, бюджет и многое другое. Вы должны иметь возможность визуализировать большую картину проблемы для решения или требования. Этот анализ должен привести к определению того, что является постоянным в системе, и что может измениться в будущем. Дизайн должен абстрагировать часть, которая может измениться. Новое требование не должно приводить к реорганизации. Divide и rule - формулы, упрощающие сложность. Создавайте специальные, специальные пакеты или модули. Определите отношения между ними. Определите важные варианты использования и попытайтесь представить себе, как ваш дизайн будет обрабатывать или удовлетворять прецедентам. Сделайте детальный дизайн с классами, типами, интерфейсами. Следуйте соответствующим шаблонам проектирования по мере необходимости. Не забывайте о принципах SOLID. Возможность тестирования, расширяемость, ремонтопригодность, сложность - это вещи, которые необходимо учитывать вначале. Вам нужно нечто большее, чем умение. Таким образом, некоторые люди считают это искусством. Дизайн не может быть идеальным. Ошибайтесь, учитесь у них, не повторяйте. То, как это для меня. Мой ответ может быть неточным для рассматриваемого вопроса, но, надеюсь, он будет полезен.

Смежные вопросы