Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты по ОП.docx
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
91.62 Кб
Скачать

2)

Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

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

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

Абстрактные классы

Класс может представлять собой как бы заготовку, в которой часть методов реализована, а часть — нет. В этом случае в описании класса перед словом class должен стоять описатель abstact и при описании нереализованных методов тоже должен использоваться этот описатель.

Пример

public abstract class D {

. . .

int g1(int s) {

. . .

}

public abstract void g2(String str);

. . .

}

В классе D метод g1 — это обычный метод, g2 — абстрактный, он содержит только заголовок, но не содержит реализации.

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

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

С другой стороны не запрещено описывать переменные абстрактного класса. Просто им нужно присваивать ссылки на объекты неабстрактных классов.

  • В этой ситуации всегда применяется upcasting.

Возвращаясь к примеру с печатными изданиями, можно отметить, что класс Issue можно было бы реализовать как абстрактный, определив но не реализовав в нем метод print(...). Тогда во всех порожденных классах (Book, Journal, Newspaper) пришлось бы реализовать метод print(...). Фрагмент, печатающий каталог, при этом остался бы прежним.

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

Все объекты в Java создаются только явно, для чего используется операция new.

Объект

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

Объекты могут исполнять определенные роли. Роль определяет отношение между классом и его экземплярами [4], выделяя определенное их подмножество. Считается, что все эти объекты похожи по своему поведению и состояниям, которые они могут принимать. Например, в системе может существовать много объектов класса Абонент, но часть из них в данный момент играет роль вызываемых, часть - вызывающих, а остальные свободны. Таким образом у этого класса мы выделили три роли.

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

Фактически, объект-роль - это некоторый промежуточный уровень абстракции между объектами и классами. Например, рассмотрим класс "человек": экземпляром этого класса является конкретный человек с именем и фамилией (его уникальным идентификатором) - Иванов Иван Петрович. У этого экземпляра могут быть состояния, например, "болен", "здоров", "спит" и т.п. В качестве объекта-роли можно привести роли: "сын", "жена", "муж". Таким образом, объект-экземпляр класса может исполнять разные роли, например роли "мужа" и "сына".

У объекта и объекта-роли есть уникальный идентификатор и строго определенные значения атрибутов.

На диаграмме объект и объект-роль представляется как прямоугольник с двумя отделениями. Верхнее отделение содержит имя объекта и имя его класса, по следующему синтаксису:

<Имя объекта>: <имя класса>

3)