- •1)Стандартные операции языка Си.
- •2)Линейные списки, операции с линейными списками.
- •3)Модели жизненного цикла по
- •Итерационная модель
- •Спиральная модель жизненного цикла по
- •II билет)
- •1)Обработка нештатных ситуаций. Объекты исключения. Примеры.
- •Вопрос 1: какова дальнейшая судьба этих ресурсов, будут ли они освобождены?
- •Вопрос 2: как распознавать подобные ситуации и корректно их обрабатывать?
- •2) Основные понятия ооп: абстракция, инкапсуляция, наследование, полифморфизм
- •3)Диаграммы классов. Нотация, отношения.
- •III билет)
- •1)Язык Си: указатели и массивы. Определения, примеры.
- •2)Абстрактные классы. Их назначение, пример.
- •3)Диаграммы прецедентов. Нотация, семантика, примеры.
- •Основные обозначения на диаграммах прецедентов:
- •IV билет)
- •1)Язык Си: объявление функций, передача аргументов. Примеры.
- •2)Язык Си: Работа с файловой системой. Примеры.
- •3)Сценарий выполнения прецедентов(пример).
- •V билет)
- •1)Язык Си: строки и указатели. Определения, примеры.
- •2)Язык Си: Низкоуровневый ввод/вывод. Пример.
- •3) Атрибуты на диаграммах классов. Нотация и семантика. Примеры.
- •VI билет)
- •1)Язык Си: аргументы командной строки. Перегруженные функции. Примеры.
- •2)Альтернативное определение ооп.
- •3)Операции на диаграммах классов. Нотация и семантика. Примеры.
- •VII билет)
- •1)Язык Си: организация ввода/вывода. Пример: слияние файлов.
- •Открытие файла
- •Закрытие файла
- •Ввод из файла
- •Вывод в файл
- •Особые ситуации
- •Пример: слияние файлов
- •2)Объекты классов. Статические, автоматические, динамические. Примеры.
- •3)Полиморфный контейнер(пример).
- •VIII билет)
- •1)Язык Си: структуры. Пример.
- •2)Управление доступом к элементам классов. Пример.
- •3)Двоичные деревья. Алгоритмы обхода, поиска, вставки, сортировки.
- •IX билет)
- •1)Язык Си: Произвольный доступ к файлам. Пример.
- •2) Конструкторы и деструкторы. Их виды. Вызов конструктора при наследовании Примеры.
- •3)Проектирование по и uml. Основные понятия.
- •Uml (основные понятия)
- •Канонические диаграммы языка uml 2.X
- •X билет)
- •1)Язык Си: оператор определения типа. Примеры.
- •2)Наследование классов. Пример с Абстрактными фигурами.
- •XI билет)
- •1)Язык Си: Препроцессор. Директивы препоцессора. Примеры.
- •2)Множественное наследование. Виртуальная схема наследования. Пример.
- •П оскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:
- •3)Шаблоны Функций и шаблоны классов. Примеры.
- •XII билет)
- •1)Язык Си: программный стек. Пример работы стека.
- •2)Виртуальные функции. Раннее и позднее связывание.
- •3)Hash-таблицы(Таблицы с перемешиванием).
3) Атрибуты на диаграммах классов. Нотация и семантика. Примеры.
Атрибуты класса задают свойства, которые являются общими для всех объектов
данного класса. В С++ элементы данных класса по сути и есть атрибуты класса.
Формат задания атрибутов класса (БНФ):
<атрибут>::= [<видимость>] [‘/’] <имя атрибута> [‘:’<тип атрибута>] [‘[‘<кратность>’]’]
[‘=’ <значение по умолчанию>] [‘{‘<модификаторы атрибута> ‘}’]
<видимость> атрибутов может принимать следующие значения:
+ public (общедоступный).
- privatе (скрытый, видим только внутри класса).
# protected (защищенный, видим внутри класса и для потомков).
~ package (видим только в ближайшем охватывающем пакете)
Символ “/” означает, что атрибут является производным. Значение производного
атрибута может быть вычислено на основе значений других атрибутов этого или
других классов. Поэтому данный атрибут называют иногда вычислимым.
<имя атрибута> - строка текста, которая используется в качестве идентификатора
атрибута. Имя должно быть уникальным в пределах данного класса.
<тип атрибута> - имя классификатора, который является типом данного атрибута.
<кратность> - характеризует общее количество конкретных значений для атрибута,
которые могут быть заданы для объектов данного класса. По сути, задает мощность
множества значений атрибута. Используется специальный синтаксис.
<значение по умолчанию> - выражение. которое служит для задания начального
значения или значений данного атрибута в момент создания объекта класса.
<модификатор атрибута> - текстовое выражение, которое придает атрибуту
дополнительную семантику. Формат следующий (БНФ):
<модификатор атрибута> ::= ‘readOnly' | 'union’ | ‘subsets‘ <имя атрибута> | 'redefines'
<имя атрибута> | ‘ordered' I ‘unique' | <ограничение атрибута>
Примеры записи атрибутов |
Комментарий |
+ имяСотрудника : String {readOnly} |
Общедоступный атрибут типа String. Разрешено только чтение значений. |
~ датаРождения : Data {readOnly} |
Доступным в пределах пакета атрибут типа Data. Разрешено только чтение значений. |
# /возрастСотрудника : Integer |
Защищенный производный атрибут типа Integer. Значение атрибута вычислимо. |
+ номерТелефона : Integer [1..*] {unique} |
Общедоступный атрибут типа Integer. Количество цифр в номере >= 1. Значения номеров телефонов не могут повторяться. |
- заработнаяПлата : Currency = 500.00 |
Скрытый атрибут типа Сurrency. Значение по умолчанию есть 500.00. |
VI билет)
1)Язык Си: аргументы командной строки. Перегруженные функции. Примеры.
Запуская исполняемый файл в DOS, можно указать для него ряд аргументов, например:
a.exe один два три
Операционная система сформирует массив указателей на строки символов (лексемы), которые появились в командной строке, и передаст их в функцию main. Количество лексем - это аргумент argc, массив указателей на лексемы - аргумент argv.
В нашем случае:
argv [0] -> “a.exe”
argv [1] -> “один”
argv [2] -> “два”
argv [3] -> “три”
Пример обработки аргументов командной строки:
main ( int argc, char* argv [] )
{
while (--argc )
printf (“ %s%c ”, *++argv, (argc > 1) ? ‘ ’ : ‘\n’ );
}