Similar presentations:
Лекция 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. Объясните, чем два объекта одного класса могут отличаться друг
от друга.
programming