- •Препроцессор. Директивы препроцессора.
- •Описание, определение и вызов функций. Параметры по умолчанию. Встроенные функции.
- •Особенности работы с указателями разных типов в языке с.
- •Модели памяти. Функции работы с динамической памятью.
- •Шаблоны функций. Перегружаемые функции.
- •Организация ввода-вывода.
- •Разработка надежного программного обеспечения. Обработка исключительных ситуаций.
- •13. Особенности программирования для ос Windows.
- •14. Библиотека динамической компоновки. Области применения. Разработка и использование dll-библиотек.
- •15. Объектно-ориентированное программирование. Классы. Определение спецификации доступа.
- •16. Объектно-ориентированное программирование. Полиморфизм.
- •17. Ооп. Наследование. Области видимости для классов.
- •18. Ооп. Классы. Дружественные функции.
- •19. Понятие компоненты. Типы компонент. Свойства. Контейнерные компоненты.
- •20. Организация процесса конструирования по. Типы по. Стратегии конструирования.
- •21. Понятие жизненного цикла. Модели жизненного цикла.
- •22. Особенности процесса синтеза программных систем.
- •23. Разработка структуры программы. Модульное программирование. Критерии оценки программ.
- •24. Проектирование программ. Методы нисходящего и восходящего проектирования.
- •27. Классические методы анализа проектирования. Метод Джексона.
- •28. Структурные методы проектирования. Sadt.
- •29. Структурные методы проектирования программных систем. Использование dfd и er диаграмм.
- •30. Case-системы. Классификация.
- •31. Методы контроля и тестирования по. Статический и динамический контроль. Функциональное тестирование.
- •32. Методы контроля и тестирования по. Структурное тестирование. Многомодульное тестирование.
- •33. Разработка интерфейса пользователя. Структуры диалога. Критерии выбора структуры диалога.
- •34. Разработка интерфейса пользователя. Описание диалога. Использование сетей переходов для представления структуры диалога. Правила свёртки сети переходов.
- •40. Критерии оценки качества по. Документирование и оценка качества в соответствии с iso 9000.
- •41. Основные понятия сом-технологии.
Шаблоны функций. Перегружаемые функции.
Перегрузка функции.
Перегрузка функции позволяет организовать работу функций с одним именем по-разному с возможным возвратом различных значений и передачей различных по типу и количеству фактических параметров. Сигнатура функции – это определение ее типа, имени и параметров. Для обеспечения перегрузки функции необходимо определить столько вариантов описания функции, сколько вариантов сигнатур необходимо при обращении к ней. При вызове функции компилятор проверяет согласование типов и подставляет нужную функцию из числа описанных (для этого в процессе компиляции для каждой функции составляется декор, который и используется для проверки согласования типов и подстановки нужной - @sum#qiqi, @sum#pcpc). Согласование типов по следующим правилам:
точное согласование типов;
простейшие преобразованные типы.
Если привести параметры в соответствие невозможно, то вызов функции считается как двусмысленный. Если функция с одним именем объявлена в программе несколько раз, то компилятор не всегда определяет ее, как перегружаемую, возможны следующие ситуации:
Если возвращаемое значение и сигнатура нескольких функций совпадает, то второе и последующие объявления трактуются как переопределение первого;
Если сигнатуры функций совпадают, возвращаемые значения различны, компилятор трактует как ошибку, потому что при вызове функции определяется, какая именно функция будет подставлена;
Подстановка осуществляется по типу передаваемых параметров и их количеству.
Шаблоны функций.
Шаблоны функций введены в язык с целью, автоматизировать создание функций, способных обрабатывать разнотипные данные. В отличие от механизма перегрузки шаблон описывается только один раз и называется определение семейства. Шаблон состоит из двух частей: заголовок шаблона и обыкновенное определение функции.
template <class T>
void swap (T*x, T*y)
{T z=*x;
x=y;
*y=z;}
Основные свойства параметров шаблона:
имена параметров шаблона должны быть уникальными во всем определении шаблона;
список параметров не может быть пустым;
если в списке параметров имеется несколько значений, то каждый из них должен быть определен через класс.
Параметрами шаблона являются различные типы передаваемых формальных параметров.
Организация ввода-вывода.
В программах на С++ могут быть использованы две библиотеки для организации в/в.
Первая из них – это стандартная библиотека, заимствованная из TurboC – stdio.h.
Вторая – собственная библиотека в/в С++ позволяет организовать в/в данных через потоки iostream.h. Поток – это последовательность байт, которая с точки зрения программы не зависит от конкретных устройств, с которыми ведется обмен. Все потоки делятся на три типа:
входной поток, то есть поток, из которого читается информация;
выходной поток – поток, в который выводится информация;
двунаправленный поток – поток, допускающий и чтение, и запись.
Все потоки в/в являются последовательными, то есть в каждый момент времени определяется позиция записи или чтения, после обмена происходит перемещение по потоку на длину переданной порции данных. В соответствии с особенностями используемых устройств потоки в/в делят на стандартные, консольные, строковые и файловые.
Строковый поток – это набор или массив символов, передаваемый в основную память.
Файловый поток – набор данных, размещаемый на внешнем носителе.
Стандартный и консольный соответствуют передаче данных от клавиатуры к экрану дисплея или монитора.
При обмене потоками часто используется вспомогательный участок памяти, называемый буфером потока. Данные, поступающие от внешнего источника, передаются в основную память. Первоначально эти данные попадают в буфер ввода, а затем происходит передача данных по команде прикладному процессу. Прикладной процесс, размещаемый в основной памяти, пересылает по команде в буфер вывода и затем происходит передача данных во внешний приемник.
Буфер ввода или вывода выгружается в следующих случаях:
принудительная выгрузка с помощью специальных операторов;
буфер полностью заполнен;
закрывается связанный с буфером поток.
программа успешно завершена, вызывается специальное прерывание, выгружающее буфер.
Использование буферизации позволяет повысить скорость передачи данных, так как передача данных большими порциями значительно снижает время в/в в целом за счет подготовки операторов. Функции в/в для потоков позволяют обрабатывать данные различных размеров и форматов. При этом может выполнятся как формализованный, так и неформализованный в/в. В/в потока позволяет:
открывать и закрывать потоки;
создавать и удалять временные потоки;
анализировать ошибки в/в потока и условие конца потока;
управлять буферизацией и размером буфера;
выгружать буфер, связанный с потоком;
получать и устанавливать указатель текущей позиции в потоке.
