Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
797.27 Кб
Скачать

17.8. Способы графического представления объектно-ориентированной задачи

В объектно-ориентированном анализе можно выделить три группы диаграмм [13].

Диаграмма сущность-связь – ERD-диаграмма (Entity-Relationship Diagram). Примером таких диаграмм могут служить диаграммы классов, простейшие примеры которых приведены на рис. 17.4 – рис. 17.8, а также диаграммы объектов, модулей. Диаграммы демонстрируют статические связи между однотипными сущностями (классами, объектами и т. д.). Сущности на такой диаграмме изображаются прямоугольником, линии, соединяющие прямоугольники, обозначают связи между сущностями.

Диаграмма потоков данных – DFD-диаграмма (Data Flow Diagram). Пример такой диаграммы – хорошо знакомые нам блок-схемы алгоритмов. Узлы такой диаграммы (прямоугольники, ромбы, параллелограммы и т. д.) обозначают отдельные действия над данными или подпрограммы, линии, соединяющие их, обозначают направление потока данных и, соответственно, последовательность выполнения действий.

Диаграммы переходов состояний – STD-диаграммы (State Transition Diagram). Узлы такой диаграммы представляют собой допустимые состояния объекта, а соединяющие их линии – возможность и направление перехода из одного состояния в другое. На диаграмме также могут быть отмечены события, вызывающие данный переход, или соответствующие им методы. Кроме того, на диаграмме можно отметить последовательность переходов, тогда диаграмма будет также описывать поведение объекта.

Для примера рассмотрим объект – принтер. Ранее у объекта были выявлены два свойства, изменяющие свои значения во время использования объекта – is_on (обозначающее, включен ли принтер) и status (определяющее, печатает принтер в данный момент или нет) – и три допустимых состояния, исключив из допустимых состояний возможность печати при выключенном принтере (рис. 17.9).

Рис. 17.9. STD-диаграмма переходов

Такие диаграммы – основа современного языка, предназначенного для описания объектно-ориентированной задачи – языка UML (Unified Modeling Language – универсальный язык моделирования) [11, 14].

17.9.  Особенности реализации объектно-ориентированных программ на языке С++ в различных средах

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

Универсальной средой, позволяющей создавать объектно-ориентированные программы для MS-DOS и 16-разрядные приложения под Windows, остается продукт Borland C++ 3.1 фирмы Borland. В этой среде можно создавать программы, весь код которых сосредоточен в одном файле, а также можно создавать проекты.

Более новые продукты – Borland C++ 5.x предназначены для создания полноценных приложений для Windows 9.x. Среда имеет элементы автоматизации работы программиста – средства для модульного построения программы и создания каркаса проекта, графический редактор для визуального редактирования диалоговых панелей, меню, подключаемые библиотеки BWCC (библиотека управляющих элементов), OWL (иерархическая библиотека классов, предназначенных для создания элементов графического интерфейса приложения), MFC (библиотека классов фирмы Microsoft). Возможно создание не только приложения (*.exe), но и динамической библиотеки (*.dll). Разработка программы ведется только на основе проекта.

Еще более новый и совершенный продукт – C++ Builder обладает достоинствами предыдущей среды, а также формирует вспомогательную часть кода программы (создает заготовку для кода класса, функции), позволяет использовать современные библиотеки, а также имеет мощный и удобный инструмент для настройки свойств элементов интерфейса пользователя программы (диалоговые панели, кнопки и т. д.). Разработка программы ведется только на основе проекта.

Фирма Microsoft также создала современную среду для разработки 32-разрядных приложений под Windows – Microsoft Visual C++, аналогичную по своим возможностям продукту Borland C++ Builder. Разработка программы ведется только на основе проекта.

Microsoft Visual C++ 6.0 входит в состав интегрированной среды разработки Microsoft Visual Studio, позволяющей создавать приложения различного назначения и с использованием различных языковых средств, включающей в себя следующие компоненты для разработки приложений и баз данных: Visual C++, Visual Basic, Visual J++, Visual FoxPro.

Автоматическую генерацию части кода программы выполняют два приложения: AppWizard (Мастер приложений) создает каркас проекта и MFC ClassWizard (Мастер классов) генерирует служебную часть кода класса.

В дополнение к Microsoft Visual Studio как отдельный продукт создана справочная система по программированию с помощью компонентов Microsoft Visual Studio – MSDN (Microsoft Developers Network).

