Концепции проектирования приложений

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

Наследование - это процесс, с помощью которого один объект приобретает свойства другого объекта. Оно важно потому, что поддерживает концепцию иерархической классификации. Наибольшая часть знаний становится управляемой только с помощью иерархических классификаций. Например, порода поисковых охотничьих собак Golden Retriever является частью классификации Dog (собака), которая, в свою очередь, есть часть Memmal (млекопитающие) - подкласса большого класса Animal (животные). Без применения классификаций каждый объект нуждался бы в явном определении всех своих характеристик. При использовании наследования объект нуждается только в определении тех качеств, которые делают его уникальным в собственном классе. Он может наследовать общие свойства от своего родителя. Поэтому именно механизм наследования дает возможность  одному объекту быть специфическим экземпляром более общего случая.

Полиморфизм - свойство, которое позволяет использовать один интерфейс для общего класса действий. Специфическое действие определяется точной природой ситуации.

Инкапсуляция - это механизм, который связывает код вместе с обрабатываемыми им данными и сохраняет их в безопасности как от внешнего влияния, так и от ошибочного использования. Можно представить инкапсуляцию как защитную оболочку, которая предохраняет код и данные от произвольного доступа из других кодов, определенных вне этой оболочки. Доступ к коду и данным внутри оболочки строго контролируется через хорошо определенный интерфейс. Мощь инкапсулированного кода состоит в том, что каждый знает как получить к нему доступ, и может пользоваться им независимо от деталей его реализации и без боязни неожиданных побочных эффектов.

Существенным элементом ООП является абстракция. Человечество управляет сложностью через абстракцию. Например люди не представляют себе автомобиль как набор десятков тысяч деталей. В их воображении автомобиль - хорошо определенный объект со своим собственным уникальным поведением. Эта абстракция позволяет людям использовать автомобиль для поездок, не задумываясь над сложностью частей, из которых он состоит.