ООП и 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 (композиция) – часть целого
– Часть не может существовать отдельно от целого
Диаграммы последовательности
• Диаграммы взаимодействия
описывают взаимодействие
групп объектов в различных
условиях

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.
    Наследование и полиморфизм Runtimetype information (RTTI) • Upcasting (восходящее преобразование) – интерпретация ссылки на объект как ссылки на базовый класс) • Downcasting (нисходящее преобразование) – instanceof – ClassCastExeption
  • 11.
    Интерфейсы в Java •Интерфейсы содержат только объявления методов и (или) констант • Реализация интерфейса – с помощью ключевого слова implements • Что будет, если реализовать не все методы интерфейса?
  • 12.
    Множественное наследование • Дляклассов можно использовать только единичное наследование • Вместо множественного наследования можно использовать интерфейсы и агрегацию • Для интерфейсов разрешено множественное наследование
  • 13.
  • 14.
    Основы UML • UML– универсальный язык моделирования, созданный для прототипирования программного обеспечения и других систем • Идеология UML – система описывается в терминах взаимодействия объектов с помощью графических диаграмм • Диаграммы используются для формализации требований, выполнения анализа, проектирования решения и описания процесса развёртывания
  • 15.
    Use Cases • Надиаграмме вариантов использования (use cases) изображаются возможные варианты использования системы с точки зрения пользователя системы (взгляд на систему, как на «чёрный ящик»)
  • 16.
    Диаграммы классов • Надиаграмме классов изображаются поля и методы классов, а также отношения между классами
  • 17.
    Диаграммы классов • Надиаграмме классов, кроме прочего, изображается реализация и использование интерфейсов
  • 18.
    Типы взаимосвязей • Association(ассоциация) • Aggregation (агрегация) – часть целого – Часть может существовать отдельно от целого • Composition (композиция) – часть целого – Часть не может существовать отдельно от целого
  • 19.
    Диаграммы последовательности • Диаграммывзаимодействия описывают взаимодействие групп объектов в различных условиях