Новейший продукт фирмы Microsoft – Visual Studio.NET. Этот продукт стал преемником Visual Studio, при этом в его состав включены новые версии компиляторов. Так, компилятор С++ в среде NET в большей степени соответствует современному стандарту языка С++, использует новую версию стандартной библиотеки С++, весьма требователен к совместимости типов данных. Добавлены новые и усовершенствованы прежние мастера для автоматической генерации кода программы: Application Wizard, MFC Class Wisard, Event Handler Wizard (Мастер редактирования обработчиков сообщений), Add Member Variable Wizard (Мастер добавления функции) и т. д.

Глава 18. БИБЛИОТЕКИ ЯЗЫКА C++

18.1. Стандартная библиотека языка C++ 18.2. Библиотека Win32 API 18.3. Библиотека OWL 18.4. Библиотека VCL 18.5. Библиотека CLX 18.6. Библиотека MFC 18.7. Библиотека OpenGL

Библиотеки предоставляют программисту возможность использовать при разработке программы готовые фрагменты кода [10, 15]. В библиотеки могут быть включены подпрограммы, структуры данных, классы, макросы. Для языка C++ разработано много библиотек различного назначения. Некоторые библиотеки используются по умолчанию, их подключение к проекту осуществляется автоматически (библиотека времени выполнения – RTL, Runtime Library). Другие библиотеки можно использовать по требованию (в консольном приложении VC++ – библиотека MFC), для этого следует подключить директивой include их заголовки и/или сделать соответствующие настройки проекта. Файлы, содержащие библиотеки, имеют расширение *.lib (статическая) и *.dll (динамическая).

Существуют два вида использования библиотек в исполняемом файле: статическое и динамическое. При статическом подключении фрагменты библиотек встраиваются в программу, что увеличивает ее код, но делает программу автономной, так как для выполнения готовой программы не требуется наличие библиотеки на компьютере. При динамическом подключении программа обращается к библиотеке в процессе своей работы. Динамическое подключение библиотеки экономит код, но для работы программы необходимо наличие библиотеки в определенном месте на диске.

18.1. Стандартная библиотека языка C++

Стандартная библиотека языка C++ (C++ Standard Library) – межплатформенная библиотека (Windows, Linux), основу которой составляет стандартная библиотека шаблонов STL (Standard Template Library)[5], включающая:

     базовую поддержку средств языка времени выполнения, например, средства управление памятью,

     стандартную библиотеку языка C,

     строки и потоки ввода/вывода с поддержкой национальных алфавитов,

     структуры данных, называемые контейнерами, и алгоритмы их обработки (сортировка, слияние),

     поддержку численных расчетов, например, операции над векторами, обработку комплексных чисел.

Компоненты библиотеки подключаются с помощью заголовочных файлов:

<vector> – одномерный массив элементов;

<list> – двусвязный список элементов;

<queue> – очередь элементов;

<stack> – стек элементов;

<ctime> – дата и время;

<algorithm> – основные алгоритмы;

<cstdlib> – функции обработки данных (поиск, сортировка, обработка строк в стиле C, генератор случайных чисел);

<string> – строка;

<iostream> – стандартные потоки ввода/вывода;

<complex> – комплексные числа;

<c_math> – общие математические функции;

<new> – работа с динамической памятью.

Имена компонентов библиотеки определены в пространстве имен std. Пространство имен представляет собой область видимости имен, это средство логического группирования идентификаторов (п.16.5).

Приведем пример программы, использующей элементы стандартной библиотеки C++ (компоненты библиотеки STL).

Программа в заданном наборе чисел подсчитывает количество чисел, имеющих значение 5, 6, меньше 8:

//подключение заголовочных файлов библиотеки STL

#include <vector>

#include <algorithm>

#include <iostream>

#include <functional>

using namespace std;

int main ()

{

int sequence[10] = {1,2,3,4,5,5,7,8,9,10};

int i=0,j=0,k=0;

//

//Создание вектора

vector<int> v(sequence+0, sequence+10);

i=count(v.begin(),v.end(),5); //Считает пятерки

j=count(v.begin(),v.end(),6); //Считает шестерки

//

// Считает значения меньшие, чем 8

k=count_if(v.begin(),v.end(),bind2nd(less<int>(),8));

cout << i << " " << j << " " << k << endl;

return 0;

}

Ответ: 2 0 7.