Нужна помощь в дизайне класса - PullRequest
2 голосов
/ 09 февраля 2010

Мне нужно разработать определенный модуль SW, который выводит данные в следующем формате. Основной объект и связанный объект и Количество

т.е.

Desktop Computer
---- CPU 1x
---- Mouse 1x 
---- KB 1x
---- Monitor 1x
---- Speakers 2x

Это должно означать, что для объекта «Настольный компьютер» должны быть 1 процессор, 1 мышь, 1 клавиатура, 1 монитор, 2 динамика

Cubicles  
---------- Desktop Comps        4x (shall mean each cubicle shall contain 4 pc's) 
---------- Power Supply         1x (shall mean each cubicle shall have a main pow. 
supply)  

Аналогично для каждого объекта Cubicle должно быть 4 рабочих стола и 1 объект питания

Правило: На каждые 4 ячейки должен быть один объект HUB

The sample Output for 8 cubicles shall be  

   Total CPU's  - 32  
   HUB          -  2 
   Mouse        - 32 
   KB           - 32             
   Monitor      - 32          
   Speakers     - 64 
   Cubicles     - 8 
   Desktop PC's - 32 
   Pow. Supply  - 8 

Может ли кто-нибудь помочь мне реализовать то же самое с точки зрения классов / интерфейсов ООП? Или указатель на шаблон дизайна для использования в таких ситуациях. Глубоко ценим ваше время для того же

Ответы [ 3 ]

1 голос
/ 09 февраля 2010

Создайте класс для каждого существительного , которое у вас есть. Каждый класс может иметь список элементов, которые он содержит (object-x has-a object-y). Для каждого класса создайте метод toString(), который выводит содержащиеся в нем элементы в правильно отформатированном виде.

1 голос
/ 09 февраля 2010

Хотя я не эксперт, но вот что вы можете сделать: -

вы можете создать два компьютера класса и куб, а ваш компьютерный класс может контролировать количество ресурсов, скажем, два монитора подключены к ЦП или четыре динамика подключены.

вы можете отслеживать количество ресурсов, добавляя или обновляя счетчик при добавлении или обновлении .Это позволит вам контролировать отдельные ресурсы для компьютера и кабинета.

ваш компьютер и класс куба реализуют интерфейс IDisplayCount, который перечислит все ресурсы, которые у них есть, это шаблон стратегии.

Вы можете отслеживать список кабин, следуя сочетанию декоратора и фабричного образца. Декоратор для отслеживания и фабрика, чтобы убедиться, что все экземпляры (обновленные или добавленные) добавляются в список, который отслеживает ресурсы путем создания экземпляра или обновления из одного места.

Количество концентраторов можно отслеживать по классу количества кубов.

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

0 голосов
/ 09 февраля 2010

Кажется, вы уже выполнили большую часть проектных работ. Дизайн UML / Class очень близко следует из того, что вы уже написали. Начальная точка может выглядеть следующим образом: альтернативный текст http://img6.imageshack.us/img6/9232/cubicle.png

Отсюда просто продолжайте набросок, который вы начали, и позвольте дизайну класса следовать. Вы могли бы подумать о создании дополнительных абстракций, таких как IComputer, которые бы реализовывал DesktopComputer, чтобы вы могли заменить, скажем, объект LaptopComputer на рабочий стол. Что бы ни предлагал ваш домен, следуйте этому.

...