Понятие класса

В класс объединяются объекты с одинаковыми свойствами и методами.

Одним из первых действий, предпринимаемых человеком при попытке понять окружающий мир, является применение к нему некоторой структурной формы. При встрече с неизвестным объектом мы пытаемся втиснуть его в нашу существующую структуру: другими словами, классифицировать его. Большинство людей знакомо по крайней мере с несколькими классификационными структурами или иерархиями.

Использование иерархии классов вводит необходимость абстракции. Классы становятся более абстрактными по мере продвижения вверх по иерархии.

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

Класс - это абстрактное понятие, сравнимое с понятием категория в его обычном смысле.

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

Это можно пояснить на примере музыкальных инструментов. Музыкальные инструменты делятся на следующие категории: духовые, ударные и струнные.

Все эти категории принадлежат к категории музыкальных инструментов. В свою очередь, категория музыкальных инструментов входит в категорию инструментов. На рис.1 эта структура категорий графически представлена в виде дерева.

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

Класс в объектно-ориентированном программировании - это абстрактный тип данных, который включает не только данные, но и функции и процедуры.

Функции и процедуры класса называются методами и содержат исходный код, предназначенный для обработки внутренних данных объекта данного класса.

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

Между классами также могут быть установлены отношения:

- отношение разновидности (кошка - вид определенного биологического семейства или кошка - домашнее животное);

- включения или составной части (лапа - часть кошки);

- ассоциативности, когда между классами есть чисто смысловая связь (кошки и собаки - домашние животные).