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

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

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

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

с использованием C++

Полевой Дмитрий Валерьевич к.т.н., доцент КиК

e-mail: oop.misis@gmail.com

АТД

•абстрактный тип данных

–создание/уничтожение

–набор операций

•структура данных – реализация АТД

10.03.2010

cppNewb.ru

2

Интерфейс

•семантическая и синтаксическая конструкция

•спецификация услуг

10.03.2010

cppNewb.ru

3

Класс

•реализует одну или несколько абстракций

•интерфейс

–открытые методы

–функции

•закон “протекающих абстракций”

10.03.2010

cppNewb.ru

4

АТД “число”

•создание

•уничтожение

•присваивание

•сравнение

==, !=, <, <=, >, >=

• арифметические операции

-, +=, +, -=, -, *=, *, /=, /

• ввод и вывод

10.03.2010

cppNewb.ru

5

Рациональное число (класс)

Rnum(const int num, const int denum) Rnum(const Rnum& num)

~Rnum()

Rnum& operator=(const Rnum& rhs)

bool operator==(const Rnum& rhs) const bool operator<(const Rnum& rhs) const bool operator!=(const Rnum& rhs,

const Rnum& rhs)

…

10.03.2010

cppNewb.ru

6

Рациональное число (класс)

Rnum& operator++()

Rnum operator++(int)

Rnum& operator+=(const Rnum& rhs)

Rnum operator+(const Rnum& lhs, const Rnum& rhs)

ostream& operator<<(ostream& ostr, const Rnum& num)

istream& operator>>(istream& istr, Rnum& num)

10.03.2010

cppNewb.ru

7

АТД “динамический массив”

•создание

•уничтожение

•получение доступа к элементу по индексу

•получение размера

•изменение размера

10.03.2010

cppNewb.ru

8

Динамический массив (класс)

Array(const size_t size) Array(const Array& arr) ~Array()

Array& operator=(const Array& arr)

T& at(const size_t index)

const T& at(const size_t index) const size_t size(SArray& arr) const

void resize(const size_t newSize)

10.03.2010

cppNewb.ru

9

Раздельная компиляция

•компилятор (compiler)

–компиляция независимых компонент

–генерация объектного кода

•компоновщик (linker)

–связывание объектного кода

–генерация исполняемого кода

•преодоление ограничений компилятора

•повторное использование

106.03.2010

cppNewb.ru

10