ООП - Как выбрать возможный объект-кандидат? - PullRequest
2 голосов
/ 02 декабря 2009

Я беспокоюсь о том, какие методы я должен использовать, чтобы выбрать правильный объект в ООП

Есть ли какая-нибудь обязательная для чтения книга о ООП с точки зрения выбора объектов?

Best

Ответы [ 5 ]

5 голосов
/ 02 декабря 2009

Просто напишите что-нибудь, что выполнит работу, даже если это уродливо, а затем непрерывно выполняйте рефакторинг:

Но:

Это не точный рецепт, просто некоторые общие рекомендации. Продолжайте практиковать.

приписка

Объекты кода не связаны с материальными реальными объектами; это просто конструкции, которые содержат связанную информацию вместе.

Не верьте тому, чему учат в книгах / школах Java об объектах; они лгут.

2 голосов
/ 02 декабря 2009

Вы, вероятно, имеете в виду «правильный класс», а не «правильный объект».: -)

Существует несколько техник, таких как анализ текста (он же подчеркивает существительные) и Сотрудник по ответственности классов (CRC) .

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

Для CRC ознакомьтесь с Википедией .

Я предлагаю OPEN Toolbox of Techniques для полного ознакомления.

Надеюсь, это поможет.

0 голосов
/ 02 декабря 2009

Я добавляю второй ответ из-за комментария демиана:

Иногда класс настолько очевиден потому что это ощутимо, но в других случаях понятие объекта это абстракция как дб разъем.

Это правда. Мой предпочтительный подход заключается в проведении поведенческого анализа системы (например, с использованием сценариев использования) и последующем выводе системных операций. Если у вас есть стабильный список системных операций (таких как PrintDocument, SaveDocument, SpellCheck, MergeMail и т. Д. Для текстового процессора), вам необходимо назначить каждую из них классу. Если вы разработали список классов-кандидатов с некоторыми из методов, которые я упоминал ранее, вы сможете выделить некоторые операции. Но некоторые останутся нераспределенными. Они будут сигнализировать о необходимости более абстрактных или не интуитивных классов, которые вы должны будете составить, используя свое здравое суждение.

Весь метод описан в белой книге по адресу www.openmetis.com .

0 голосов
/ 02 декабря 2009

Вы должны проверить Домен-управляемый дизайн , Эрик Эванс. Он предоставляет очень полезные концепции для размышления об объектах в вашей модели, об их функциях в области и о том, как их можно организовать для совместной работы. Это не поваренная книга и, возможно, не книга для начинающих, но потом я читаю ее на разных этапах своей карьеры, и каждый раз я находил в ней что-то ценное ... alt text
(источник: domaindrivendesign.org )

0 голосов
/ 02 декабря 2009

Я предполагаю, что есть понимание того, что такое структура, тип, класс, набор, состояние, алфавит, скаляр и вектор и отношения.

Объект - существительное , метод - глагол. Члены объекта могут представлять идентичность, состояние или скалярное значение для каждого поля. Отношения между объектами обычно представлены ссылками, где ссылки являются членами объектов. В тех случаях, когда отношения сложны, разнонаправлены, имеют арность больше 2, представляют какую-то группировку или сдерживание, тогда отношения могут быть выражены как объекты.

По другим, более широким техническим причинам объекты, скорее всего, являются единственным способом представления любой формы информации на языках ООП.

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