- •99. Типы диаграмм языка uml
- •98. Унифицированный язык моделирования uml.
- •100. Диаграмма классов (class diagram).
- •Концептуальная точка зрения — диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;
- •Точка зрения спецификации — диаграмма классов применяется при проектировании информационных систем;
- •Точка зрения реализации — диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).
- •102. Компонентно-ориентированное проектирование
- •Объектно-ориентированное проектирование на основе иерархии классов.
- •93. Гетерогенные контейнеры adt шаблонов
- •Компонентные классы как основа систем визуального программирования.
- •Построение каркасов приложений в среде современных систем программирования.
- •Производные классы: наследование.
- •Термин наследование и применение к классам и их характеристикам
- •Создание объекта производного класса.
- •Расширение производного класса.
- •Создание объекта производного класса и вызов конструкторов
- •Производные классы: полиморфизм.
- •Множественное наследование в классе, порождённом от нескольких родительских классов-предков.
- •Производные классы: полиморфная функция
- •Иерархия классов
- •39.Простые манипуляторы для управления потоком
- •Прядок вызова конструкторов в производных классах
- •Виртуальные базовые классы.
- •Порядок построения виртуальных базовых классов.
- •25. Указатель на абстрактный класс.
- •28.Технология объектно-ориентированного программирования.
- •Интерфейс пользователя и абстрактный класс.
- •35.Предопределенные объекты-потоки.
- •29. Применение шаблонов классов и шаблонов функций.
- •30.Объекты класса и указатели на объекты класса.
- •31.Члены данных объекта и указатели на члены данных класса.
- •32.Указатели на функции-члены класса и указатели на статические члены данных.
- •36.Стандартный ввод-вывод.
- •34.Создание и организация взаимодействие потоков ввода-вывода.
- •37.Методы позиционирования потоков.
- •38.Способы управления форматом выходных данных.
- •42.Организация ввода-вывода для пользовательского типа
- •40.Параметризованные манипуляторы и форматирующие функции.
- •41.Состояния потока.
- •43.Методы опроса и установки состояния потока.
- •44.Обработка ошибок в потоке через определение и установку состояния потока.
- •45.Последовательность действий при создании ostream.
- •46.Открытие и закрытие файла.
- •47.Методы ввода-вывода.
- •13.Преобразование типов в производных классах.
- •14.Разрешение области видимости в производных классах
- •15.Виртуальные функции.
- •16.Нестатические компонентные функции класса.
- •17.Применение виртуальных функций.
- •18.Вызов виртуальных функций в конструкторе.
- •19.Вызов полиморфных функций базового класса.
- •20.Вызов полиморфных функций через базовые классы.
- •21.Вызов виртуальной функции через таблицу виртуальных методов.
- •22.Ограничения на использование виртуальных функций.
- •23.Чистая виртуальная функция.
- •24.Абстрактный класс и его использование.
- •80.Контейнер объектов List
- •82.Контейнеры шаблонов fds (Fundamental Data Structures).
- •76.Класс итераторов объектов: внешние и внутренние итераторы.
- •81.Контейнер объектов Stack
- •71.Контейнерные классы объектов: понятие контейнерного класса.
- •72.Итераторы в контейнерных классах объектов как друзья класса.
- •48.Бинарные файлы.
- •49.Чтение бинарных файлов.
- •50.Запись в бинарные файлы.
- •51.Инициализация потоков с помощью конструктора.
- •52.Текстовые файлы для ввода-вывода.
- •60.Дружественные шаблоны.
- •53.Форматирование в памяти с использованием потоков strstream.
- •54.Шаблон класса.
- •69.Механизм обработки исключений.
- •56.Создание шаблонного класса.
- •57.Шаблон функции, объявление.
- •61.Функциональное замыкание при разработке приложений.
- •58.Запись шаблона функции с несколькими обобщенными аргументами.
- •65.Исключение как статический объект.
- •64.Объектно-ориентированный подход к обработке исключений.
- •66.Генерации исключения.
- •85.Гомогенные и гетерогенные контейнеры шаблонов fds.
- •63.Использование конструкторов и деструкторов в роли «вступления» и «заключения».
- •67.Операторы throw и catch.
- •68.Обработчик исключений.
- •70.Понятие контролируемого блока при обработке исключений.
- •84.Способы хранения элементов в контейнерах шаблонов fds.
- •83.Вектора и списки в контейнере шаблонов.
- •Стандартные контейнеры библиотеки stl
- •86.Fds контейнеры шаблонов векторов
- •62.Функциональное замыкание через наследование.
- •87.Fds контейнеры шаблонов списков
- •89.Способы реализации и префиксы имен adt-контейнеров шаблонов.
- •88.Контейнеры шаблонов adt (Abstract Data Types) и их классификация.
- •90.Типы adt-контейнеров шаблонов.
- •91.Массивы adt-контейнеров шаблонов.
- •92.Стеки adt-контейнеров шаблонов.
- •78.Контейнер объектов Array
- •74.Класс контейнеров объектов: разбиение контейнеров на группы.
- •77.Иерархия классов итераторов объектов
- •79.Контейнер объектов SortedArray
- •73.Библиотека контейнерного класса структур данных.
36.Стандартный ввод-вывод.
Стандартные манипуляторы ввода-вывода
Это следующие манипуляторы:
// Simple manipulators:
ios& oct(ios&); // в восьмеричной записи
ios& dec(ios&); // в десятичной записи
ios& hex(ios&); // в шестнадцатеричной записи
ostream& endl(ostream&); // добавить '\n' и вывести
ostream& ends(ostream&); // добавить '\0' и вывести
ostream& flush(ostream&); // выдать поток
istream& ws(istream&); // удалить обобщенные пробелы
// Манипуляторы имеют параметры:
SMANIP<int> setbase(int b);
SMANIP<int> setfill(int f);
SMANIP<int> setprecision(int p);
SMANIP<int> setw(int w);
SMANIP<long> resetiosflags(long b);
SMANIP<long> setiosflags(long b);
Например,
cout << 1234 << ' '
<< hex << 1234 << ' '
<< oct << 1234 << endl;
напечатает 1234 4d2 2322
и cout << setw(4) << setfill('#') << '(' << 12 << ")\n";
cout << '(' << 12 << ")\n";
напечатает (##12) (12)
Не забудьте включить файл <iomanip.h>, если используете манипуляторы с параметрами.
33.Управление вводом-выводом в С++
C++ имеет целое семейство гибких библиотек функций ввода/вывода. В С++ было введено понятие потоков. С помощью потока cout можно выводить данные в форматированном виде. Для этого используются потоковые функции Width
Precision
Функция width задает ширину поля вывода, общая форма:
сout. width (width of output);
Функция precision определяет количество значащих цифр для чисел с пла-вающей точкой.
сout. precision (number of Digits)
// вывод элементов матрицы
cout << " матрица А:" << endl;
for (int i=0; i < rows; i++)
{
for (int j=0; j{
cout. width (4);
cout. precision (1);
cout << matrix [ i ] [ j ] << " ";
}
cout << endl;
}
cout << endl;
Функция printf.
Printf - стандартный оператор ввода. Эта функция имеет несколько мощных возможностей, и в ряде случаев она оказывается удобнее функции потоков.
Общая форма:
int printf (cout char*format [, argument,...] )
Параметр format является символьным массивом, содержащим выводимый текст. Mассив format может содержать специальные форматирующие символы, которые выполняют преобразование необязательных аргументов при выводе.
- - выравнивать вывод по левому краю поля
+ - всегда выводит знак числа
пробел - выводить пробел перед положительным числом и знак минус перед отрицательным
# - не влияет на вывод десятичных целых чисел, для шестнадцатеричных выводит префикс Ox или OX, перед восьмеричными целыми выводит ноль, деся-тичную точку для вещественных чисел.
Спецификация width определяет минимальное количество выводимых сим-волов. Если необходимо, используются заполнители - пробелы или нули. Когда значение width начинается с 0, printf использует в качестве заполнителей нули, а не пробелы. Если в качестве значения для width используется универсальный символ *, а не число, то printf подставляет на место этого символа значение, кото-рое должно содержаться в списке аргументов. Это значение должно предшество-вать выводимому значению. Ниже приведен пример вывода числа 2, занимающе-го три позиции согласно значению второго аргумента printf:
printf (" % * d ", 3, 2);
Спецификатор precision определяет максимальное количество выводимых цифр. В случае целого числа он определяет минимальное количество выводимых символов. Для precision также можно применить символ *, вместо которого будет подставлено значение из списка аргументов. Это значение точности представле-ния должно предшествовать выводимому значению. Ниже приведен пример вы-вода числа с плавающей точкой 3.3244 с использованием десяти символов, как это задано вторым аргументом printf.
Print (" % 7. * f ", 10, 3.3244);
Символы F, N, h, 1, L являются символами размера, предопределяющими размер по умолчанию. Символы F и N применяются с указателями far и near соот-ветственно символы h, 1, L используются для указания соответственно типов short int, long, long double.
Символом типа данных должен предшествовать форматирующий символ %.
// Программа, использующая PRINTF для форматированного вывода
# include
int. main ( )
{ int anint = 67;
unsegned char a byte = 128;
float a sisnal = 388.0;
char a char = "G";
double a double = 1.130e + 00 ;
Printf (" %3d + %2d = %3d (n" a Byte, anInt, a Byte + anInte");
Printf (" вывод вещественного числа / n");
Printf (" % 6.4 f / % 64 IF = % 7.5 IF / n , a signal, a Double, a Signale / a Double);
Printf ("вывод вещественного числа в экспоненциалъной форме / n");
Printf (" % 6.4e / % 6.4le = % 7.5le / n", a Signle, a Double, a Signle / a Double);
Printf ("вывод вещественного числа / n");
Printf ((" % 6.4g / % 6.4lg = % 7.5Ig / n, "a Signle, a Double, a Signle / a Double);
Printf (" Символ в переменной величине символа : % c / n", a char);
Printf ( ASСII коде для % с ig % d / n", a char, a char );
Return 0;
}
Пример вывода программы.
28+67= 195
Вывод в формате вещественного числа:
355.000 /113.0000=3.14159
Вывод вещественного числа в экспоненциальной форме:
3.5500e+002/1.1300e+002=3.14159e+00
Вывод вещественного числа
355/113=3.1416