Информатика

Константин Кориков

Тема 8

Программирование на C++: основы ООП

Агенда

  1. Объектно-оринтированное программирование
  2. Структуры и классы в C++
  3. Объекты в стандартной библиотеке

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

Новые понятия

  1. Объект
  2. Класс
  3. Абстракция
  4. Инкапсуляция
  5. Наследование
  6. Полиморфизм

Объект и класс

Абстракция в ООП

Представление сущностей только теми характеристиками, которые существенны в данной задаче, и сокрытие деталей

Инкапсуляция в ООП

Объединение данных и функций над этими данными в рамках одной структуры с сокрытием её внутреннего устройства

Структуры и классы в C++

#### Структура ```cpp struct String { unsigned int length; const char* data; }; ```
#### Структура ```cpp String str; str.length = 1; str.data = "x"; ```
#### Методы ```cpp struct String { String(const char* init) { length = strlen(init); data = new char[length+1]; strcpy(data, init); } unsigned int get_length() { return length; } const char* c_str() { return data; } ~String() { delete[] data; } private: unsigned int length; char* data; }; ```
#### Метод ```cpp String str("test"); cout << str.c_str(); ```
#### Метод ```cpp String str = "test"; // вызывается конструктор с 1 аргументом cout << str.c_str(); ```
#### Метод ```cpp // запрещает инициализацию из предыдущего примера explicit String(const char* init) { length = strlen(init); data = new char[length+1]; strcpy(data, init); } ```
#### Методы ```cpp struct String { String(); String(const char* init); unsigned int get_length(); const char* c_str(); ~String(); private: unsigned int length; char* data; }; String::String() { length = 0; data = new char[1]; data[0] = '\0'; } String::String(const char* init) { cout << "ctor" << endl; length = strlen(init); data = new char[length+1]; strcpy(data, init); } unsigned int String::get_length() { return length; } const char* String::c_str() { return data; } String::~String() { delete[] data; } ```
#### Класс ```cpp class String { unsigned int length; char* data; public: String(); String(const char* init); unsigned int get_length(); const char* c_str(); ~String(); }; ```
#### Операторы ```cpp char operator[](unsigned int pos) { return data[pos]; } ```

Объекты в стандартной библиотеке

String

в стандартной библиотеке C++

constantine.korikov@gmail.com