Java. Lecture 03. OOP and UML

1,622 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,622
On SlideShare
0
From Embeds
0
Number of Embeds
173
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java. Lecture 03. OOP and UML

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

×