Msu.Center.Lectures.J03 Oop And Uml

590 views
485 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
590
On SlideShare
0
From Embeds
0
Number of Embeds
93
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Msu.Center.Lectures.J03 Oop And Uml

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

×