SlideShare une entreprise Scribd logo
1  sur  19
ООП и UML
Продолжение истории классов и
объектов
Инкапсуляция – важный
принцип ООП
Однако, на инкапсуляции
история классов и объектов
не заканчивается
Наследование
– создание новых классов с использованием уже
описанных классов (Simula, 1967)
Наследование
• Уточнение: класс-потомок добавляет некоторые существенные
черты к родительскому состоянию, добавляет особое
поведение
• Перекрытие: класс-потомок изменяет некоторые аспекты
поведения класса-родителя, перекрывая методы последнего
• Повторное использование кода: поведение и состояние
можно изменять, не дублируя код
Наследование в Java
• Наследование с помощью ключевого слова extends
• Только единичное наследование
• Только public наследование
• По умолчанию – наследование от java.lang.Object
• К классу-родителю можно обратиться с помощью super
• Наследование можно запретить, используя final
Окружность –
частный случай эллипса?
Классическая проблема
неправильного использования наследования
Перекрытие методов
• Для перекрытия методов достаточно в классе-потомке объявить
метод с той же сигнатурой, что и в классе-родителе
• Перекрытие методов можно запретить, пометив метод
ключевым словом final
• static методы нельзя перекрывать, их можно только скрывать
• Начиная с Java 5, перекрывающие методы рекомендуется
помечать аннотацией @Override
Абстрактные классы и методы
• Абстрактные методы не имеют тела
• Абстрактный метод помечается ключевым словом abstract
• Если в классе есть абстрактный метод, то и класс необходимо
пометить ключевым словом abstract
Полиморфизм
– способность объектов одного типа вести себя
подобно объектам другого типа
Наследование и полиморфизм
Runtime type information (RTTI)
• Upcasting (восходящее преобразование) – интерпретация
ссылки на объект как ссылки на базовый класс)
• Downcasting (нисходящее преобразование)
– instanceof
– ClassCastExeption
Интерфейсы в Java
• Интерфейсы содержат только объявления методов и (или)
констант
• Реализация интерфейса – с помощью ключевого слова
implements
• Что будет, если реализовать не все методы интерфейса?
Множественное наследование
• Для классов можно использовать только единичное
наследование
• Вместо множественного наследования можно использовать
интерфейсы и агрегацию
• Для интерфейсов разрешено множественное наследование
Наследование и полиморфизм
(пример)
Основы UML
• UML – универсальный язык моделирования, созданный для
прототипирования программного обеспечения и других систем
• Идеология UML – система описывается в терминах
взаимодействия объектов с помощью графических диаграмм
• Диаграммы используются для формализации требований,
выполнения анализа, проектирования решения и описания
процесса развёртывания
Use Cases
• На диаграмме вариантов использования (use cases)
изображаются возможные варианты использования системы с
точки зрения пользователя системы (взгляд на систему, как на
«чёрный ящик»)
Диаграммы классов
• На диаграмме классов изображаются поля и методы классов, а
также отношения между классами
Диаграммы классов
• На диаграмме классов, кроме прочего, изображается
реализация и использование интерфейсов
Типы взаимосвязей
• Association (ассоциация)
• Aggregation (агрегация) – часть целого
– Часть может существовать отдельно от целого
• Composition (композиция) – часть целого
– Часть не может существовать отдельно от целого
Диаграммы последовательности
• Диаграммы взаимодействия
описывают взаимодействие
групп объектов в различных
условиях

Contenu connexe

Tendances

Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объектыphearnot
 
Формирование описания грамматики языка программирования Modelica и его внедр...
Формирование описания грамматики языка программирования Modelica  и его внедр...Формирование описания грамматики языка программирования Modelica  и его внедр...
Формирование описания грамматики языка программирования Modelica и его внедр...Boris Chumichev
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.Unguryan Vitaliy
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.Unguryan Vitaliy
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Unguryan Vitaliy
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objectsolegol
 
Основы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсыОсновы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсыSergey Nemchinsky
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoFUnguryan Vitaliy
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.Unguryan Vitaliy
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. ПеречисленияюUnguryan Vitaliy
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...Alexey Neznanov
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подходаAndrey Radionov
 
Java. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and ObjectsJava. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and Objectscolriot
 
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...HappyDev-lite
 

Tendances (20)

Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
02 - Классы и Объекты
02 - Классы и Объекты02 - Классы и Объекты
02 - Классы и Объекты
 
Формирование описания грамматики языка программирования Modelica и его внедр...
Формирование описания грамматики языка программирования Modelica  и его внедр...Формирование описания грамматики языка программирования Modelica  и его внедр...
Формирование описания грамматики языка программирования Modelica и его внедр...
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objects
 
Основы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсыОсновы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсы
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
 
принципы объектного подхода
принципы объектного подходапринципы объектного подхода
принципы объектного подхода
 
Slick demo
Slick demoSlick demo
Slick demo
 
