Я занимаюсь анализом OO для выяснения отношений между игровыми компонентами, чтобы я мог проектировать классы. Я в конечном итоге на C#.OOAD из двух взаимосвязанных иерархий наследования (игровые компоненты)
Требования
Моя игра будет включать в себя:
Пьесы: блоки, карты, счетчики
Места: Сетки, стеки
Placement штук возможных:
- Блоки могут быть размещены на Сетки (Нужна сетка, х, у)
- карты могут быть размещены на стеки (нужны стек, положение)
- Счетчики могут быть размещены на сетках (Нужна сетка, х, у)
- Счетчики могут быть также размещены на вершина штабеля (нужны стек, положение)
Анализ
- Кусок либо как интерфейс (IPiece) или абстрактный класс (шт). (что лучше?)
- Блок, карта & Счетчик как реализация IPiece или подклассов Piece.
- Место в виде интерфейса (IPlace) или абстрактного класса (Место). (что лучше?)
- Сетка & Стек как реализация IPlace или подклассов места.
Тогда я запутаться ...
Каждый кусок HAS-A Place так есть отношения там. Это взаимно-однозначное отношение, так как каждый кусок должен иметь одно и только одно место.
Но как я могу гарантировать, что Блоки могут работать только на сетках, Карты только на стеках и счетчиках?
Заранее благодарим за любую помощь.
Ваш вопрос о самом языке или о дизайне классов? (Я угадываю второе, но хочу быть уверенным, потому что у меня были некоторые сюрпризы при интерпретации вопросов) – MVCDS
Речь идет о дизайне классов. (Хотя было бы полезно, если дизайн поддается C# - e..g не множественное наследование!) – Adahus