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

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

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

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

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

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

e-mail: oop.misis@gmail.com

extern (ключевое слово)

объявление

функции

переменной

пример:

// в a.cpp

int gObjectsCounter(0);

// в b.cpp

extern int gObjectsCounter;

31.03.2012

cppNewb.ru

2

static (ключевое слово)

глобальная статическая переменная

область видимости ограничивается единицей трансляции

локальная статическая переменная

значение сохраняется между вызовами

31.03.2012

cppNewb.ru

3

Статическая переменная (пример)

// в point.cpp

static gModuleCallsCount(0);

int inside(const Pt& p, const Rect& rc)

{

static nFuncCallsCount(0);

nFuncCallsCount += 1; gModuleCallsCount += 1; // плохо

...

}

31.03.2012

cppNewb.ru

4

Статический член класса

является частью класса, но не экземпляра

д.б. где-то определен

31.03.2012

cppNewb.ru

5

Статический член класса

(пример)

пример:

// в point.h class Point

{

public:

static int getRefPoint();

private:

static int m_xRefPoint;

};

// в point.cpp

int CPoint::m_xRefPoint = 0;

31.03.2012

cppNewb.ru

6

Доступ к статическому члену класса

• через экземпляр

CPoint point;

point.getRefPoint();

• через имя класса

CPoint::getRefPoint();

31.03.2012

cppNewb.ru

7

Реализация повторного использования кода

создание новых классов на основе существующих

агрегация (готовых компонент)

наследование

31.03.2012

cppNewb.ru

8

Идея

программа моделирует реальность

классы моделируют концепции реального и программного мира

существуют отношения концепций

язык С++ поддерживает моделирование концепций и некоторых типов отношений с помощью пользовательских типов

31.03.2012

cppNewb.ru

9

Композиция (отношение)

способ создания новых классов

новый класс включает поля

существующих типов (классов)

31.03.2012

cppNewb.ru

10