Java. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and ObjectsJava. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and Objects
 
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...
HappyDev-lite-2016-весна 05 Евгений Тюменцев. Не все технологии одинаково по...
 
Scala: introduction
Scala: introductionScala: introduction
Scala: introduction
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
java 8
java 8java 8
java 8
 

En vedette

Evolving Software with Moose
Evolving Software with MooseEvolving Software with Moose
Evolving Software with MooseDave Cross
 
Battersea Election Candidates on the Internet
Battersea Election Candidates on the InternetBattersea Election Candidates on the Internet
Battersea Election Candidates on the InternetDave Cross
 
Yapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line PerlYapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line PerlBruce Gray
 
A very nice presentation on Moose.
A very nice presentation on Moose.A very nice presentation on Moose.
A very nice presentation on Moose.Chankey Pathak
 
Moose - YAPC::NA 2012
Moose - YAPC::NA 2012Moose - YAPC::NA 2012
Moose - YAPC::NA 2012xSawyer
 

En vedette (7)

Moose
MooseMoose
Moose
 
Evolving Software with Moose
Evolving Software with MooseEvolving Software with Moose
Evolving Software with Moose
 
Battersea Election Candidates on the Internet
Battersea Election Candidates on the InternetBattersea Election Candidates on the Internet
Battersea Election Candidates on the Internet
 
Yapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line PerlYapc::NA::2009 - Command Line Perl
Yapc::NA::2009 - Command Line Perl
 
A very nice presentation on Moose.
A very nice presentation on Moose.A very nice presentation on Moose.
A very nice presentation on Moose.
 
Modern Perl
Modern PerlModern Perl
Modern Perl
 
Moose - YAPC::NA 2012
Moose - YAPC::NA 2012Moose - YAPC::NA 2012
Moose - YAPC::NA 2012
 

Similaire à Java. Lecture 03. OOP and UML

разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)Alexander Gornik
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroAnton Moiseenko
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
SOLID Principles in the real world
SOLID Principles in the real worldSOLID Principles in the real world
SOLID Principles in the real worldEPAM
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
основы ооп
основы оопосновы ооп
основы оопDmitry Savin
 
C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. Igor Shkulipa
 
Построение образовательного сайта с системой интерактивного тестирования на б...
Построение образовательного сайта с системой интерактивного тестирования на б...Построение образовательного сайта с системой интерактивного тестирования на б...
Построение образовательного сайта с системой интерактивного тестирования на б...Alexey Kostin
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7Technopark
 
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияAlexander Nemanov
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLSergey Nemchinsky
 

Similaire à Java. Lecture 03. OOP and UML (20)

разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)
 
Uml
UmlUml
Uml
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
SOLID Principles in the real world
SOLID Principles in the real worldSOLID Principles in the real world
SOLID Principles in the real world
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
основы ооп
основы оопосновы ооп
основы ооп
 
C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16. C++ Базовый. Занятие 16.
C++ Базовый. Занятие 16.
 
Design principles
Design principles Design principles
Design principles
 
Построение образовательного сайта с системой интерактивного тестирования на б...
Построение образовательного сайта с системой интерактивного тестирования на б...Построение образовательного сайта с системой интерактивного тестирования на б...
Построение образовательного сайта с системой интерактивного тестирования на б...
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
C++ осень 2012 лекция 7
C++ осень 2012 лекция 7C++ осень 2012 лекция 7
C++ осень 2012 лекция 7
 
Обзор Ruby
Обзор RubyОбзор Ruby
Обзор Ruby
 
GRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного ПроектированияGRASP – паттерны Объектно-Ориентированного Проектирования
GRASP – паттерны Объектно-Ориентированного Проектирования
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
Шаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UMLШаблоны разработки ПО. Часть 2. ООП и UML
Шаблоны разработки ПО. Часть 2. ООП и UML
 

Plus de colriot

Java. Lecture 12. Development Tools
Java. Lecture 12. Development ToolsJava. Lecture 12. Development Tools
Java. Lecture 12. Development Toolscolriot
 
Java. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMSJava. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMScolriot
 
Java. Lecture 09. Network Programming
Java. Lecture 09. Network ProgrammingJava. Lecture 09. Network Programming
Java. Lecture 09. Network Programmingcolriot
 
Java. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded ProgrammingJava. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded Programmingcolriot
 
Java. Lecture 01. Introducing Java
Java. Lecture 01. Introducing JavaJava. Lecture 01. Introducing Java
Java. Lecture 01. Introducing Javacolriot
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLcolriot
 
Java. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML BasicsJava. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML Basicscolriot
 
Java. Lecture 06. I/O
Java. Lecture 06. I/OJava. Lecture 06. I/O
Java. Lecture 06. I/Ocolriot
 
Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debuggingcolriot
 
