Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции программирование / polevoy_cpp_2012_spring_lecture_04

.pdf
Скачиваний:
33
Добавлен:
20.04.2015
Размер:
112 Кб
Скачать
☆

Объектно-ориентированное программирование

с использованием 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