и відповідно.
Класи колекцій розділів, глав і сторінок (CRazdels, CGlavas і CPages) мають відкриті члени-функції DeleteRazdels (), DeleteGlavas () і DeletePages () відповідно. Дані члени-функції здійснюють звільнення пам'яті, виділеної під зберігання книги, при відкритті іншої книги або завершенні роботи програми.
У класі книги перевантажені конструктор і деструктор за замовчуванням. Конструктор обнуляє номер поточної сторінки для того, щоб при відкритті нової книги автоматично відображалася перша сторінка. Деструкція запускає механізм звільнення пам'яті. h2> Спрощення класів при використанні успадкування та графічне зображення об'єктної моделі
Об'єктно-орієнтований підхід у програмуванні має одну дуже привабливу рису - можливість повторного використання вже розробленого коду. По-перше, можна використовувати класи, створені іншими розробниками, не піклуючись про деталі реалізації методів усередині класу. Прикладом можуть служити сотні класів з бібліотеки MFC. Але більш суттєві переваги дає повторне використання коду, що реалізовується через механізм спадкування .
Клас, який використовує код іншого класу, називається похідним або подклассом . Клас, який надає свій код іншого класу, називається базовим або суперкласом . Якщо є необхідність надати методам породженого класу можливість прямого доступу до члена-змінної базового класу, замість кваліфікатора доступу private можна використовувати кваліфікатор protected . Може виявитися, що методи базового класу, успадковані породженим класом, не зовсім відповідають специфіці останнього і потребують певної модифікації. Для цього буде потрібно розробити окремий метод Імя_класса :: Метод (). Це і є перевантаження методів базового класу. Якщо бажано, щоб метод імя_класса :: Метод () виконував те ж, що і метод базового класу, а потім і ще щось, то найкращим способом досягти такого результату буде виклик Імя_Базового_Класса :: Метод () всередині імя_класса :: Метод (). Але при цьому потрібно використовувати повне ім'я методу базового класу, тобто саме Імя_Базового_Класса :: Метод (). p> У додатку класи книги, розділу, глави та сторінки успадковані від CObject. Це необхідно для реалізації механізму завантаження документа з файлу - метод Serialize () в цих класах перевантажується також, як і в класі документа:
void CBookDoc :: Serialize (CArchive & ar)
{
m_Book.Serialize (ar);
}
Класи CRazdels, CGlavas і CPages успадковані від класу CObArray. Тому для об'єктів цих класів можна викликати все члени-функції, властиві класу масиву об'єктів.
Об'єктна модель книги
В В В В В В
Реалізація об'єктної моделі на мові програмування C + +
Реалізація класу книги
BookClass. h:
# if _MSC_VER> 100...