Короткі теоретичні відомості
Классы определяют структуру и поведение некоторого набора элементов предметной области, для которой разрабатывается программная модель.
Классом называется описание совокупности объектов с общими атрибутами, методами, отношениями и семантикой.
Каждый класс имеет свое имя, отличающее его от других классов, и относится к определенному пакету. Имя класса в пакете должно быть уникальным. Физически пакет представляет собой каталог, в который помещаются программные файлы, содержащие реализацию классов. Классы позволяют разбить поведение сложных систем на простое взаимодействие взаимосвязанных объектов.
При проектировании системы необходимо не только идентифицировать сущности, но и указать, как они соотносятся друг с другом.
Отношением называется связь между классами. В объектно-ориен-тированном проектировании особое значение имеют четыре типа отношений: зависимости, обобщения, ассоциации и реализации.
Зависимостью (Dependency) называется отношение использования, определяющее, что изменение состояния объекта одного класса может повлиять на объект другого класса, который его использует, причем обратное в общем случае неверно. Зависимости применяются тогда, когда экземпляр одного класса использует экземпляр другого, например в качестве параметра метода.
Обобщение (Generalization) означает, что объекты подкласса могут использоваться всюду, где встречаются объекты суперкласса, но ни в коем случае не наоборот. Определение суперкласса является более общим, чем определение подкласса. Подкласс наследует свойства родителя (атрибуты и методы). Идентификация суперклассов и подклассов осуществляется с использованием модели предметной области, так как с ее помощью возможен анализ всех понятий в более общих и абстрактных терминах. В итоге улучшается понимание кода (особенно для систем с сотнями классов), уменьшается объем повторяемой информации.
Например, понятия CashPayment, CreditPayment, CheckPayment очень похожи одно на другое, и в этом случае разумно организовать их в иерархию обобщения – специализации классов. Класс Payment представляет более общее понятие, а его подклассы – специализированные свойства.
Рис. 3.1. Отношение обобщения
Подкласс создается в случаях, если:
· он имеет дополнительные атрибуты, интересующие разработчика;
· он имеет дополнительные ассоциации, интересующие разработчика;
· ему соответствует понятие, управляемое, обрабатываемое, реагирующее или используемое способом, отличным от способа, определенного суперклассом или другими подклассами;
· он представляет объекту поведение, которое отлично от поведения, определяемого суперклассом или другими подклассами.
Реализацией (Realization) называется отношение между классификаторами (классами, интерфейсами), при котором один из них описывает контракт (интерфейс сущности), а другой гарантирует его выполнение.
Ассоциации (Association) показывают, что объекты одного класса связаны с объектами другого класса и отражают некоторое отношение между ними. В этом случае можно перемещаться (с помощью вызова методов) от объектов одного класса к объектам другого. Агрегация – ассоциация, моделирующая взаимосвязь “часть/целое” между классами, которые в тоже время могут быть равноправными. Оба класса при этом находятся на одном концептуальном уровне, и ни один не является более важным, чем другой.
Тело класса в системе Java может содержать объявление полей данных, конструкторов, методов, внутренних классов и интерфейсов, а также логические блоки, используемые обычно для инициализации полей.