лекции программирование / polevoy_cpp_2012_spring_lecture_04
.pdfОбъектно-ориентированное программирование
с использованием C++
Полевой Дмитрий Валерьевич к.т.н., доцент КиК
e-mail: oop.misis@gmail.com
Базовые принципы ООП
0.абстракция
1.инкапсуляция
2.наследование
3.полиморфизм
03.03.2012 |
www.cppNewb.ru |
2 |
Повторное использование кода
•уменьшение “стоимости” создания и поддержки ПО
–разработка
–отладка и тестирование
–сопровождение
–модификация
•эффекты “массовости”
03.03.2012 |
www.cppNewb.ru |
3 |
Реализация повторного использования кода
•модульность – использование готовых компонент (классы, библиотеки)
•создание новых классов на основе
существующих
–инстанциирование (шаблоны)
–наследование
03.03.2012 |
www.cppNewb.ru |
4 |
Проблема повторного использования алгоритмов
•один и тот же алгоритм может обрабатывать данные разных типов
пример:
int
minimum(int lhs, int rhs)
{
return (lhs < rhs) ? lhs : rhs;
}
03.03.2012 |
www.cppNewb.ru |
5 |
Как использовать алгоритм
сразными типами?
•copy-past
–размножение “одинаковых сущностей” и внесение новых ошибок
–усложнение поддержки кода
•макрос
–усложнение отладки и поддержки
пример:
#define min(ls, rs) ((ls < rs) ? ls : rs)
03.03.2012 |
www.cppNewb.ru |
6 |
Как использовать алгоритм
сразными типами?
•реализовать шаблонный код
пример:
template<class T> T
min(const T& lhs, const T& rhs)
{
return (lhs < rhs) ? lhs : rhs;
}
03.03.2012 |
www.cppNewb.ru |
7 |
Ключевые слова
•template
–описание параметризации шаблонна
•class и typename
–именование параметра
пример:
template<class T>
или
template<typename T>
03.03.2012 |
www.cppNewb.ru |
8 |
Структура шаблонного кода
template<“параметры”> “объявление”
template<“параметры”> “определение”
03.03.2012 |
www.cppNewb.ru |
9 |
Шаблон (template)
•в определении (класса или функции) используется один или несколько неизвестных (именованных) типов
•типы должны быть известны в момент компиляции программы
03.03.2012 |
www.cppNewb.ru |
10 |