Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції_ІЗВП_укр.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
6 Мб
Скачать
☆

4.Одновіконний додаток

У діалоговому вікні MFC AppWizard - Step 1, зображеного на рис. 1.6, залишилося одне досі не розглянуте положення перемикача What type of application would you like to create?, А саме, Single Document. При установці перемикача в це положення буде створено Одновіконний додаток, який іноді називають ще додатком, що використовує один документ. Цей додаток, за своєю суттю, займає проміжне поло ¬ ження між діалоговим і багатовіконний додатками.

Даний тип програми може використовуватися для обробки конкретного типу документа. При цьому передбачається, що при обробці даного документа не потрібно використання інших документів. Подібні завдання, але без використання документів, вирішує діалогове додаток. Однак такі завдання, як правило, вимагають забезпечення дружнього інтерфейсу користувача. З цієї точки зору діалогові додатки мають велику перевагу в порівнянні з одновіконних застосувань, єдиним достоїнством яких є можливість роботи з документом, за яку доводиться платити зведенням всього користувальницького інтерфейсу до роботи з меню й панелями інструментів.

Зазвичай обробка одного документа припускає можливість одночасного менной роботи з пов'язаними з ним документами, наприклад, дня внесення до них відповідних змін по ходу роботи або одержання з них необхідної інформації. Тому при будь-якій роботі з документами краще відразу передбачати використання багатовіконного інтерфейсу.

У силу зазначених вище причин тут не буде докладно описана процедура створення одновіконних застосувань, тим більше що вона багато в чому аналогічна процедурі створення багатовіконного додатка. Ви можете створити подібний додаток самостійно в якості перевірки своїх знань по роботі з майстром AppWizard.

Контрольні запитання

1. Назвіть етапи створення консольного застосування?

2. Назвіть етапи створення діалогового додатки?

3. Назвіть етапи створення Одновіконний додатка?

4. Назвіть етапи створення багатовіконного програми?

Лекція № 4

Тема: Класи та об‘экти Visual C++. Використання конструкторів та деструкторів у пакеті Visual C++

ПЛАН

1. Поняття класу та об'єкта. Специфікатори доступу до членів класу

2. Оголошення або специфікація класу

3. Реалізація класу

4. Оголошення об'єкта класу. Інкапсуляція. Переваги інкапсуляції. Конструктори і деструктори.

1. Поняття класу та об'єкта. Специфікатори доступу до членів класу

У оточуючої людей реальності об'єкт є її частиною, він існує в часі і просторі. Об'єкт можна побачити, доторкнутися, або знати, що він є, наприклад, файл на магнітному диску або вантаження конкретного вагона на залізничній станції.

У кожної книги свої автор, назва, рік видання, бібліотечний шифр і вартість, які є властивостями книги. Кожна книга в бібліотеці може володіти деяким станом: книга вільна (значить, вона може бути видана читачеві), книга видана (значить, вона знаходиться у читача). Книги відрізняються один від одного конкретними значеннями властивостей, набір яких є унікальним для кожної окремої книги, а також конконкретним станом, поточне значення якого може змінюватися у часі. Над книгами в бібліотеці можна виробляти різні дії: шукати потрібні книги, створювати в бібліотечному фонді нові, видавати читачам, повертати в бібліотеку. Конкретна дія може спричинити за собою зміну стану. Наприклад, дія "видати книгу" змінює її стан з "вільна" у стан "видана".

Набір властивостей книги (автор, назва і т. д.) не що інше, як дані. Дії (шукати, створити і т. д.) - функції, які виконуються над книгами. Ключова ідея об'єктно-орієнтованого програмування полягає в тому, що дані і вироблені над цими даними дії об'єднуються і представляють єдине неподільне ціле, яке і називають об'єктом. Об'єктно-орієнтована програма являє собою безліч взаємопов’язаним один з одним об'єктів. Взаємодія об'єктів здійснюється через виклик деякої функції цього об'єкта. У термінах об'єктно-орієнтованого програмування виклик функції називають передачею повідомлення. Наприклад, повідомленнями для книги можуть бути наступні: шукати, видати. Динаміка зміни станів об'єкта та його реакція на повідомлення, що поступають відображає поведінку об'єкта.

Загальний опис для всіх об'єктів із загальними властивостями і поведінкою називаються класом об'єктів. Клас вводить поняття абстракції, яка дозволяє встановити суттєві характеристики об'єкта, які відрізняють його від всіх інших об'єктів і чітко визначають особливості цього об'єкта з точки зору подальшого розгляду. Клас можна ні побачити, ні помацати, але можна знати, що він є (наприклад, у програмному файлі на диску, в бібліотеці класів). Клас показує, як побудувати існуючу в часі і просторі змінну цього класу - об'єкт.

Клас (class) - визначається програмістом тип даних, який описує безліч об'єктів із загальними властивостями, поведінкою і семантикою. Кожен клас має унікальне ім'я, яке визначає назву нового типу даних. Наприклад, для безлічі книг можна визначити клас своок.

Об'єкт (object) - змінна типу клас або екземпляр класу. За правилами оголошення змінних для класу своок можна, наприклад, оголосити об'єкт цього класу як своок book.

У зв'язку з тим, що тип класу об'єднує дані і операції обробки цих даних в єдине ціле, для класів вводиться поняття членів класу (class members). До членів класу відносяться дані (data members) і функції (members function).

Член класу (дане) - іменована характеристика або властивість об'єктів класу, яке має власне значення для кожного об'єкта. Наприклад, у класі своок можна оголосити дані author, title, year, які будуть визначати автора, назву і рік видання для об'єктів-книг класу. Для кожної книги ці дані будуть мати конкретні значення.

Член класу (функція) - це функція, яка належить класу, за допомогою якої об'єкт класу взаємодіє з об'єктами інших класів або того ж самого класу. Функції-члени прийнято називати методами. Метод перед-ставлять собою дію, яку повинен виконати об'єкт для реалізації своєї поведінки, або сервіс, який може бути затребуваний одним об'єктом в іншого. У кожного методу є свій об'єкт-одержувач, тобто об'єкт, для якого метод застосовується. Якщо він використовує тільки дані свого класу, то у нього не буде параметрів. Якщо ж для виконання методу потрібні додаткові аргументи, то він є параметризовані. Деякі методи можуть набувати різні форми в різних класах, такі методи називаються поліморфними. Визначення методів знаходиться в класі. Виконують методи об'єкти класів, коли ці методи ними викликаються.

Поняття класу є найбільш важливим у мові С + +. Синтаксис опису класу схожий на синтаксис опису структури. Ось його основна форма:

class <имя_класса>

{

// закрытые функции-члены и данные-члены класса

public:

// открытые функции-члены и данные-члены класса

} <список_объектов>;

В описі класу <список_об'ектов> не є обов'язковим. Ви можете оголосити об'єкти класу пізніше, в міру необхідності. <имя_класса> стає новим ім'ям типу даних, яке використовується для оголошення об'єктів цього класу.

Функції та змінні, оголошені усередині оголошення класу, стають членами цього класу. Змінні, оголошені усередині оголошення класу, називаються даними-членами цього класу; функції, оголошені усередині оголошення класу, називаються функціями-членами класу. За замовчуванням, всі функції та змінні, оголошені в класі, стають закритими для цього класу. Це означає, що вони доступні тільки для інших членів цього класу. Для оголошення відкритих членів класу використовується ключове слово public, за яким слідує двокрапка. Всі функції і змінні, оголошені після слова public, доступні і для інших членів класу, і для будь-якої іншої частини програми, в якій міститься клас.

Приклад оголошення класу:

class AnyClass

{

//закрытый элемент класса

int a;

public:

int get_a ();

void set_a (int num);

};

Хоча функції get_a () і set_a () і оголошені в класі AnyClass, вони ще не визначені. Для визначення функції-члена потрібно зв'язати ім'я класу, частиною якого є функція-член, з ім'ям функції. Це досягається шляхом написання імені функци слідом за ім'ям класу з двома двокрапками.

Операцію, яка записується у вигляді двох двокрапок, називають операцією розширення області видимості. Для завдання функції-члена використовується наступна загальна форма:

<Тип> <ім’я_класy> :: <ім'я функції> (<список_параметрів>)

{

/ / Тіло функції

}

Нижче наведені приклади визначення функцій-членів get_a () і set_a ():

void AnyClass::get_a()

return a;

}

int AnyClass:: set_a(int_num)

{

a=num;

}

Доступ до елементів даних класу можна отримати і за допомогою покажчика на об'єкт цього класу.

Пример.

class Coord

{

public

int x,y;

void SetCoord(int_x, int_y);

};

void

Coord::SetCoord(int_x, int_y)

{

x=_x;

y=_y;

}

int main ()

{

Coord pt;

Coord *ptPtr=&pt; //указатель на объект

//….

Return 0;

}

Імена елементів класу можуть також використовуватися з ім'ям класу, за яким слідує операція дозволу видимості (подвійне двокрапка), тобто виклик елемента має вигляд:

<Ім’я_класe> :: <ім’я_члена>

Визначення класу нагадує визначення структури, за винятком того, що визначення класу:

• Зазвичай містить один або кілька специфікатор доступу, що задаються за допомогою ключових слів public, protected або private;

• Замість ключових слів struct можуть застосовуватися class або union;

• Зазвичай включає поряд з елементами даних функції-члени;

• Зазвичай містить деякі спеціальні функції-члени, такі як конструктор і деструктор.

Важливо пам'ятати про те, що всі робочі дані зберігаються в об'єкті. Клас не містить ніяких даних; він лише описує загальну структуру і поведінку об'єкту.

За своєю суттю об'єктно-орієнтоване програмування - це всього лише спосіб угруповання функцій і даних, що полегшує роботу над програмою.

У комплект Visual C + + входить ціла бібліотека заздалегідь написаних класів - Microsoft Foundation Classes (MFC), яка помітно полегшує роботу програміста. На її основі можна створювати об'єкти для роботи з кнопками, текстовими полями, смугами прокрутки і т. д. Фірма Microsoft вже попрацювала за нас, і пізніше ми скористаємося цим.

Специфікатори доступу до членів класу

Специфікатори доступу визначають доступність даних і методів в програмі. Існують наступні специфікатори доступу:

• public - відкритий режим доступу. Члени класу доступні за межами класу будь-яких функцій програми;

• protected - захищений режим доступу. Члени класу доступні для методів цього класу, похідних класів і дружніх класів.

• private - закритий режим доступу. Члени класу доступні тільки для методів цього класу та класів-друзів.

Особливість об'єктно-орієнтованого програмування полягає в приховуванні даних, що захищає дані класу від несанкціонованого доступу функцій, розташованих за межами класу. У зв'язку з цим члени-дані, як правило, мають специфікатор доступу private. В окремих випадках виникає необхідність дані класу робити відкритими.

Методи, які надають сервісні послуги класу, завжди оголошуються зі специфікатором public. Методи, які використовуються класом для власних потреб, мають специфікатор доступу private. Ці методи забезпечують реалізацію відкритих функцій-членів і приховують складності їх реалізації.