лекции программирование / polevoy_cpp_2012_spring_lecture_08
.pdfОбъектно-ориентированное программирование
с использованием 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 |