- •Методичні вказівки
- •1 Директивипрепроцесора. Багатомодульне програмування
- •1.1 Мета роботи
- •1.2 Вказівки щодо організації самостійної роботи студентів
- •1.3 Порядок виконання роботи
- •1.4 Контрольні запитання та завдання
- •1.5 Завдання
- •1.6 Варіанти завдань
- •1.7 Контрольний приклад
- •2.1 Мета роботи
- •2.2 Вказівки щодо організації самостійної роботи студентів
- •2.3 Порядок виконання роботи
- •2.4 Контрольні запитання та завдання
- •2.5 Завдання
- •2.6 Варіанти завдань
- •2.7 Контрольний приклад
- •3 Файлові потоки мови с
- •3.1 Мета роботи
- •3.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •3.3 Порядок виконання роботи
- •3.4 Контрольні запитання та завдання
- •3.5 Завдання
- •3.6 Варіанти завдань
- •3.7 Контрольний приклад
- •4 Перегрузка операцій
- •4.1 Мета роботи
- •4.2 Вказівки щодо організації самостійної роботи студентів
- •4.3 Порядок виконання роботи
- •5.1 Мета роботи
- •5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты
- •Инкапсуляция
- •Конструктор
- •Деструктор
- •Указатели на объекты
- •Операции new и delete
- •5.3 Порядок виконання роботи
- •5.4 Контрольні запитання та завдання
- •5.5 Завдання
- •5.6 Варіанти завдань
- •5.7 Контрольний приклад
- •6 Наслідування, поліморфізм, інкапсуляция
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Наследование
- •Уровни доступа
- •Виртуальные функции
- •Механизм работы виртуальных функций
- •Полиморфизм
- •Множественное наследование
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •6.7 Контрольний приклад
- •Рекомендована література
- •61166 Харків, просп. Леніна, 14.
Инкапсуляция
Инкапсуляция в объектно-ориентированном программировании — это сокрытие деталей реализации класса. Класс вводит еще одну область видимости (другие области это файл, функция, блок, прототип функции, пространство имен). В пределах класса видимы все его компоненты, за пределами — только некоторые.
Спецификации доступа public и private регулируют видимость компонент извне.
Пример. Данные класса date скрыты от пользователя, а методы открыты.
class date
{
private:
int day, month, year;
public:
void set (int,int,int);
...
};
Члены класса всегда можно именовать, применяя операцию разрешения области видимости, например, вместо
int day, month, year;
в объявлении класса можно написать
int date::day, date::month, date::year;
но обычно операция разрешения видимости применяется за пределами объявления класса.
Конструктор
После создания объекта в памяти все его данные должны получить значения. Конструктор — это функция, специально предназначенная для инициализации объекта. Конструктор носит то же имя, что и класс и не возвращает значения. Класс может иметь несколько конструкторов.
Пример. Класс с тремя конструкторами.
class date {
int day, month, year;
public:
date(int,int,int);
date(char*);
date();
};
Конструктор вызывается тогда, когда создается объект. Благодаря конструкторам, оператор объявления в С++ вызывает выполнение действий.
Примеры инициализации объектов:
int main(int argc, char* argv[])
{
date d1 = date(19, 10, 2001);
date d2(19, 10, 2001); // то же, но сокращенно
date d3 = date("19-Oct-2001");
date d4 = "19-Oct-2001"; // когда в конструкторе ровно 1 параметр
date d5; // работает конструктор без параметров
return 0;
}
Если программист не определил конструктор, транслятор сам строит конструктор по умолчанию, который не имеет параметров и ничего не делает. При наличии в классе других конструкторов конструктор без параметров требует от программиста явного определения.
Деструктор
Деструктор решает задачу, обратную задаче конструктора. Он вызывается всякий раз, когда объект уничтожается. Имя деструктора состоит из знака тильды “~” и имени класса. Например,
~date() .
Деструктор не имеет аргументов и не возвращает значения. Компилятор сам генерирует деструктор, если программист его не определил. Когда объект выходит из области видимости, деструктор вызывается автоматически.
Указатели на объекты
Объявление date* p создает указатель на объект класса date. Если p указывает на объект, обратиться к его членам можно при помощи операций (*p).set(), но для этого существует специальная операция косвенного выбора
p->set()
Указателю можно присвоить адрес уже существующего объекта.
date d1;
date* p = &d1;
Каждый объект имеет указатель на себя, который обозначается идентификатором this. Он является скрытым параметром каждой функции-члена. Для класса X указатель this имеет тип:
X* const this;
Функцию-член можно объявить так, чтобы поля объекта были доступны ей только для чтения
int readme() const {/*тело функции*/};
Указатель this, передаваемый такой функции, будет иметь тип:
const X *const this.