Можно ли использовать наследование, чтобы просто «разделить» класс на несколько файлов? - PullRequest
0 голосов
/ 15 марта 2012

Итак, предположим, у меня есть один класс с именем "Program", который содержит всю мою программу, из которой я создам только один экземпляр.

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

Можно ли создать класс с именем «ProgramWithoutShopping» с половиной кода, как указано выше, а затем поместить мой связанный с покупками код в класс с именем «Program», расширяющий «ProgramWithoutShopping», без использования ProgrammWithoutShopping ни в каком другом цель

Моей целью было бы получить лучший обзор из-за отдельной функциональности и меньших файлов.

Есть ли у кого-нибудь пример большого проекта, который действительно использовал эту стратегию?

PS: Если вы собираетесь написать «Не используйте классы вообще», вы можете предположить, что моя программа работает в среде, которая требует, чтобы она была классом.

1 Ответ

1 голос
/ 15 марта 2012

Какой язык вы используете? C # имеет частичное ключевое слово, которое также будет работать в этом случае, не требуя двух классов.

Чтобы ответить на ваш вопрос, достаточно стандартно иметь базовые классы, которые ничего не делают напрямую, но в целом полезны. Обычно это используется, чтобы избежать дублирования кода, но это не является строгим требованием.

Я бы вместо этого постулировал, достаточно ли двух классов? Если подавляющее большинство вашей кодовой базы находится в одном классе, то вы создаете проблему обслуживания даже с двумя классами.

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

Customer
ShoppingCart
Item
Special
Payment
Order

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

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