- •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-таблицы(Таблицы с перемешиванием).
2)Альтернативное определение ооп.
По мнению Алана Кея, создателя языка Smalltalk, одного из основателей ООП, объектно-ориентированный подход основан на следующих шести принципах:
1. Всё является объектом.
2. Объекты взаимодействуют, посылая и получая сообщения. Сообщение - это запрос на выполнение действия, дополненный некоторым набором аргументов. B большинстве языков программирования «отправка сообщения» объекту - это просто вызов метода данного объекта.
3. Каждый объект имеет независимую память, которая состоит из других объектов.
4. Каждый объект является представителем (экземпляром) некоторого класса. Класс задаёт общие свойства объектов (данные класса).
5. Класс задаёт поведение объекта (методы класса). Все объекты, которые являются экземплярами одного класса, могут выполнять заданные действия, т.е. обладают одинаковым поведением.
6. Классы организованы в древовидную структуру, называемую иерархией наследования. Данные и методы класса доступны любому другому классу, расположенному ниже в иерархическом дереве.
3)Операции на диаграммах классов. Нотация и семантика. Примеры.
Операции класса задают поведение. которое является общим для всех объектов данного класса. В C++ функции-члены класса по сути и есть операции класса.
Формат задания операций класса (БНФ):
<операция> ::= [<видимость>] <имя операции> ‘(‘ [<список параметров>] ')' [':‘ [<тип результата>] '{' <свойства операции> '}']
<список параметров> - список формальных аргументов, формат их следующий:
<параметр> ::= [<направление>] <имя параметра> ':' <тип параметра> ['[‘<кратность>']‘] [‘=' <значение по умолчанию>] [‘{‘ <свойства параметра > '}']
<направление> ::= 'in' | ‘out' | ‘inout’| ‘return'. Если не указано, по умолчанию “in”.
in - значения параметра передаются в операцию вызывающим объектом.
inout - значения параметра передаются в операцию вызывающим объектом и затем передаются вызывающему объекту после окончания выполнения операции.
out - значения параметра передаются вызывающему объекту после окончания
выполнения операции.
return - значения параметра передаются в качестве возвращаемых значении
вызывающему объекту после окончания выполнения операции.
<видимость>, <имя операции>‚ <имя параметра>, <тип параметра>, <кратность>
и <значение по умолчанию> имеют тот же смысл, что и для атрибутов.
<свойства параметра > - указывает дополнительные свойства значений данного
формального параметра. Имеет тот же смысл что и <модификатор атрибута>.
<свойства операции> - может принимать следующие значения:
redefines <имя операции> - данная операция переопределяет некоторую
наследуемую операцию с именем <имя операции>.
query - операция не изменяет состояния системы и не имеет побочных эффектов.
ordered - значения возвращаемого параметра являются упорядоченными.
unique - значения возвращаемого параметра не могут повторяться.
Примеры записи операций |
Комментарий |
+добавить(in номерТелеФона : Integer [*] {unique}) |
Общедоступная операция, Значение параметра типа Integer передается в операцию вызывающим объектом. Количество цифр в номере любое. Номера телефонов не могут повторяться. |
-изменить(in заработнаяПлата : Currency) |
Скрытая операция. Значение параметра типа Currency передается вызывающим объектом. |
+создать() : Boolean |
Общедоступная операция без параметров. Возвращает значение типа Boolean. |
toString(return : String) |
Операция с одним параметром типа String. |
toString( ) : String |
Операция без параметров. Возвращает значение типа String |