Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Объектно ориентированное программирование в Java

Покупка
Основная коллекция
Артикул: 708306.01.99
Учебное пособие посвящено объектно ориентированному программированию на языке Java. Рассматриваются основные принципы объектно ориентированного программирования, средства работы со структурами данных - коллекции и дженерики, принципы объектно ориентированного дизайна.
Гуськова, О.И. Объектно ориентированное программирование в Java : учебное пособие / О. И. Гуськова. - Москва : МПГУ, 2018. - 240 с. - ISBN 978-5-4263-0648-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/1020593 (дата обращения: 29.06.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Московский педагогический государственный университет»

О. И. Гуськова

ОБЪЕКТНО ОРИЕНТИРОВАННОЕ 
ПРОГРАММИРОВАНИЕ В JAVA

Учебное пособие

МПГУ
Москва • 2018

УДК 004.424(075.8)
ББК 32.973-018я73
 
Г968

Рецензенты:
О. В. Муравьева, кандидат физико-математических наук, 
доцент, зам. зав. кафедрой теоретической информатики 
и дискретной математики математического факультета МПГУ 
В. П. Моисеев, доцент, кандидат технических наук, 
доцент кафедры информатики и прикладной математики 
Института математики, информатики и естественных наук МГПУ 

 
 
Гуськова, Ольга Ивановна. 
Г968  
Объектно ориентированное программирование в Java : 
учебное пособие / О. И. Гуськова. – Москва : МПГУ, 2018. – 240 с. 
 
 
ISBN 978-5-4263-0648-6

Учебное пособие посвящено объектно ориентированному программированию на языке Java. Рассматриваются основные принципы объектно ориентированного программирования, средства работы со структурами данных – коллекции 
и дженерики, принципы объектно ориентированного дизайна.

УДК 004.424(075.8)
ББК 32.973-018я73

ISBN 978-5-4263-0648-6 
© МПГУ, 2018
© Гуськова О. И., текст, 2018

СОДЕРЖАНИЕ

ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО 
ПРОГРАММИРОВАНИЯ
1.1. Введение в объектно ориентированное 
программирование  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
1.2. Краткая история развития объектно ориентированного 
программирования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
1.3. Основные принципы объектно ориентированного 
программирования  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
1.4. Класс и объект  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
1.5. Определение класса в Java . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
1.6. Создание экземпляров класса . . . . . . . . . . . . . . . . . . . . . . . . .15
1.7. Оператор «Точка» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
1.8. Переменные-члены и методы-члены класса  . . . . . . . . . . . .17
1.9. Пример объектно ориентированного 
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
1.10. Конструкторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
1.11. Модификаторы управления доступом 
и области видимости  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
1.12. Сокрытие информации и инкапсуляция . . . . . . . . . . . . . . .26
1.13. Геттеры и сеттеры  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
1.14. Ключевое слово “this” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
1.15. Метод toString()  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
1.16. Константы (fi nal)  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
1.17. Резюме по изменению класса Circle . . . . . . . . . . . . . . . . . . .32
1.18. Примеры классов  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
2. КОМПОЗИЦИЯ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
2.1. Пример классов «Автор» и «Книга»  . . . . . . . . . . . . . . . . . . . .48
2.2. Пример  классов «Точка» и «Отрезок» . . . . . . . . . . . . . . . . . .55
2.3. Пример классов «Точка» и «Круг» . . . . . . . . . . . . . . . . . . . . . .63
3. НАСЛЕДОВАНИЕ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
3.1. Области видимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
3.2. Переопределение методов и сокрытие полей  . . . . . . . . . . .74
3.3. Аннотация @Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
3.4. Ключевое слово “super” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77

О. И. ГУСЬКОВА. ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В JAVA

3.5. Дополнение о конструкторах . . . . . . . . . . . . . . . . . . . . . . . . . .77
3.6. Конструктор без параметров по умолчанию  . . . . . . . . . . . .78
3.7. Одиночное наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
3.8. Общий корневой класс java.lang.Object . . . . . . . . . . . . . . . . .79
4. ПОЛИМОРФИЗМ, АБСТРАКТНЫЕ КЛАССЫ 
И ИНТЕРФЕЙСЫ
4.1. Подстановка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
4.2. Апкастинг и даункастинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
4.3. Оператор “instanceof” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
4.4. Резюме по полиморфизму . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
4.5. Пример полиморфизма  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
5. АБСТРАКТНЫЕ КЛАССЫ И ИНТЕРФЕЙСЫ
5.1. Абстрактный метод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
5.2. Абстрактный класс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
5.3. Интерфейс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
5.4. Реализация множественных интерфейсов . . . . . . . . . . . . . .99
5.5. Интерфейс и абстрактный суперкласс . . . . . . . . . . . . . . . . .102
5.6. Динамическое (позднее) связывание. . . . . . . . . . . . . . . . . .102
5.7. Инкапсуляция, связывание и связность . . . . . . . . . . . . . . . .103
6. ДЖЕНЕРИКИ И ВВЕДЕНИЕ 
ВО ФРЕЙМВОРК «КОЛЛЕКЦИИ»
6.1. Введение во фреймворк «Коллекции» . . . . . . . . . . . . . . . . .112
6.2. Коллекции и небезопасность типов . . . . . . . . . . . . . . . . . . .118
6.3. Введение в дженерики  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
6.4. Дженерик-классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
6.5. Дженерик-методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
6.6. Wildcards – подстановочные символы . . . . . . . . . . . . . . . . .134
6.7. Дженерики, ограничивающие тип  . . . . . . . . . . . . . . . . . . . .140
7. КОЛЛЕКЦИИ
7.1. ArrayList с дженериками  . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
7.2. Обратная совместимость  . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
7.3. Автобоксинг и автоанбоксинг – 
автоупаковка и автораспаковка . . . . . . . . . . . . . . . . . . . . . . . . . .147
7.4. Иерархия интерфейсов во фреймворке «Коллекции» . . . .151
7.5. Интерфейсы Iterable<E>, Iterator<E> 
и усовершенствованный цикл for  . . . . . . . . . . . . . . . . . . . . . . . .152

СОДЕРЖАНИЕ

7.6. Интерфейс Collection<E> и его подинтерфейсы List<E>, 
Set<E>, Queue<E> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
7.7. Интерфейс Map<K,V> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
7.8. Интерфейс List<E> и его реализации . . . . . . . . . . . . . . . . . .158
7.9. Упорядочение, сортировка и поиск  . . . . . . . . . . . . . . . . . . .175
7.10. Set<E> – интерфейсы и реализации . . . . . . . . . . . . . . . . . .180
7.11. Queue<E> – интерфейсы и реализации  . . . . . . . . . . . . . . .190
7.12. Интерфейсы и реализации Map<K,V> . . . . . . . . . . . . . . . . .195
7.13. Алгоритмы фреймворка «Коллекции» . . . . . . . . . . . . . . . .199
8. ПРИНЦИПЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО 
ДИЗАЙНА (ООД) КЛАССОВ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
8.1. SRP – Single responsibility Principle – принцип 
единственной ответственности . . . . . . . . . . . . . . . . . . . . . . . . . .213
8.2. OCP – Open Close Principle – 
принцип открытости/закрытости . . . . . . . . . . . . . . . . . . . . . . . .216
8.3. LSP – Liskov’s Substitution Principle – принцип замещения 
Барбары Лисков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
8.4. ISP – Interface Segregation principle – принцип 
разделения интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
8.5. DIP – Dependency Inversion principle – 
принцип инверсии зависимостей . . . . . . . . . . . . . . . . . . . . . . . .228
8.6. Другие принципы ООП и ООД . . . . . . . . . . . . . . . . . . . . . . . .233
ЗАКЛЮЧЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
БИБЛИОГРАФИЯ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238

ВВЕДЕНИЕ

Учебное пособие предназначено для магистрантов, обучающихся по программе «Профильное и углубленное обучение информатике», дисциплина – «Языки и методы программирования», и может 
быть также интересно студентам бакалавриата и всем интересующимся объектно ориентированным программированием и его реализацией на языке Java.
Целями освоения дисциплины «Языки и методы программирования» является  формирование систематизированных знаний в области 
объектно ориентированного программирования на языке Java, приобретение навыков разработки программного кода с использованием 
современных кросс-платформенных инструментальных средств. 
Для изучения данного учебного пособия необходимо знакомство с основными понятиями языка Java, такими, как переменные, 
типы данных, массивы, методы и т.д. Для изучения глав 6 и 7 желательно, хотя и необязательно, понимание работы со структурами 
данных и знакомство с обработкой исключений.
Учебное пособие состоит из 8 глав. В первой главе рассматриваются основные понятия и принципы объектно ориентированного 
программирования. Во второй главе рассматриваются отношения 
между классами, при этом особое внимание уделено композиции. 
Третья глава посвящена наследованию. В четвертой главе изучаются средства реализации в Java принципа полиморфизма, использование абстрактных классов и интерфейсов рассматривается в пятой 
главе. Шестая и седьмая главы предназначены для изучения работы 
с дженериками и коллекциями. В восьмой главе обсуждаются принципы объектно ориентированного проектирования SOLID.
Каждая глава содержит примеры, иллюстрирующие изучаемые 
понятия. Кроме того, главы содержат контрольные вопросы и задания для самостоятельной работы.
Учебное пособие основано на материалах для преподавания дисциплин «Языки и методы программирования» и «Практикум по решению задач алгоритмизации и программирования» магистрантам МПГУ.

1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО 
ПРОГРАММИРОВАНИЯ

1.1. Введение в объектно ориентированное 
программирование 

Мы живем в мире объектов. Стол, автомобиль, ручка – это объекты. Наряду с физическими существуют также абстрактные объекты, 
представителями которых, например, являются числа или геометрические фигуры.
Языки структурного программирования не подходят для абстракций высокого уровня при решении задач реальной жизни. Например, 
программы на C, использующие только такие конструкции, как условный оператор, циклы, массивы, функции, являются низкоуровневыми и их трудно применять для абстрагирования с целью построения моделей реального мира или создания игр.
Кроме того, программы, написанные на языках структурного программирования, состоят из функций. Для функций имеется 
лишь незначительная возможность их повторного использования. 
Трудно копировать функции из одной программы в другую и повторно использовать в другой программе, так как функции, скорее 
всего, будут ссылаться на другие функции или глобальные переменные. Другими словами, функции недостаточно инкапсулированы, 
поэтому их трудно использовать как повторно используемый программный модуль.
Исследования департамента обороны США 1970-х годов показали, что 80% бюджета уходило на поддержку программного обеспечения и только 20% – на его разработку. При этом программные модули, как правило, невозможно было повторно использовать в других 
программах. В то же время компоненты аппаратного обеспечения 
можно использовать в других устройствах. Поэтому было предложено разрабатывать программное обеспечение таким образом, 
чтобы оно обладало свойствами объекта аппаратного обеспечения. 

О. И. ГУСЬКОВА. ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В JAVA

8

Для преодоления недостатков структурного программирования 
были разработаны языки, поддерживающие парадигму объектно 
ориентированного программирования.
Объектно ориентированное программирование (ООП) – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию 
наследования.
Объект – это сущность, обладающая определенным поведением 
и способом представления. 
Класс – это шаблон, или прототип, по которому создаются объекты. Класс моделирует состояние и поведение объектов реального мира.
Например, автомобиль является экземпляром класса автомобилей. Однако если имеется несколько конкретных автомобилей, 
то они не являются классом, потому что класс – это абстракция.
Класс содержит статические свойства (их также называют полями, атрибутами, характеристиками, переменными-членами класса) 
и динамическое поведение, общие для всех объектов, в закрытом «запечатанном ящике» и определяет открытый интерфейс для использования таких «ящиков». Поскольку классы хорошо инкапсулированы, то их легко использовать повторно.  Таким образом, объектно 
ориентированное программирование в классе объединяет данные 
и инструкции для обработки данных.
Объект в ООП – это экземпляр некоторого класса. Все экземпляры класса имеют одинаковые свойства, описанные в определении 
класса.
Например, можно создать класс «Студент» и определить три экземпляра данного класса: Ivanov, Petrov, Sidorov.

1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

1.2. Краткая история развития 
объектно ориентированного программирования

Первым объектно ориентированным языком программирования считается  Симула-67, разработанный в 1967 г., хотя Симула-67 
традиционно не считается объектно ориентированным языком в каноническом смысле этого слова. Этот язык в значительной степени 
опередил свое время, современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Симула-67, и он не выдержал конкуренции с другими языками программирования.
В 1970 г. Алан Кэй и его исследовательская группа в компании Xerox PARK создали персональный компьютер, названный 
Dynabook и первый объектно ориентированный язык программирования Smalltalk для программирования на этом компьютере.
По мнению Алана Кея, которого считают одним из «отцов-основателей» ООП, объектно ориентированный подход заключается 
в следующем наборе основных принципов (цитата):
«1. Все является объектом.
2. Вычисления осуществляются путем взаимодействия (обмена 
данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение – это запрос 
на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
3. Каждый объект имеет независимую память, которая состоит 
из других объектов.
4. Каждый объект является представителем класса, который 
выражает общие свойства объектов (таких, как целые числа 
или списки).
5. В классе задается поведение (функциональность) объекта. Тем 
самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
6. Классы организованы в единую древовидную структуру 
с общим корнем, называемую иерархией наследования. Память 

О. И. ГУСЬКОВА. ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В JAVA

10

и поведение, связанные с экземплярами определенного класса, 
автоматически доступны любому классу, расположенному ниже 
в иерархическом дереве.
Таким образом, программа представляет собой набор объектов, 
имеющих состояние и поведение. Объекты взаимодействуют посредством сообщений. Естественным образом выстраивается иерархия объектов: программа в целом – это объект, для выполнения своих функций она обращается к входящим в нее объектам, которые, 
в свою очередь, выполняют запрошенное путем обращения к другим 
объектам программы. Естественно, чтобы избежать бесконечной рекурсии в обращениях, на каком-то этапе объект трансформирует обращенное к нему сообщение в сообщения к стандартным системным 
объектам, предоставляемым языком и средой программирования.
Устойчивость и управляемость системы обеспечивается за счет 
четкого разделения ответственности объектов (за каждое действие 
отвечает определенный объект), однозначного определения интерфейсов межобъектного взаимодействия и полной изолированности 
внутренней структуры объекта от внешней среды (инкапсуляции)».
В 1980-х годах Гради Буч создал метод разработки программного обеспечения, опубликованный сначала в статье, а затем 
в книге «Объектно ориентированный анализ и проектирование». 
Впоследствии он развил свои идеи на методы объектно ориентированного дизайна. 
В 1990-х Йордан Коад включил идеи поведения в объектно ориентированные методы.
Значительный вклад в развитие объектно ориентированного 
подхода был сделан разработкой техники объектного моделирования (Object-Modelling Techniques (OMT)) Джеймса Румбаха и описанием процесса разработки программного обеспечения OOSE 
(Object-Oriented Software Engineering) Ивара Якобсона.
В 1994 году Гради Буч и Джеймс Рамбо разрабатывали новый 
язык объектно ориентированного моделирования. За основу языка ими были взяты методы моделирования, разработанные Бучем 
(метод Буча) и Рамбо (Object-Modeling Technique – OMT). 

1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

Затем к идее создания нового языка моделирования подключились новые участники, и основная роль в организации процесса 
разработки UML перешла к консорциуму OMG (Object Management 
Group). Группа разработчиков в OMG, в которую также входили Буч, 
Рамбо и Якобсон, выпустила спецификации UML версий 0.9 и 0.91 
в июне и октябре 1996 года.

1.3. Основные принципы объектно ориентированного 
программирования

1. Абстракция в объектно ориентированном программировании – это придание объекту характеристик, которые четко определяют его концептуальные границы, отличая от всех других объектов. 
Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде 
более простых объектов.
Абстракция является основой объектно ориентированного программирования и позволяет работать с объектами, не вдаваясь 
в особенности их реализации. 
Так, для описания класса «Студент»  имеет смысл рассматривать 
такие характеристики объектов, как фамилия, имя, отчество, номер 
зачетной книжки, номер курса, номер группы, оценки. Не имеет 
смысла оценивать, например, внешние данные или характер.
2. Инкапсуляция – это принцип, который требует сокрытия 
деталей реализации используемого программного компонента 
при возможности взаимодействовать с ним посредством предоставляемого интерфейса, а также объединение и защита жизненно 
важных для компонента данных. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь 
может взаимодействовать с объектом только через этот интерфейс. 
Например, автомобиль является объектом, состоящим из других 
объектов, таких, как двигатель, коробка передач, рулевое управление и т.п., имеющих свои собственные подсистемы. Но для человека 

О. И. ГУСЬКОВА. ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В JAVA

12

автомобиль – единый объект, которым можно управлять с помощью подсистем, даже не зная внутреннего устройства автомобиля.
3. Наследование – принцип, позволяющий описать новый класс 
на основе уже существующего (родительского), при этом свойства 
и функциональность родительского класса заимствуются новым 
классом. Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса. Например, базовым классом может быть 
класс «сотрудник вуза», от которого наследуются классы «аспирант», «профессор» и т.д. 
4. Полиморфизм – возможность объектов с одинаковой спецификацией иметь различную реализацию. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество 
реализаций». Полиморфизм – один из четырех важнейших механизмов объектно ориентированного программирования (наряду 
с абстракцией, инкапсуляцией и наследованием). Полиморфизм 
позволяет писать более абстрактные программы и увеличить возможность повторного использования кода. Общие свойства объектов объединяются в такие системы, как интерфейс, класс. 
Более подробно принципы ООП будут рассмотрены далее.

1.4. Класс и объект

Итак, класс – это шаблон, или прототип, по которому создаются 
объекты.
Будем использовать унифицированный язык моделирования 
UML (англ. Unifi ed Modeling Language ) для визуализации класса.
Диаграмма классов является ключевым элементом в объектно 
ориентированном моделировании. На диаграмме (см. рис. 1.1) 
классы изображаются в рамках, содержащих три компонента:
1. В верхней части написано имя класса. Имя класса выравнивается по центру и пишется полужирным шрифтом. Имена классов 

1. ОСНОВЫ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

начинаются с заглавной буквы. Если класс абстрактный – то его имя 
пишется полужирным курсивом.
2. В средней части располагаются переменные-члены класса 
(поля, атрибуты), которые представляют собой статические свойства класса. Они выравниваются по левому краю и начинаются 
с маленькой буквы.
3. Нижняя часть диаграммы содержит методы класса, определяющие его динамическое поведение. Они также выровнены по левому 
краю и пишутся с маленькой буквы (см. рис. 1.1):

Имя

статические свойства

динамическое поведение

Рис. 1.1. Диаграмма класса

Приведем примеры изображения классов Student (Студент) 
и Circle (Круг) на диаграмме UML (см. рис. 1.2):

Рис.1.2. Пример изображения классов Student  и Circle на диаграмме

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