Java. Lecture 04. Standart Library
Java. Lecture 04. Standart LibraryJava. Lecture 04. Standart Library
Java. Lecture 04. Standart Librarycolriot
 

Plus de colriot (10)

Java. Lecture 12. Development Tools
Java. Lecture 12. Development ToolsJava. Lecture 12. Development Tools
Java. Lecture 12. Development Tools
 
Java. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMSJava. Lecture 10. Working with DBMS
Java. Lecture 10. Working with DBMS
 
Java. Lecture 09. Network Programming
Java. Lecture 09. Network ProgrammingJava. Lecture 09. Network Programming
Java. Lecture 09. Network Programming
 
Java. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded ProgrammingJava. Lecture 08. Multithreaded Programming
Java. Lecture 08. Multithreaded Programming
 
Java. Lecture 01. Introducing Java
Java. Lecture 01. Introducing JavaJava. Lecture 01. Introducing Java
Java. Lecture 01. Introducing Java
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
 
Java. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML BasicsJava. Lecture 06.1. XML Basics
Java. Lecture 06.1. XML Basics
 
Java. Lecture 06. I/O
Java. Lecture 06. I/OJava. Lecture 06. I/O
Java. Lecture 06. I/O
 
Java. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and DebuggingJava. Lecture 05. Handling Exceptions and Debugging
Java. Lecture 05. Handling Exceptions and Debugging
 
Java. Lecture 04. Standart Library
Java. Lecture 04. Standart LibraryJava. Lecture 04. Standart Library
Java. Lecture 04. Standart Library
 

Java. Lecture 03. OOP and UML

  • 1. ООП и UML Продолжение истории классов и объектов
  • 2. Инкапсуляция – важный принцип ООП Однако, на инкапсуляции история классов и объектов не заканчивается
  • 3. Наследование – создание новых классов с использованием уже описанных классов (Simula, 1967)
  • 4. Наследование • Уточнение: класс-потомок добавляет некоторые существенные черты к родительскому состоянию, добавляет особое поведение • Перекрытие: класс-потомок изменяет некоторые аспекты поведения класса-родителя, перекрывая методы последнего • Повторное использование кода: поведение и состояние можно изменять, не дублируя код
  • 5. Наследование в Java • Наследование с помощью ключевого слова extends • Только единичное наследование • Только public наследование • По умолчанию – наследование от java.lang.Object • К классу-родителю можно обратиться с помощью super • Наследование можно запретить, используя final
  • 6. Окружность – частный случай эллипса? Классическая проблема неправильного использования наследования
  • 7. Перекрытие методов • Для перекрытия методов достаточно в классе-потомке объявить метод с той же сигнатурой, что и в классе-родителе • Перекрытие методов можно запретить, пометив метод ключевым словом final • static методы нельзя перекрывать, их можно только скрывать • Начиная с Java 5, перекрывающие методы рекомендуется помечать аннотацией @Override
  • 8. Абстрактные классы и методы • Абстрактные методы не имеют тела • Абстрактный метод помечается ключевым словом abstract • Если в классе есть абстрактный метод, то и класс необходимо пометить ключевым словом abstract
  • 9. Полиморфизм – способность объектов одного типа вести себя подобно объектам другого типа
  • 10. Наследование и полиморфизм Runtime type information (RTTI) • Upcasting (восходящее преобразование) – интерпретация ссылки на объект как ссылки на базовый класс) • Downcasting (нисходящее преобразование) – instanceof – ClassCastExeption
  • 11. Интерфейсы в Java • Интерфейсы содержат только объявления методов и (или) констант • Реализация интерфейса – с помощью ключевого слова implements • Что будет, если реализовать не все методы интерфейса?
  • 12. Множественное наследование • Для классов можно использовать только единичное наследование • Вместо множественного наследования можно использовать интерфейсы и агрегацию • Для интерфейсов разрешено множественное наследование
  • 14. Основы UML • UML – универсальный язык моделирования, созданный для прототипирования программного обеспечения и других систем • Идеология UML – система описывается в терминах взаимодействия объектов с помощью графических диаграмм • Диаграммы используются для формализации требований, выполнения анализа, проектирования решения и описания процесса развёртывания
  • 15. Use Cases • На диаграмме вариантов использования (use cases) изображаются возможные варианты использования системы с точки зрения пользователя системы (взгляд на систему, как на «чёрный ящик»)
  • 16. Диаграммы классов • На диаграмме классов изображаются поля и методы классов, а также отношения между классами
  • 17. Диаграммы классов • На диаграмме классов, кроме прочего, изображается реализация и использование интерфейсов
  • 18. Типы взаимосвязей • Association (ассоциация) • Aggregation (агрегация) – часть целого – Часть может существовать отдельно от целого • Composition (композиция) – часть целого – Часть не может существовать отдельно от целого
  • 19. Диаграммы последовательности • Диаграммы взаимодействия описывают взаимодействие групп объектов в различных условиях