- •1 Парадигми та мови програмування
- •1.1 Процедурне програмування
- •1.2 Об'єктне (модульне) програмування
- •1.3 Об'єктно-орієнтовне програмування
- •2 Програмне середовище
- •3 Базові поняття програмування
- •4 Процедурно-орієнтоване програмування
- •4.1 Функції
- •4.2 Вбудовані (inline) функції
- •4.3 Передача параметрів
- •4.4 Обчислення значення функцій
- •4.4. Обчислення значення функції — вихід із функції; особливості повернення та використання іменованого значення, іменованої константи
- •4.5 Рекурсія
- •4.5. Рекурсія
- •4.6 Довизначення (overloading) функцій
- •4.6. Довизначення (overloading) функцій
- •4.7 Узагальнені функції (function template)
- •4.8 Непряме використання функцій: указники на функції, їх тип, ініціалізація і присвоєння
- •4.9 Видимість
- •4.10 Тривалість життя об’єктів
- •5 Об'єктне програмування
- •5.1 Класи і об'єкти, члени класів
- •5.2 Інтерфейс класу, реалізація класу; визначення і оголошення класу
- •5.3 Створення і ініціалізація об'єктів, довизначення конструкторів, замовчуваний конструктор, копіювання, поверхневе і глибоке копіювання, ініціалізація і присвоєння, копіювальний конструктор
- •5.4 Cтатичні члени класів і статичні класні функції
- •5.5 Константні об'єкти, константні функції, змінювані члени константних об'єктів (mutable)
- •5.6 Поточний об'єкт this, указники на члени класу і класні функції, порівняння з указниками на (позакласні) функції, указники на статичні члени класу
5.6 Поточний об'єкт this, указники на члени класу і класні функції, порівняння з указниками на (позакласні) функції, указники на статичні члени класу
Поточний об'єкт this, указники на члени класу і класні функції, порівняння з указниками на (позакласні) функції, указники на статичні члени класу
Тепер подивимося, як методи дістаються до своїх атрибутів. Наприклад, визначимо
два вікна
const Screen w(4,3,"aaaabbbbcccc");
Screen u(w);
кожен з них змінить значення свого курсору, так що присвоєння
_cursor = _width*i + j;
застосовується до свого атрибуту:
w._cursor == 11
а
u._cursor == 14.
Як бачимо, метод, активізований об'єктом, повинен знати, який саме об'єкт,
його активізував. Для цього існує указник поточного об'єкту this , його тип
Screen* . Отже повний текст будь-якого методу, наприклад, методу move мав би
наступний вигляд
void Screen::move(int i, int j) const
{
if ((i>=this->_height) || (j>=this->_width))
this->_cursor=0;
else
this->_cursor = this->_width*i + j;
};
або для копіювального конструктора
Screen::Screen(const Screen& v)
{
this->_filler = v._filler;
this->_height = v._height;
this->_width = v._width;
this->_wContent = new char [_height*_width+1];
strcpy(this->_wContent,v._wContent);
this->_cursor=v._cursor;
}
Ясно, що в усіх цих випадках діє правило замовчування: “безпритульні” атрибути
і методи