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

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

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

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

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