- •1. Метод структурного проектирования
- •2.Основные концепции ооп
- •3.Методика объектно-ориентированного проектирования
- •4. Обзор языков объектно-ориентированного программирования.
- •5. Методика объектно-ориентированного проектирования. Унифицированный язык моделирования uml
- •6. Диаграммы. Диаграммы классов
- •8. Определение класса. Объявление объектов класса. Обращение к объектам
- •Называется определением класса, потому что она определяет новый тип.
- •9.Инициализация полей объектов. Конструкторы. Конструктор по умолчанию
- •Конструктор по умолчанию
- •10.Копирующий конструктор
- •11. Конструктор с параметром
- •15. Множественное наследование.
- •16. Виртуальные функции.
- •18 . Наследование классов, полей и методов. Поведение производных классов.
- •19. Виртуальные методы класса
- •20. Статические методы класса
- •22. Абстрактное наследование
- •23.24.Полиморфизм. Простой полиморфизм. Сложный полиморфизм
- •26.Перегрузка функций.
- •28.Виртуальные функция
- •Void friend Bar(Foo & foo);
- •Int data;
- •Void Bar(Foo & foo)
- •30. Дружественные классы.
- •31. Работа динамической памятью. Особенности работы конструкторов и деструкторов.
- •32. Шаблоны функций. Описание и использование
- •33.Шаблоны классов
- •34. Стандартные шаблонные контейнерные классы. Основные методы.
- •35. Итераторы
- •36. Основные понятия о потоках ооп
- •37. Стандартные классы потоков ввода вывода
- •38. Файловые потоки
- •Методы файловых потоков
- •39. Строковые потоки Особой разновидностью потоков являются строковые потоки, представленные классом strstream:
- •40.Организация ввода-вывода для пользовательских классов.
- •41. Использование файлов и буферов в памяти для ввода-вывода.
- •42. Средства форматного вывода, манипуляторы.
- •43.Средства возбуждения исключительных ситуаций
- •44. Обработка исключительных ситуаций
- •45. Обработка иерархии классов исключительных ситуаций.
- •46. Единицы компиляции программы, файлы заголовков и реализации
- •47. Директивы препроцессора, макросы и условная компиляция.
- •48. Организация пространств имен.
- •49. Пространство имен для стандартной библиотеки.
- •50. Контейнерные классы.
40.Организация ввода-вывода для пользовательских классов.
Для ввода и вывода в потоках используются перегруженные для всех стандартных
типов операцрш чтения и извлечения « и » . При этом выбор конкретной
операции определяется типом фактических параметров. Для того чтобы вводить
и выводить величины типов, определенных пользователем, требуется перегрузить
эти операции. Это бинарные операцирг, левым операндом которых является
объект-поток, а правым — объект, который требуется извлечь или поместить в
этот поток.
class MyClass{
1 nt X:
float у;
friend ostream& operator « (ostream& out. MyClass& C){
return out « "x = " « C.x « " у = " « C.y:
}
friend istream& operator » (istream& in. MyClass& C){
cout « "Введите x: ":in » C.x;
cout « "Введите у: ":in » C.y;
return in;
}
41. Использование файлов и буферов в памяти для ввода-вывода.
Обмен с потоком для увеличения скорости передачи данных производится, как правило, из специальной области оперативной памяти – буфера. Фактическая передача данных выполняется при выводе после заполнения буфера, а при вводе – если буфер исчерпан. По направлению обмена потоки можно разделить на входные (данные вводятся в память), выходные (данные выводятся из памяти) и двунаправленные (допускающие как извлечение, так и включение).
42. Средства форматного вывода, манипуляторы.
Возможность управлять вводом-выводом в С++, обеспечивают форматирующие функции-члены, флаги и манипуляторы. Флаги, функции и манипуляторы выполняют одну и туже задачу — задают определённый формат ввода/вывода информации в потоках. Ввод/вывод на экран/с экрана в С++ осуществляется с помощью операторов cin и cout соответственно, а значит манипуляторы форматирования используются совместно с данными операторами ввода/вывода. Различие между функциями флагами и манипуляторами форматирования состоит в способе их применения. Теперь рассмотрим способы применения объектов форматирования.
//Основные форматирующие функции-члены:
cout.fill('/*symbol*/'); // устанавливает символ заполнитель
// где symbol - символ заполнитель, символ передаётся в одинарных кавычках
cout.width(/*width_field*/); // задает ширину поля
// где width_field - количество позиций(одна позиция вмещает один символ)
cout.precision(/*number*/); // задает количество знаков после десятичной точки
// где number - количество знаков после десятичной точки
Манипуляторами называются функции, которые можно включать в цепочку операций
помещения и извлечения для форматирования данных. Манипуляторы делятся
на простые, не требующие указания аргументов, и параметризованные.
Пользоваться манипуляторами более удобно, чем методами установки флагов
форматирования.
Простые манипуляторы
Ниже перечислены манипуляторы, не требующие указания аргументов.
dec — устанавливает при вводе и выводе флаг десятичной системы счисления;
oct — устанавливает при вводе и выводе флаг восьмеричной системы счисления;
hex — устанавливает при вводе и выводе флаг шестнадцатеричной системы
счисления;
WS — устанавливает при вводе извлечение пробельных символов;
endl — при выводе включает в поток символ новой строки и выгружает буфер;
ends — при выводе включает в поток нулевой символ;
flush — при выводе выгружает буфер.