Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Яп

.pdf
Скачиваний:
28
Добавлен:
15.03.2023
Размер:
6.44 Mб
Скачать

2/27/2023

Интерфейс и реализация

321

322

Классы

 

• Реализация класса описывает поведение класса.

 

Она включает реализации всех операций,

 

определенных в интерфейсе класса.

 

• Атрибуты класса определяют состав и структуру

 

данных, хранимых в объектах этого класса.

 

Каждый атрибут имеет имя и тип, определяющий,

 

какие данные он представляет.

 

• Класс содержит объявления операций,

 

представляющих собой определения запросов,

 

которые должны выполнять объекты данного

 

класса.

 

• Реализация операции в виде процедуры – это

 

метод, принадлежащий классу.

324

323

81

Диаграмма классов

 

 

+

открытый

видендля любого другого класса

 

 

 

(public)

 

 

 

 

 

 

 

-

закрытый

не виденвнешнимиклассами

 

 

 

(private)

(объектами) и может использоваться

 

 

 

 

только объектом, его содержащим

 

 

 

 

 

 

 

 

 

 

 

#

защищенный

виденвнутри самого класса,для

 

 

 

(protected)

потомков данного класса

 

 

~

пакетный

видендля клиента класса,

• Атрибуты:

 

(package)

объявленногов том же пакете

 

 

 

 

 

 

Видимость Имя : Тип [Множественность] = НачальноеЗначение {Свойства}

• Методы:

Видимость Имя (Список Параметров): ВозвращаемыйТип {Свойства}

• Параметрыметода:

Направление Имя : Тип = ЗначениеПоУмолчанию

Если атрибут(операция)подчеркивается– его областью действияявляетсякласс,иначе– областьюдействия

являетсяэкземпляр.

325

2/27/2023

Специальные виды классов

Абстрактный класс – это класс, который не может иметь экземпляров. В них присутствуют функции члены, которые объявлены, но не определены. Эти функции определяются в наследниках, которые уточняют данную абстракцию.

Интерфейс – это абстрактный класс, который содержиттолько объявление методов и статические константные поля.

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

326

ОТНОШЕНИЯ МЕЖДУ КЛАССАМИ

327

328

82

329

Класс ассоциации

Самаассоциациятоже может иметь свойства и можетбыть представлена в виде класса.

331

2/27/2023

Ассоциация

Ассоциацияпоказываетструктурные отношениямежду объектами-экземплярамикласса,т.е. соединениямежду классами.

Когдакласс участвуетв ассоциации,он играетвэтом отношенииопределеннуюроль.

Мощность ассоциациибывает одногоиз трех типов:

1.один-к-одному;

2.один-ко-многим;

3.многие-ко-многим

330

N-арная ассоциация

Ассоциацияможет объединять три и более класса. В этом случае она называется n-арной

332

83

Зависимость

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

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

Пунктирнаястрелказависимостинаправлена отклиентак поставщику.

333

Композиция

Композиция– физическоевключение.

Одинклассбез другогоне можетсуществовать.

335

2/27/2023

Агрегация

Агрегацияобозначаетотношенияклассовв иерархии «целое/часть». Говорят,что агрегацияобразует«partof»- иерархию классов(и объектов).

Агрегацияобеспечиваетвозможностьперемещения от целого(агрегата)к его частям(атрибутам).

Нефизическоевключение – агрегация.

334

Реализация

Реализацияэто отношениемежду классами,в котором класс-приемниквыполняетреализациюопераций интерфейса класса-источника.

Класс Каталогдолженреализоватьинтерфейс Обработчик каталога,то есть Обработчиккаталогарассматриваетсякак источник,а Каталог— как приемник.

336

84

2/27/2023

Обобщение

Обобщение— отношение между общей сущностью и специализированнойразновидностью этой сущности.

Наследованиеэто отношение, при котором один класс разделяет структуру и поведение, определенные в одном другом (простое наследование) или во многих других (множественное наследование) классах.

337

338

Объекты

• Объект – это экземпляр некоторого класса.

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

• Каждый атрибут будет иметь конкретное значение в любой момент времени работы программы.

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

340

85

2/27/2023

341

Объекты на UML диаграмме

Имя объекта подчеркиваетсяи указывается всегда, атрибуты указываются выборочно.

И имя объекта, и имена атрибутов записываются с маленькой буквы.

Синтаксис представления имени имеет вид:

имяОбъекта:ИмяКласса

• Синтаксис представления атрибута имеет вид:

имя : Тип = Значение

343

342

Свойства объектов

индивидуальность – это характеристика объекта, которая отличает его от всех других объектов.

состояние – характеризуется перечнем всех атрибутов объекта и текущими значениями каждого из этих атрибутов.

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

344

86

2/27/2023

Свойства объектов

ОТНОШЕНИЯ МЕЖДУ ОБЪЕКТАМИ

347

Операции клиента над объектом

модификатор - изменяетсостояние объекта;

селектор - дает доступ к состоянию, но не изменяет его;

итератор - доступ к содержанию объекта по частям, в строго определенномпорядке;

конструктор - операция создания объекта и/или его инициализации;

деструктор - операция, освобождающая состояние объекта и/или разрушающая сам объект.

отношения между объектами

Как участник связи объект может играть одну из трех ролей:

1. контроллер - объект, который может воздействоватьна другие объекты, но никогда не подвержен воздействию других объектов;

2. сервер - объект, который никогда не воздействует на другие объекты, он только используется другими объектами;

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

другого агента.

348

87

2/27/2023

отношения между объектами

Основные принципы ООП

349

350

Абстрагирование

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

Абстракция – это набор всех таких характеристик.

Абстрагирование – это способ сконцентрироваться на интерфейсе (внешнее поведение объекта), не обращая внимания на реализацию (механизмы достижения желаемого поведения объекта).

351

352

88

2/27/2023

Абстрагирование

• Абстракции, начиная от наиболее полезных к менее полезным:

• Абстракция сущности – объект представляет собой полезную модель некой сущности предметнойобласти.

• Абстракция поведения – объект состоит из обобщенного множества операций.

• Абстракция виртуальной машины – объект группирует операции, которые либо вместе используются более высоким уровнем абстракции, либо сами используют некоторый наборопераций более низкого уровня.

• Произвольная абстракция – объект включает в себянабор операций, не имеющих друг с другом ничего общего.

353

354

Инкапсуляция

 

• Инкапсуляция – это свойство системы,

 

позволяющее объединить данные и методы,

 

работающие с ними, в классе и скрыть детали

 

реализации от пользователя.

 

• Инкапсуляция выполняется посредством

 

сокрытия данных.

 

• Абстракция и инкапсуляция дополняют друг

 

друга.

 

• Абстрагирование направлено на наблюдаемое

 

поведение объекта, а инкапсуляция занимается

 

внутреннимустройством. На практике это

 

означаетналичие у класса интерфейса и

 

реализации.

356

355

89

Наследование

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

Класс, от которого производится наследование,

называетсябазовым или родительским. Новый класс – потомком, наследником или производным классом.

С помощью наследованияможно определить новые классы как расширение, специализацию или комбинацию ранее определенных классов.

359

2/27/2023

Инкапсуляция

 

+

открытый (public)

видендлялюбого другого класса

 

 

 

 

 

-

закрытый (private)

не виденвнешнимклассам(объектам) и может

 

 

 

 

использоваться только объектом, его содержащим

 

 

 

 

 

#

защищенный(protected)

виденвнутри самого классаи для потомков данного класса

 

 

 

 

 

~

пакетный (package)

видендля клиентакласса,объявленногов том же пакете

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наследование

360

90