Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль классов и объектов в анализе и проектировании
Давайте вспомним
Давайте вспомним
Давайте вспомним
Давайте вспомним
Давайте вспомним
План занятия:
Введение в объектно-ориентированное программирование
Что такое ООП?
Почему это актуально?
Историческая справка
Историческая справка
Историческая справка
Историческая справка
Основные принципы ООП
Основные принципы ООП
Абстракция
Пример
Пример
Инкапсуляция
Пример
Пример
Наследование
Пример
Виды наследования
Полиморфизм
Пример
Преимущества и недостатки ООП
Преимущества ООП
Недостатки ООП
Что такое класс?
Класс
Структура класса
Пример класса
Структура класса
Пример класса в C++
Важное о классах
Что такое объект?
Объект в ООП – это…
Пример
Коротко о важном
Коротко о главном
Коротко о главном
Коротко о главном
Коротко о главном
Классы и предметная область
Вспомним!
Как из анализа появляются классы?
Пример: интернет-магазин
Классы как результат анализа
Домашнее задание
Мир вокруг нас
3.24M
Category: programmingprogramming

Лекция 12 ООП

1. Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль классов и объектов в анализе и проектировании

ОСНОВЫ ОБЪЕКТНООРИЕНТИРОВАННОГО ПОДХОДА К
РАЗРАБОТКЕ ПО. КЛАССЫ
И ОБЪЕКТЫ.
C
РОЛЬ КЛАССОВ И ОБЪЕКТОВ В
АНАЛИЗЕ И ПРОЕКТИРОВАНИИ
Раздел 2. Методы проектирования и программирования ПО

2. Давайте вспомним

Что такое база данных?
База данных (БД) — это организованная
совокупность данных, предназначенная для
долговременного хранения, быстрого поиска,
обновления и управления информацией.

3. Давайте вспомним

Что такое IDEF1X?
IDEF1X (Integration Definition for Information
Modeling, версия 1X) — это стандарт,
разработанный для моделирования данных
и проектирования реляционных баз данных.

4. Давайте вспомним

Какие виды связей вы знаете? Опиши их.
Идентифицирующая и неидентифицирующая

5. Давайте вспомним

Какие мощности связей вы знаете? Опиши их.
Один-к-одному (1:1), Один-ко-многим (1:N),
Многие-ко-многим (N:N)

6. Давайте вспомним

Сколько нормальных форм вы знаете?
3 нормальных форм

7. План занятия:

• Введение в объектно-ориентированного
программирования;
• Основные принципы объектно-ориентированного
программирования;
• Классы и объекты;
• Роль классов и объектов в анализе и проектировании ПО;
• Сравнение объектно-ориентированного
программирования с другими подходами.

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

ВВЕДЕНИЕ В ОБЪЕКТНООРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
C
Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль
классов и объектов в анализе и проектировании

9. Что такое ООП?

Объектноориентированное
программирование
(ООП) — это подход, при
котором программа
рассматривается как
набор объектов,
взаимодействующих друг
с другом.

10. Почему это актуально?

1.Программы становятся всё сложнее;
2.ООП ближе к реальному миру;
3.ООП повышает удобство и читаемость кода;
4.Масштабируемость и переиспользование
кода;
5.ООП – стандарт в большинстве современных
языков программирования.

11. Историческая справка

• 1960-1970-е гг. – понимание
трудности реализации
больших проектов с
помощью процедурного
подхода. Появление первых
концепций ООП.

12. Историческая справка

• 1980-е гг. - внедрение ООП
в коммерческие
разработки, появление
объектно-ориентированных
языков программирования.

13. Историческая справка

• 1990-е гг. – ООП –
основная технология
разработки ПО.
Развитие стандартов
проектирования, UML,
появление комплексных
подходов разработки
(функциональное
программирование +
ООП)

14. Историческая справка

• Современность – стандарт для
разработки большинства
приложений. Появление объектноориентированного проектирования,
объектно-ориентированного
анализирования, развитие концепций
ООП.

15. Основные принципы ООП

ОСНОВНЫЕ
ПРИНЦИПЫ ООП
C
Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль
классов и объектов в анализе и проектировании

16. Основные принципы ООП

• Абстракция
• Инкапсуляция
• Наследование
• Полиморфизм

17. Абстракция

