Есть ли какие-либо правила для ООП?

20
задан Dave Schweisguth 18 February 2016 в 14:24
поделиться

6 ответов

Походит на то, что Вы ищете, Принципы Объектно-ориентированного Дизайна .

, Итогового от Принципы Гибкой разработки программного обеспечения, Шаблоны и Методы . Эти принципы являются с трудом завоеванным продуктом десятилетий опыта в разработке программного обеспечения. Они не продукт единственного ума, но они представляют интеграцию и записи большого количества разработчиков программного обеспечения и исследователей. Хотя они представлены здесь как принципы объектно-ориентированного дизайна, они - действительно особые случаи давние принципы разработки программного обеспечения.

SRP Единственный Принцип Ответственности класс А должен иметь только одну причину измениться.

OCP Открыто закрытый Принцип объекты программного обеспечения (классы, пакеты, методы, и т.д.) должны быть открыты для расширения, но закрытые для модификации.

LSP Принцип Liskov Substition Подтипы должны быть substitutable для своих базовых типов.

DIP Принцип Инверсии Зависимости Абстракции не должны зависеть от деталей. Детали должны зависеть upons абстракции.

ISP Интерфейсный Принцип Сегрегации Клиенты shold не быть вынужденным зависеть от методов, которые они не используют. Интерфейсы принадлежат клиентам, не иерархиям.

ЧЛЕН ПАЛАТЫ ПРЕДСТАВИТЕЛЕЙ Принцип Эквивалентности Повторного использования Выпуска гранула повторного использования является гранулой выпуска.

CCP Общий Принцип Закрытия классы в пакете должны быть закрыты вместе против тех же видов изменений. Изменение, которое влияет на закрытый пакет, влияет на все классы в том пакете и никаких других пакетах.

CRP Общий Принцип Повторного использования классы в пакете снова используются вместе. При многократном использовании одного из классов в пакете Вы снова используете их всех.

ADP Принцип Зависимостей Acylcic Не Позволяют циклов в графе зависимостей.

SDP Стабильный Принцип Зависимостей Зависят в направлении устойчивости.

SAP Стабильный Принцип Абстракций пакет А должен быть столь же абстрактным, как это стабильно.

41
ответ дан 29 November 2019 в 22:49
поделиться

Не уверенный в любых правилах. Все эти упомянутые вещи больше похожи на парадигмы OO мне. Существует немного советов, которым мы следуем как,

  • Разделение Проблемы
  • , с которой Единственная Ответственность в Классе
  • Предпочитает, чтобы Состав по Наследованию
  • Программирование Соединил интерфейсом
  • Плюс все упомянутые Billybob, уже
6
ответ дан 29 November 2019 в 22:49
поделиться

По словам Прагматически настроенных Программистов - правила:

  • Сохраняют это DRY (не Повторяйте Себя)
  • Сохраняют это ЗАСТЕНЧИВЫМ (Удостоверьтесь, чтобы Ваши классы имели высокосвязную и слабую связь)
  • , и скажите другому ПАРНЮ (Разделение проблем)

http://media.pragprog.com/articles/may_04_oo1.pdf

4
ответ дан 29 November 2019 в 22:49
поделиться

Эти принципы OO являются прямыми от Главные Первые Шаблоны разработки :

  • Инкапсулируют то, что Варьируется
  • Программа к Интерфейсу, а не Реализация
  • Состав Пользы по Наследованию
  • , Класс А должен иметь только одну причину Измениться ( Единственная Ответственность Principle )
  • , Подтипы должны быть substitutable для своей Основы ( Liskov Substitition Principle )
  • Классы shoule быть Открытыми для расширения, но Закрытыми для Модификации ( Открыто закрытый Principle )
5
ответ дан 29 November 2019 в 22:49
поделиться

Это понятия, не правила. Нет никаких правил действительно, просто решения сделать, некоторые проекты лучше, чем другие, некоторые намного лучше, чем другие :-)

существует много инструкций хотя :-) Некоторые - конкретный язык (C++ пронизан ими), другими является конкретное OO. Слишком многие для списка, хотя :-)

Первое, что пришло на ум, важные:

  • Слабая связь, высокая связность
  • Запись тестируемые классы, которые Вы тестируете
  • наследование Использования экономно и только там, где это имеет смысл (предпочитают состав)
  • Попытка придерживается открытого/близкого принципа.
  • (самый важный) KISS

Много, чтобы подробно остановиться и добавить :-)

РЕДАКТИРОВАНИЕ: Я должен добавить, правила, которые Вы перечислили, не уникальны для OO

4
ответ дан 29 November 2019 в 22:49
поделиться

Нет никаких "Правил" к ООП.

существует 4 свойства языка, которые делают язык объектно-ориентированным или не (это вещи, которые Вы перечислили в своем вопросе).

Остальная часть материала там инструкции. Лучше всего/больше всего полезные инструкции, которые я прочитал, СХВАТЫВАНИЕ

, Многие предложения не с готовностью понятны неспециалистами (крупные фирмы неCS). Я думал, что СХВАТЫВАНИЕ было прагматично и доступно.

я думаю, что СХВАТЫВАНИЕ хорошо, потому что оно предлагает самую критическую часть OO на ее имя - Присвоение Ответственности (к объектам не программисты).

два самых критических понятия СХВАТЫВАНИЯ, из которых все остальное происходит, связываются и сцепление. Эти два понятия/принципала управляют всеми другими шаблонами и подходами.

BTW - я просто брал интервью у Вас? Вы записали вопрос неправильно...

3
ответ дан 29 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: