Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Моделювання структури книги

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Клас, використовує код іншого класу, називається похідним чи подклассом. Клас, що дає свій код іншому класу, називається базовим чи суперклассом. Якщо необ-хідно надати методам породженого класу можливість прямого доступу до члену-переменной базового класу, замість квалификатора доступу private можна використовувати уточнювач protected. Може бути, що методи базового класу, успадковані породжених… Читати ще >

Моделювання структури книги (реферат, курсова, диплом, контрольна)

Аналіз і опис предметної області проекту 4.

Розробка об'єктної моделі 5.

Визначення об'єктів і классов.

Підготовка словника данных.

Визначення атрибутів об'єктів 6.

Визначення методів классов.

Спрощення класів під час використання спадковості й графічне зображення об'єктної моделі 7.

Реалізація об'єктної моделі мовою програмування C++.

Реалізація класу книги.

Породження объектов.

Виклик операций.

Використання наследования.

Реалізація зависимостей.

Аналіз отриманих результатів і деякі висновки 23.

Знімок екрана программы.

Темою даної курсової роботи є підставою вивчення объектноорієнтованих можливостей мови З++ (номер варіанта 34). Предметна область курсової роботи відповідно до варіанту — моделювання структури книги.

У методичному додатку було наведено особливості предметної області, розглянутим у цій роботі, — у книзі виділяються компоненти: сторінка, глава, розділ. За умовою завдання необхідно реалізувати об'єктну модель тогочасні книги й написати програму з допомогою класу З++, який відбиває структуру тогочасні книги й наочно демонструє ефективність використання объектно-ориентированной технології розробки программ.

На підвищення ефективності створення програмних комплексів і скорочення часу, відведеного проектування і кінцевого продукту, фірма Microsoft рекомендує використовувати розроблену нею бібліотеку класів MFC (Microsoft Foundation Classes), що поставляється складі середовища розробки програм Microsoft Visual З++ 6. Тому додаток, створене ході написання даної курсової роботи, є додатком, использующем бібліотеку MFC, й розроблено в візуальної середовищі Microsoft Visual З++ 6. Призначення даного докладання — наочне подання до візуальної формі структури книги.

Анализ і опис предметної області проекта.

Предметна область даної курсової роботи було обрано в методичному додатку: моделювання структури книжки (варіант № 34).

Книжка містить текстову інформацію (в найпростішому разі) і має деревоподібну структуру — книга складається з кількох розділів, розділ складається з кількох глав, глава, своєю чергою, складається з сторінок. Особливий компонент книжки, який полегшує її використання, — зміст, має також деревоподібну структуру. Недолік паперової книжки — необхідність часто відкривати сторінки, містять зміст, визначення номерів потрібних сторінок, далі треба здійснювати пошук цих сторінок по відомим номерам, потім знову йде кілька днів. У електронних книгах (наприклад, створених для перегляду з допомогою програми Adobe Acrobat Reader) зміст завжди знаходиться поперед очі читача і на потрібну сторінку здійснюється простим клацанням миші по елементу, відповідному деякою сторінці. З іншого боку, в змістах демонструються все сторінки, Не тільки перші шпальти глав, що також спрощує навігацію за книгою. І на паперових, й у електронні книги завжди присутній можливість перевернути один аркуш уперед, чи тому. Для спрощення завдання й здійснення сумісності з книжками, створеними для перегляду на ПК, орієнтованих текстові операційні системи (типу DOS), сторінку ми розглядати, як об'єкт, у якому виключно текстову інформацію, отображаемую єдиним шрифтом і що містить ніякого форматування. Отже, можна сторінку як масив з константним кількістю розташованих вертикально згори донизу горизонтальних рядків, містять константне кількість символів (у разі використання немоноширинных шрифтів рядки мають постійну довжину, виражену в фізичних одиницях: сантиметрах, дюймах, пикселях і т.п.).

Разработка об'єктної модели Определение об'єктів і классов.

Відповідно до моделі докладання, використовуваної бібліотекою MFC, будь-яке SDIдодаток повинен мати визначення наступних класів: клас докладання, породжений від CWinApp, клас вікна, породжений від CFrameWnd, клас документа, породжений від CDocument, і клас уявлення, породжений від CView. Т.к. додаток для перегляду книжок виконано у стилі «Explorer», то також визначено клас уявлення змісту книжки, породжений від CTreeView. З іншого боку, клас уявлення сторінки книжки породжена не безпосередньо від класу CView, як від наследуемого від CView класу — класу CListView. Тобто. сторінка книжки має подання до вигляді списку її строк.

Клас, який відбиває структуру книжки, має назву CBookClass. Визначено класи колекцій розділів, глав і 100 сторінок — клас CRazdels, клас CGlavas і клас CPages відповідно; і навіть класи власне розділу, глави уряду та сторінки — клас CRazdel, клас CGlava і клас CPage соответственно.

Подготовка словника данных.

Додаток — глобальний об'єкт класу докладання, використовуваний для узгодження роботи об'єктів інших стандартних класів MFC й у дозволу посилань всередині одних об'єктів інші объекты.

Вікно докладання — об'єкт візуального уявлення докладання, организовывающий взаємне розташування візуальних компонентів програми на екрані і який реалізує стандартний інтерфейс взаємодії користувача з программой.

Документ — інформація, яку користувач може зберігати у процесі роботи із фотографією і далі считывать.

Уявлення — кошти уявлення документа користувачеві в процесі виконання приложения.

Покладена основою MFC концепція документ/представление дозволяє відокремити дані засоби, з допомогою яких користувач має можливість переглянути ці дані і маніпулювати ними. Объекты-документы відповідальні за зберігання, завантаження і розвантаження даних, а об'єктиуявлення, які представляють самі вікна, дозволяють користувачеві переглядати дані на екрані і редагувати їх відповідно логіці роботи докладання. Об'єкт класу уявлення містить покажчик на об'єкт класу документа, що використовується для доступу до членам-переменным цього, де власне і данные.

Значення термінів книга, розділ, глава, сторінка, рядок і зміст є й не підлягають объяснению.

Определение атрибутів объектов.

У класі документа визначено відкритий атрибут — об'єкт класу CBookClass:

class CBookDoc: public CDocument.

{ public:

CBookClass m_Book;

};

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

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

У класі книжки визначено закритий атрибут типу WORD, який зберігає номер сторінки, що у цей час часу проглядається користувачем. З іншого боку, у п’ятому класі книжки визначено члены-указатели на елементи управління CTreeCtrl і CListCtrl, дозволяють здійснювати під час читання книжки перехід від однієї сторінки в іншу. З цією самі цілі у п’ятому класі сторінки визначено член-переменная — покажчик на елемент дерева — типу HTREEITEM.

Для перебору всіх сторінок книжки зручно користуватися не деревом, а масивом сторінок. Тож у класі книжки визначено член-переменная — масив покажчиків шпальти книжки — MFC-класса CPtrArray.

Определение методів классов.

Крім відкритих членов-функций, здійснюють читання і модифікацію закритих членов-переменных, в класах, які у програмі, визначено та інші члены-функции.

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

Класи колекцій розділів, глав і 100 сторінок (CRazdels, CGlavas і CPages) мають відкриті члены-функции DeleteRazdels (), DeleteGlavas () і DeletePages () відповідно. Дані члены-функции здійснюють звільнення пам’яті, виділеної під зберігання книжки, під час відкриття інший книжечки або завершенні роботи программы.

У класі книжки перевантажені конструктор і деструктор за умовчанням. Конструктор обнуляє номер поточної сторінки у тому, щоб за відкритті нової книжки автоматично відображалася перша сторінка. Деструктор запускає механізм звільнення памяти.

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

Объектно-ориентированный підхід в програмуванні має одну дуже принадливу рису — можливість використання вже розробленого коду. По-перше, можна використовувати класи, створені іншими розробниками, не переймаючись деталях реалізації методів всередині класу. Прикладом можуть бути сотні класів з бібліотеки MFC. Але більш суттєві переваги дає повторне використання коду, реалізоване механізмом наследования.

Клас, використовує код іншого класу, називається похідним чи подклассом. Клас, що дає свій код іншому класу, називається базовим чи суперклассом. Якщо необ-хідно надати методам породженого класу можливість прямого доступу до члену-переменной базового класу, замість квалификатора доступу private можна використовувати уточнювач protected. Може бути, що методи базового класу, успадковані породжених класом, ні відповідають специфіці останнього, і потребують певної модифікації. І тому знадобиться розробити окремий метод Имя_Класса:Метод (). Це і перевантаження методів базового класу. Якщо бажано, щоб метод Имя_Класса:Метод () виконував те, як і метод базового класу, та був і ще щось, то найкращий спосіб досягти того результату буде виклик Имя_Базового_Класса:Метод () всередині Имя_Класса:Метод (). Та заодно потрібно використовувати повне ім'я методу базового класу, тобто. саме Имя_Базового_Класса:Метод ().

У додатку класи книжки, розділу, глави уряду та сторінки успадковані від CObject. Це необхідне реалізації механізму завантаження документа з файла — метод Serialize () у тих класах перевантажується як і в класі документа: void CBookDoc: Serialize (CArchive& ar).

{ m_Book.Serialize (ar);

}.

Класи CRazdels, CGlavas і CPages успадковані від класу CObArray. Тож об'єктів цих класів можна викликати все члены-функции, властиві класу масиву объектов.

Объектная модель книги.

[pic] [pic] [pic] [pic].

Реализация об'єктної моделі мовою програмування C++.

Реализация класу книги.

BookClass.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Razdels.h «.

class CBookClass; extern void RenewTree (CTreeCtrl*, CBookClass*); extern void RenewList (CListCtrl*, CBookClass*);

class CBookClass: public CObject { DECLARE_SERIAL (CBookClass) private:

CRazdels m_Razdels;

CPtrArray m_pPages;

CTreeCtrl* pTreeCtrl;

CListCtrl* pListCtrl;

CString m_Name;

WORD m_ActivePage; void RenewCtrls ().

{.

RenewTree (pTreeCtrl, this);

RenewList (pListCtrl, this);

} public:

CRazdels* GetRazdels ().

{ return &m_Razdels;

}.

CPtrArray* GetPages ().

{ return &m_pPages;

} void SetTreeCtrl (CTreeCtrl* TreeCtrl).

{ pTreeCtrl=TreeCtrl; } void SetListCtrl (CListCtrl* ListCtrl).

{ pListCtrl=ListCtrl;

}.

CString* GetName ().

{ return &m_Name;

}.

WORD GetActivePage ().

{ return m_ActivePage;

} void SetActivePage (WORD Page).

{ m_ActivePage=Page;

RenewList (pListCtrl, this);

} void SetPreviousActivePage ().

{ if (m_ActivePage>0).

{ m_ActivePage—;

RenewCtrls ();

}.

} void SetNextActivePage ().

{ if (m_ActivePage+1>m_Name;

WORD Count, Counter; ar>>Count; for (Counter=0;CounterSerialize (ar); m_Razdels.Add (Razdel);

} for (Counter=0;CounterGetSize ();Counter2++).

{.

CGlava* Glava=(CGlava*)Razdel->GetGlavas () — >GetAt (Counter2); for (WORD Counter3=0;Counter3GetPages () — >GetSize ();Counter3++) m_pPages.Add (Glava->GetPages () — >GetAt (Counter3));

}.

}.

} }.

Razdels.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Razdel.h «.

class CRazdels: public CObArray { public: void DeleteRazdels (); };

Razdels.cpp:

#include «stdafx.h «#include «Razdels.h «.

void CRazdels: DeleteRazdels () {.

WORD Counter; for (Counter=0;CounterGetGlavas ()->DeleteGlavas (); delete Razdel;

}.

RemoveAll (); }.

Razdel.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Glavas.h «.

class CRazdel: public CObject { DECLARE_SERIAL (CRazdel) private:

CGlavas m_Glavas;

CString m_Name;

WORD m_FirstGlava;

WORD m_LastGlava;

WORD m_FirstPage;

WORD m_LastPage; public:

CGlavas* GetGlavas ().

{ return &m_Glavas;

}.

CString* GetName ().

{ return &m_Name;

}.

WORD GetFirstGlava ().

{ return m_FirstGlava;

} void SetFirstGlava (WORD FirstGlava).

{ m_FirstGlava=FirstGlava;

}.

WORD GetLastGlava ().

{ return m_LastGlava;

} void SetLastGlava (WORD LastGlava).

{ m_LastGlava=LastGlava;

}.

WORD GetFirstPage ().

{ return m_FirstPage;

} void SetFirstPage (WORD FirstPage).

{ m_FirstPage=FirstPage;

}.

WORD GetLastPage ().

{ return m_LastPage;

} void SetLastPage (WORD LastPage).

{ m_LastPage=LastPage;

}.

CRazdel (){}; void Serialize (CArchive&); };

Razdel.cpp:

#include «stdafx.h «#include «Razdel.h «.

IMPLEMENT_SERIAL (CRazdel, CObject, 0).

void CRazdel: Serialize (CArchive& ar) {.

CObject:Serialize (ar); if (ar.IsLoading ()).

{ ar>>m_Name>>m_FirstGlava>>m_LastGlava>>m_FirstPage>> m_LastPage;

WORD Count, Counter; ar>>Count; for (Counter=0;CounterSerialize (ar); m_Glavas.Add (Glava);

}.

} }.

Glavas.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Glava.h «.

class CGlavas: public CObArray { public: void DeleteGlavas (); };

Glavas.cpp:

#include «stdafx.h «#include «Glavas.h «.

void CGlavas: DeleteGlavas () {.

WORD Counter; for (Counter=0;CounterGetPages ()->DeletePages (); delete Glava;

}.

RemoveAll (); }.

Glava.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Pages.h «.

class CGlava: public CObject { DECLARE_SERIAL (CGlava) private:

CPages m_Pages;

CString m_Name;

WORD m_FirstPage;

WORD m_LastPage; public:

CPages* GetPages ().

{ return &m_Pages;

}.

CString* GetName ().

{ return &m_Name;

}.

WORD GetFirstPage ().

{ return m_FirstPage; } void SetFirstPage (WORD FirstPage).

{ m_FirstPage=FirstPage;

}.

WORD GetLastPage ().

{ return m_LastPage;

} void SetLastPage (WORD LastPage).

{ m_LastPage=LastPage;

}.

CGlava (){}; void Serialize (CArchive&); };

Glava.cpp:

#include «stdafx.h «#include «Glava.h «.

IMPLEMENT_SERIAL (CGlava, CObject, 0).

void CGlava: Serialize (CArchive& ar) {.

CObject:Serialize (ar); if (ar.IsLoading ()).

{ ar>>m_Name>>m_FirstPage>>m_LastPage;

WORD Count, Counter; ar>>Count; for (Counter=0;CounterSerialize (ar); m_Pages.Add (Page);

}.

} }.

Pages.h:

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000.

#include «Page.h «.

class CPages: public CObArray { public: void DeletePages (); };

Pages.cpp:

#include «stdafx.h «#include «Pages.h «.

void CPages: DeletePages () {.

WORD Counter; for (Counter=0;Counter 1000 #pragma once #endif // _MSC_VER > 1000.

#define CountOfStrings 37.

class CPage: public CObject { DECLARE_SERIAL (CPage) private:

CString m_Strings[CountOfStrings];

CString m_Name;

HTREEITEM m_TreeItem; public:

CString* GetString (BYTE Index).

{ return &m_Strings[Index];

}.

CString* GetName ().

{ return &m_Name;

}.

HTREEITEM GetTreeItem ().

{ return m_TreeItem;

} void SetTreeItem (HTREEITEM TreeItem).

{ m_TreeItem=TreeItem;

}.

CPage (){}; void Serialize (CArchive&); };

Page.cpp:

#include «stdafx.h «#include «Page.h «.

IMPLEMENT_SERIAL (CPage, CObject, 0).

void CPage: Serialize (CArchive& ar) {.

CObject:Serialize (ar); if (ar.IsLoading ()).

{ ar>>m_Name;

BYTE Counter; for (Counter=0;Counter>m_Strings[Counter];

} }.

Породження объектов.

У файлі Book. cpp оголошується глобальна змінна — об'єкт класу докладання CBookApp:

CBookApp theApp;

У переобтяженій функции-члене InitInstance () класу CBookApp створюються об'єкти класів документа, вікна і її уявлення оглавления:

BOOL CBookApp: InitInstance ().

{.

CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate (.

IDR_MAINFRAME,.

RUNTIME_CLASS (CBookDoc),.

RUNTIME_CLASS (CMainFrame),.

RUNTIME_CLASS (CLeftView));

AddDocTemplate (pDocTemplate); return TRUE;

}.

Клас вікна CMainFrame містить захищений атрибут класу CSplitterWnd, що дає доступом до уявленню сторінки у вигляді виклику відкритої член-функции класу CMainFrame:

class CMainFrame: public CFrameWnd.

{ protected:

CSplitterWnd m_wndSplitter; public:

CBookView* GetRightPane ();

};

Об'єкт класу книжки є відкритим атрибутом класу документа:

class CBookDoc: public CDocument.

{ public:

CBookClass m_Book;

};

Усі структурні елементи книжки (розділи, глави уряду та сторінки) створюють у момент завантаження файла книжки знайомить із диска через оператор new:

CRazdel* Razdel=new CRazdel; m_Razdels.Add (Razdel);

Вызов операций.

Виклик операцій для об'єктів в З++ то, можливо організований двома способами:

1) Якщо потрібно викликати операцію для перемінної, що є об'єктом будь-якого класу, то використовується оператор .*:

Object.MemberFunc ();

2) Якщо змінна є покажчиком на об'єкт класу, то доступом до методам, підтримуваним даним класом, організовується через оператор ->*: pObject->MemberFunc ();

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

CBookDoc* pDoc = GetDocument (); pDoc->m_Book.SetTreeCtrl (&refCtrl);

Якщо члены-функции викликаються усередині них класу, то виклик цих функцій здійснюється безпосередньо без вказівки імені класу. Наприклад, всередині функції CRazdels: DeleteRazdels () здійснюється виклик членов-функций, наслідуваних від базового класу CObArray:

void CRazdels: DeleteRazdels ().

{.

WORD Counter; for (Counter=0;CounterGetGlavas ()->DeleteGlavas (); delete Razdel;

}.

RemoveAll ();

}.

Использование наследования.

Відповідно до концепції объектно-ориентированного програмування функція завантаження файла книжки знайомить із диска мусить бути инкапсулирована у самому класі CBookClass. Основні етапи створення класу, котрі можуть самостійно організувати сохранение-восстановление (в документації на MFC застосовується термін serialize-сериализация) власних членов-переменных перераховані ниже:

1.Объявить клас як похідний від CObject.

2.В оголошення класу включити макрос DECLARE_SERIAL.

3.В реалізацію класу включити макрос IMPLEMENT_SERIAL.

4.Перегрузить метод Serialize (), успадкований від базового класса.

5.Перегрузить для створення нового класу серед інших конструктор по умолчанию.

Т.а. у разі неминуче доводиться застосовувати механізм наслідування класів. Щойно оголосили клас книжки похідною CObject, нам дозволяється використовувати сериализацию данных.

Крім виконання вищевказаних п’яти пунктів слід також перевантажити метод Serialize () й у класу документа:

void CBookDoc: Serialize (CArchive& ar).

{ m_Book.Serialize (ar);

}.

Так само як і метод Serialize () класу документа перевантажений метод Serialize () класу книжки не виконує безпосереднє читання тексту книжки з файла. Цей метод витягує зі файла лише службову інформацію, визначаючи назву книжки і кількість її розділів. Далі в циклі створюються об'єкти класу розділу, їм делегується завантаження з файла розділів, потім відбувається додавання розділів до колекції розділів книжки. Аналогічно розділ, завантаживши службову інформацію розділу, делегує завантаження глав класу глави; глава, своєю чергою, делегує завантаження сторінок класу сторінки; а потім уже сторінка викликає оператор завантаження з архіву, певний в MFC-классе CString.

Реализация зависимостей.

Тут докладно зупинимося на механізмі «перегортання» сторінок, тобто. на перехід до попередньої і наступного сторінкам. Працюючи з певними елементами меню, кнопками панелі інструментів або за натисканні спеціальних віртуальних клавіш у програмі здійснюється «перелистывание» однієї сторінки уперед, чи тому. У цьому управління передається членамфункцій класу документа OnPagedown () і OnPageup (). Ці функції викликають члены-функции класу книжки SetNextActivePage () і SetPreviousActivePage (), котрі після відновлення номери активної сторінки викликають закриту членфункцію класу книжки RenewCtrls (). Ця функція викликає глобальні функції RenewTree () і RenewList (), передаючи їм як аргументів покажчики на елементи управління, відповідальні за відображення книжки на екрані, і покажчик на об'єкт книжки. Дані глобальні функції, отримавши доступом до активної сторінці через покажчик на об'єкт книжки, оновлюють відображення змісту і сторінки відповідно до номером активної страницы.

Задля реалізації залежності між елементом переглядового вікна дерева змісту і класу книжки на класі сторінки визначено атрибут — покажчик на елемент дерева:

class CPage: public CObject.

{ private:

HTREEITEM m_TreeItem;

};

Цей покажчик дозволяє при щиглику миші за безплатним номером сторінки в змісті відображати сторінку з цим номером, а при «перелистывании» сторінок — виділяти в змісті номер активної сторінки. Останнє здійснюється через виклик вищезгаданої функції RenewTree ():

void RenewTree (CTreeCtrl* TreeCtrl, CBookClass* Book).

{.

CPage* Page=(CPage*)Book->GetPages ()->GetAt (Book->

GetActivePage ());

TreeCtrl->Select (Page->GetTreeItem (), TVGN_CARET);

}.

Анализ отриманих результатів і выводы.

У результаті вивчення объектно-ориентированных можливостей мови З++ була розроблено спеціальну програму, активно яка використовує об'єктно-орієнтовані технології створення програмних комплексів, включаючи Microsoft Foundation Classes. Дані технології дозволяє стислі терміни з допомогою економії часу на етапах проектування й реалізації об'єктної моделі створювати досить складні програмні продукти з багатими функціональними можливостями. Це обумовлено двома причинами:

1)Нет необхідності «винаходити велосипед», тобто. реалізовувати стандартні функції, властиві кожному додатку для Windows. Вся увага програміст приділяє безпосередньо реалізації особливостей даної програми розвитку й створенню об'єктної моделі даних, з якою доводиться працювати розроблюваному приложению.

2)Библиотека Microsoft Foundation Classes пропонує програмісту використовувати деякі стандартні з цією бібліотеки концепції програмування, такі як документ/представление, сериализация даних, і т.д. Т.а. середовище Visual З++ не лише інструментальної середовищем розробки програм, але й ця середовище багато в чому може допомогти і етапі проектування, надаючи програмісту в використання деякі корисні мастера.

Объектно-ориентированный підхід дає змогу як ефективно й наочно описати мовою З++ структуру книжки, але й легко створити зручну від використання програму. У такій моделі книжки достатня для організації всіх дій, необхідних програмі перегляду електронних книг.

Знімок екрана программы.

[pic].

1.К. Грегорі. Використання Visual З++ 6. Спеціальне видання. — М.;СПб.;К.: Видавничий будинок «Вільямс», 2003.

2.К. Джамса. Вчимося програмувати мовою З++. — М.: Світ, 2001.

3.Сабуров З. Мови програмування З і З++. — М.: Пізнавальна книга плюс, 2001.

4.Страуструп Б. Дизайн і еволюція мови З++. — М.: ДМК-Пресс, 2000.

5.Фридман А. C/C++. Архіви програм. — СПб.: БІНОМ, 2001.

Показати весь текст
Заповнити форму поточною роботою