- •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)Абстрактные классы. Их назначение, пример.
Абстрактные классы используются для порождения производных классов. «Нет ничего практичнее хорошей абстракции» (перефразируя Р.Кирхгофа). Переопределим абстрактную фигуру ещё раз следующим образом:
class
TFigure : public TLocation { //абстрактная
фигура
protected:
bool Vision; //признак видимости фигуры
на экране
public:
TFigure(int, int); //конструктор
virtual
~TFigure(); //виртуальный деструктор
virtual
void Show() = 0; //чистая виртуальная функция
virtual
void Hide() = 0; //чистая виртуальная функция
bool IsVisible();
//получение признака видимости
void MoveTo(int, int); };
//перемещение фигуры по экрану
Класс называется абстрактным, если он содержит хотя бы одну чистую виртуальную функцию. Создание объектов абстрактных классов бессмысленно, т.к. такие объекты будут нежизнеспособны. Чистые виртуальные функции должны быть перекрыты в классах-потомках в обязательном порядке.
Таким образом, абстрактные классы как бы «вынуждают» своих потомков реализовывать определенные минимальные модели поведения, обеспечивая надлежащую функциональность производных классов.
3)Диаграммы прецедентов. Нотация, семантика, примеры.
Назначение диаграмм прецедентов:
1. определить границы функциональности ПО в контексте предметной области.
2. Специфицировать функциональные требования к ПО в форме прецедентов.
3. Получить концептуальную модель ПО для ее последующей детализации.
4. Подготовить документацию для взаимодействия разработчиков и заказчиков ПО.
Основные обозначения на диаграммах прецедентов:
Прецедент (use case) есть общая спецификация совокупности выполняемых системой действий с целью предоставления некоторого наблюдаемого результата, который имеет значение для одного или нескольких акторов.
Прецедент отвечает на вопрос «Что должна выполнять система?», не отвечая на вопрос «Как она должна выполнять это?».
Прецедент именуется отглагольным существительным или глаголом в неопределенной форме.
Актор есть любая внешняя по отношению к проектируемой системе сущность, которая взаимодействует с системой и использует ее функциональные возможности для достижения определенных целей или решения частных задач.
Примеры акторов: кассир, клиент банка, банковский служащий, продавец магазина, пассажир авиарейса, администратор гостиницы, сотовый телефон.
На диаграммах прецедентов взаимодействие актора с прецедентом всегда обозначается отношением ассоциации, например, так:
Отношение включения (include) отражает тот факт, что некоторый прецедент содержит поведение, определенное в другом прецеденте, например:
Отношение расширения (extend) определяет взаимосвязь одного прецедента с некоторым другим прецедентом, функциональность или поведение которого задействуется первым прецедентом не всегда, а только при выполнении некоторых дополнительных условий.
Отношение обобщения (generalization relationship) предназначено для отражения того факта, что один элемент модели является специальным или частным случаем другого элемента модели.
Например, так:
Или так:
Легко видеть, что отношение обобщения действует аналогично отношению наследования, но направлено оно «в обратную сторону».
Диаграммы прецедентов должны отражать функциональные требования к ПО
Требование к ПО – это некоторое свойство, которым должна обладать система или ее компонент, чтобы удовлетворять условиям контракта, положениям стандартов, формальной спецификации или технической документации.
Функциональные требования определяют действия, которые должна быть способна выполнить система, без рассмотрения физических особенностей их реализации.
Функциональные требования определяют внешнее поведение системы. Лучше всего они описываются в форме прецедентов. Каждому функциональному требованию должен соответствовать отдельный прецедент.
Пример 1. Диаграмма прецедентов для продажи товаров через Интернет-магазин.