Абстракция — это
процесс выделения
значимых
характеристик
объекта, игнорируя
несущественные.
В программировании это означает
создание модели реального объекта
с помощью класса, содержащего
только важные для задачи данные и
действия.

18. Пример

19. Пример

Это машина? Мы можем
её управлять?
Что еще нужно для счастья?

20. Инкапсуляция

Инкапсуляция — это
сокрытие внутреннего
состояния объекта и
ограничение доступа к
его внутренним
данным напрямую.
Объект предоставляет только те
методы (интерфейс), через которые
можно с ним взаимодействовать.

21. Пример

22. Пример

23. Наследование

Наследование
позволяет создавать
новые классы на
основе существующих,
повторно используя их
функциональность и
при необходимости
расширяя или изменяя
поведение.

24. Пример

25. Виды наследования

• Одиночное наследование
• Класс наследуется от одного родительского (базового класса)
• Множественное наследование
• Класс наследуется от нескольких родительских классов.
• Многоуровневое наследование
• Цепочка наследования, когда один класс наследуется от другого, который в
свою очередь – от третьего.
• Иерархическое наследование
• Один базовый класс имеет несколько подклассов.
• Гибридное наследование
• Сочетание нескольких видов наследования: одиночного, множественного,
многоуровневого и иерархического.

26. Полиморфизм

Полиморфизм —
это возможность
использовать один и
тот же интерфейс для
разных типов объектов,
при этом каждый тип
ведёт себя по-своему.
То есть «один интерфейс
— много реализаций».

27. Пример

28. Преимущества и недостатки ООП

ПРЕИМУЩЕСТВА И
НЕДОСТАТКИ ООП
C
Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль
классов и объектов в анализе и проектировании

29. Преимущества ООП

• Повторное использование кода (реюзабилити)
• Упрощённое сопровождение и модификация
• Улучшенная масштабируемость и поддержка
• Отражение реального мира
• Полиморфизм и расширяемость

30. Недостатки ООП

• Сложность начального понимания;
•Избыточность и переусложнение;
• Производительность;
•Сложность в отладке при глубокой иерархии;
• Не всегда подходит для проектов.

31. Что такое класс?

ЧТО ТАКОЕ КЛАСС?
C
Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль
классов и объектов в анализе и проектировании

32. Класс

Класс — это шаблон (или
чертёж), по которому
создаются объекты. Он
описывает структуру и
поведение группы объектов,
обладающих общими
свойствами и методами.
Класс не является объектом, но он
определяет, какие данные и
действия будут у объектов,
созданных на его основе.

33. Структура класса

Поля (атрибуты,
свойства) —
переменные,
описывающие
состояние объекта.
Например: имя
пользователя,
возраст, цена
товара.
Методы (функции) —
действия, которые
может выполнять
объект.
Например:
распечатать
информацию,
изменить состояние,
посчитать итоговую
стоимость.

34. Пример класса

Книга
Поля
Методы
- Название
- Автор
- Количество_страниц
- Прочитать ()
- Намечатать_информацию ()
- Изменить_название ()

35. Структура класса

Конструктор —
специальный
метод, который
автоматически
вызывается при
создании объекта,
чтобы
инициализировать
его поля.
Деструктор (в
некоторых языках) —
метод, вызываемый
при уничтожении
объекта (например,
для освобождения
ресурсов).

36. Пример класса в C++

class Book {
public:
string title;
string author;
int pages;
Поля
Методы
Book(string t, string a, int p) {
title = t;
author = a;
pages = p;
}
void read() {
cout << "Reading " << title << endl;
}
};
Конструктор

37. Важное о классах

•Класс описывает, чем будет обладать объект
(данные + поведение)
•Объект создаётся на основе класса
•Конструктор нужен для инициализации объекта
•Методы позволяют объекту что-то делать

38. Что такое объект?

Объект — это конкретный экземпляр класса,
то есть «реализация» или «представитель»
шаблона, описанного в классе.
Он содержит собственные данные и может
выполнять действия, определённые в классе.
Если класс — это чертёж, то объект — реальная вещь,
созданная по этому чертежу.

39. Объект в ООП – это…

• Набор данных (состояние) — значения полей,
индивидуальные для каждого объекта.
• Методы (поведение) — функции, которые
объект может выполнять.
• Идентичность — каждый объект уникален в
памяти компьютера (даже если имеет те же
значения, что и другой объект).

