Короткі теоретичні відомості

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

Классом называется описание совокупности объектов с общими атрибутами, методами, отношениями и семантикой.

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

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

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

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

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

Например, понятия CashPayment, CreditPayment, CheckPayment очень похожи одно на другое, и в этом случае разумно организовать их в иерархию обобщения – специализации классов. Класс Payment представляет более общее понятие, а его подклассы – специализированные свойства.

Рис. 3.1. Отношение обобщения

Подкласс создается в случаях, если:

· он имеет дополнительные атрибуты, интересующие разработчика;

· он имеет дополнительные ассоциации, интересующие разработчика;

· ему соответствует понятие, управляемое, обрабатываемое, реагирующее или используемое способом, отличным от способа, определенного суперклассом или другими подклассами;

· он представляет объекту поведение, которое отлично от поведе­ния, определяемого суперклассом или другими подклассами.

Реализацией (Realization) называется отношение между классификаторами (классами, интерфейсами), при котором один из них описывает контракт (интерфейс сущности), а другой гарантирует его выполнение.

Ассоциации (Association) показывают, что объекты одного класса связаны с объектами другого класса и отражают некоторое отношение между ними. В этом случае можно перемещаться (с помощью вызова методов) от объектов одного класса к объектам другого. Агрегация – ассоциация, моделирующая взаимосвязь “часть/целое” между классами, которые в тоже время могут быть равноправными. Оба класса при этом находятся на одном концептуальном уровне, и ни один не является более важным, чем другой.

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