Similar presentations:
Объектно-ориентированное программирование
1. Лекция №2
Объектно-ориентированноепрограммирование.
2. Вопросы
• Что такое ООП?• Связи между классами/объектами;
• Абстракция.
3. Программа выглядит как-то так
0000000:0000010:
0000020:
0000030:
0000040:
0000050:
0000060:
0000070:
0000080:
0000090:
00000a0:
00000b0:
00000c0:
00000d0:
cffa
1000
1900
524f
0000
0000
0000
5f5f
0000
0000
0700
5f5f
5f5f
1810
edfe
0000
0000
0000
0000
0000
0000
5445
0000
0000
0000
7465
5445
0000
0700
f006
4800
0000
0100
0000
0000
5854
0100
0000
0500
7874
5854
0100
0001
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0300
8500
5f5f
0000
0000
0000
1900
0000
0070
0070
0700
0000
0000
0849
0080
2000
5041
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0200
0000
4745
0000
0000
0000
7802
0000
0000
0000
0000
0000
0000
0000
0000
0000
5a45
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
................
.......... .....
....H...__PAGEZE
RO..............
................
................
............x...
__TEXT..........
.........p......
.........p......
................
__text..........
__TEXT..........
.........I......
4. Задача
Спроектировать программу для анализа котировокакций.
Необходимо ответить на вопрос:
Что делает программа?
5. Одно из возможных решений
• Получить данные о цене акций;• Проанализировать акции;
• Сортировать акции согласно выбранным метрикам;
• Вывести список рекомендаций.
----------------• retrieveQuotes();
• analyzeQuotes();
• sortQuotes();
• outputRecommendations().
6. Процедурный способ
1. Процедурный способ проектирования программыхорошо
работает,
когда
есть
линейная
последовательность действий;
2. Процедурный способ не предполагает ничего о способе
представления данных в программе.
Данные и функции их обработки разделены в коде
программы.
7. Объектно-ориентированный способ
Что делает программа?Какие объекты реального мира мы моделируем?
8. Объектно-ориентированный способ
Классы;
Компоненты;
Свойства;
Поведение.
9. ООП: Классы
• Классы – абстрактный тип данных (АТД) в ООП,определяющий
строение/поведение
всех
объектов данного класса;
• Объект – конкретный представитель класса.
10. ООП: Классы
Что такое апельсин?Чем его можно охарактеризовать?
11. ООП: Классы
фрукт;
вкус;
размер;
вес;
цвет;
форма.
…
Класс
Объекты
12. ООП: Классы
class Orange {//свойства
int flavor;
int size;
double weight;
int color;
string shape;
};
Orange o;
o.size = 1; o.color += 1;
13. ООП: Компоненты
• Сложные объекты реального мира состоят измножества компонентов.
Самолет:
фюзеляж;
двигатель;
посадочный механизм;
…
14. ООП: Компоненты
Самолет:фюзеляж;
двигатель;
посадочный механизм:
посадочное колесо;
электромотор;
…
…
15. ООП: Компоненты
class Airplane {//свойства
Engine engine;
Fuselage f;
};
16. ООП: Поведение
Что объект делает?Что можно сделать с объектом?
17. ООП: Поведение
Апельсин•съесть;
•купить/продать;
•почистить;
•катать;
•…
18. ООП: Поведение
class Orange {// поведение
void eat();
void sell();
void buy();
void roll();
};
19. ООП
Спроектировать программу для анализа котировокакций.
-----------•Получить данные о цене акций;
•Проанализировать акции
•Сортировать акции согласно выбранным метрикам.
20. ООП
КотировкаАкций:•название;
•символ;
•цена;
•анализировать;
•купить;
•продать;
class StockQuote {
string name;
char sym;
double price;
void analyze();
void buy();
void sell();
};
21. ООП
КоллекцияКотировокАкций:список котировок;
class StockQuoteCollection
{
StockQuote stocks[10];
получить список котировок;
предоставить сортированный void GetCollection();
список котировок по критерию;
list sortBy();
};
22. ООП: «Overobjectication»
Объекты игры «Крестики-Нолики»Поле
3х3 массив
Ячейки
Х
char
О
char
23. ООП: Слишком общие объекты
Объекты каталога магазина цифровой информации(фильмы, игры, книги, ..):
Цифровая информация:
данные
делать/выполнить
получить
24. ООП: Отношения между объектами
Агрегация (has-a) – отношение между объектами, вкотором объект B является частью объект А.
25. ООП: Отношения между объектами
Наследование (is-a) – отношение между объектами,в котором объект А является объектом B или А
частично похож на В.
Животное
Кот
Собака
Пингвин
26. ООП. Наследование
1. Дочерний класс имеет доступ к свойствами поведению родительского класса (но не
наоборот(!));
2. У одного родительского класса может быть
сколько угодно классов-наследников;
3. Классы могут составлять иерархию
наследования.
27. Для чего можно использовать наследование
Добавление функциональности (поведения);
Замена функциональности (поведения);
Добавление свойств;
Замена свойств.
28. Полиморфизм
Целью полиморфизма, применительно к ООП,является использование одного имени для задания
общих для класса действий.
Животное
(передвигаться)
Кот
Собака
Пингвин
(передвигаться)
(передвигаться)
(передвигаться)
29. Разница между агрегацией (has-a) и наследованием (is-a)
// key -> valueHashtable hashtable;
hashtable.insert(“key”, “value”); // key -> value
hashtable.get(“key”); // value
// key -> [value, value1, ….];
MultiHash multihash;
multihash.insert(“key”, “value”); // [value]
multihash.insert(“key”, “value1”); // [value, value1]
multihash.get(“key”) // [value, value1]
30. Разница между агрегацией (has-a) и наследованием (is-a)
HashtableHashtable
get(),insert()
get(),insert()
has-a
Multihash
Multihash
get(),insert()
get(),insert()
31. Разница между агрегацией (has-a) и наследованием (is-a)
Наследованиеза
Агрегация
• Объекты являются одной • Дочерний объект может
сущностью
с
разными
иметь любое поведение вне
характеристиками;
зависимости от базового
• Дочерний объект реализует
объекта.
такое же поведение, что и
базовый.
проти • Объекты разные по сущности • Отсутствие
в
(Объект переопределяет все
переиспользования
кода
поведение
базового
между объектами;
объекта);
• Некоторые
свойства
• Возможность
базового объекта могут быть
«просочившейся абстракции»
скрыты от дочернего.
32. Иерархия
ЖивотноеОбезьяна
Тигр
Кошки
Жираф
Пантера
Водные
животные
Дельфин
Пингвин
33. Иерархия
+ Организация классов в иерархию согласнологическим связям;
+ Переиспользование объщей
функциональности в базовых классах;
- Переопределение в дочерних классах
слишком большого числа функциональности;
34. ООП. Инкапсуляция
Инкапсуляция – механизм ЯП, с помощьюкоторого выполняется ограничение области
видимости для переменных и функций
классов.
•Ограничение области видимости;
35. ООП. Инкапсуляция
class Pot {private:
double temperature;
public:
void turnOn();
double getTemperature();
void setTemperature(double t);
};
36. ООП. Абстрагирование
Абстрагирование–
техника
программирования, основная идея которой
разделить данные на те, которые важны для
решения
задачи
и
те,
которые
несущественны.
36
37. ООП. Абстрагирование
Пример: объект электрический чайникФункции:
1.Нагревание воды;
2.Показывать температуру;
3.Настроить температуру
37
38. ООП. Абстрагирование
class Pot {double temperature;
public:
void turnOn();
double getTemperature();
void setTemperature(double t);
};