40. Пример

Класс
Объект
Книга
Книга
- Название
- Автор
- Количество_страниц
- Гарри Поттер и тайная комната
- Дж. Роулинг
- 400
- Прочитать ()
- Намечатать_информацию ()
- Изменить_название ()
- Прочитать ()
- Намечатать_информацию ()
- Изменить_название ()

41. Коротко о важном

Поля (атрибуты) — это переменные, которые
принадлежат объекту. Они хранят данные,
характеризующие текущее состояние объекта.
Можно сказать: поля — это что объект "знает" о себе.
•У объекта «Человек» поля могут быть:
имя, возраст, рост, вес.
•У объекта «Автомобиль»:
марка, модель, цвет, скорость.
•У объекта «Книга»:
название, автор, кол-во страниц.

42. Коротко о главном

Методы — это функции, определённые внутри
класса, которые описывают поведение объектов.
Методы — это что объект умеет делать.
•У объекта Человек:
говорить(), спать(), идти()
•У объекта Автомобиль:
завести(), тормозить(), повернуть()
•У объекта Книга:
прочитать(), распечатать_информацию()

43. Коротко о главном

Конструктор — это специальный метод класса, который
автоматически вызывается при создании объекта. Его задача —
инициализировать объект, то есть задать начальные значения
его полей (атрибутов) и подготовить его к использованию.
Особенности конструктора:
•Имя конструктора зависит от языка программирования:
•В Python — __init__
•В Java, C++, C# — совпадает с именем класса
•Вызывается автоматически при создании объекта
•Может принимать параметры, чтобы передать значения в поля
•В классе может быть один или несколько конструкторов (перегрузка в
некоторых языках)

44. Коротко о главном

Зачем нужен конструктор?
• Чтобы гарантировать корректную инициализацию объекта
• Чтобы не писать инициализацию вручную каждый раз
• Чтобы задать обязательные данные при создании объекта

45. Коротко о главном

Деструктор — это специальный метод, который вызывается
автоматически при уничтожении объекта, чтобы освободить
ресурсы, занятые объектом (например, файлы, память,
соединения с базой данных).
Особенности деструктора:
• Используется реже, чем конструктор
• Не принимает аргументов
• Обычно вызывается автоматически, когда объект удаляется из памяти (в
языках с автоматической сборкой мусора)
• В некоторых языках (например, C++) может быть необходим для
освобождения ресурсов вручную

46. Классы и предметная область

КЛАССЫ И
ПРЕДМЕТНАЯ ОБЛАСТЬ
C
Основы объектно-ориентированного подхода к разработке ПО. Классы и объекты. Роль
классов и объектов в анализе и проектировании

47. Вспомним!

Что такое предметная область?
Предметная область — это та часть реального мира,
которую мы хотим описать в нашей программе.
Что такое анализ предметной области?
Анализ предметной области — это процесс выявления
основных понятий, сущностей и их отношений, которые
существуют в этой области.

48. Как из анализа появляются классы?

Во время анализа:
1.Мы наблюдаем, опрашиваем пользователей,
изучаем процессы.
2.Выделяем ключевые сущности — объекты
реального мира, с которыми взаимодействует
система.
3.Эти сущности и становятся кандидатами в классы.

49. Пример: интернет-магазин

Анализ:
В интернет-магазине можно выделить следующие
реальные объекты:
• Покупатель
• Товар
• Заказ
• Корзина
• Оплата
• Склад

50. Классы как результат анализа

Сущность (в реальности)
Покупатель
Товар
Заказ
Корзина
Оплата
Склад
Класс (в программе)
Customer
Product
Order
Cart
Payment
Inventory

51. Домашнее задание

ДОМАШНЕЕ
ЗАДАНИЕ
C

52. Мир вокруг нас

Выберите объект из реального мира (например, книга);
1. Определите, как назвать класс, который бы описывал этот
объект.
2. Опишите 3-5 полей (атрибутов), которые характеризуют объект.
3. Придумайте 2-3 метода (действий), которые может выполнять
объект.
4. Представьте конкретный экземпляр (объект) данного класса и
опишите его, заполнив атрибуты реальными значениями.
5. Объясните, чем два объекта одного класса могут отличаться друг
от друга.
English     Русский Rules