Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
106.5 Кб
Скачать

Лабораторна робота № 4

Тема. Классы и отношения

Мета роботи: ознайомитися із використанням класів на прикладах.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Переменные класса и константы

Данные – члены класса, которые называются полями или переменными класса, объявляются в классе следующим образом:

cпецификатор тип имя;

В языке Java могут использоваться переменные класса, объявленные один раз для всего класса со спецификатором static и одинаковые для всех экземпляров класса, или переменные экземпляра, создаваемые для каждого экземпляра класса. Переменные объявляются со спецификаторами доступа public, private, protected или по умолчанию без спецификатора. Кроме данных – членов класса в классе используются локальные переменные и параметры методов. Переменные со спецификатором final являются константами. Спецификатор final можно использовать для переменной, объявленной в методе, а также для параметра метода.

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

/* пример # 1 : типы атрибутов и переменных : MyClass.java */

class MyClass {

int x; // переменная экземпляра класса

int y = 2; // переменная экземпляра класса

final int YEAR = 2003; // константа

static int bonus; // переменная класса

static int b = 1; // переменная класса

void init(int z){// параметр метода

z = 3;// переинициализация

int a;// локальная переменная метода

a = 4;// инициализация

}

}

В приведенном примере использованы данные базовых типов, не являющиеся ссылками на объекты. Данные могут быть ссылками, назначить которым реальные объекты можно с помощью оператора new.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]