- •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)Полиморфный контейнер(пример).
Пример полиморфного Контейнера
Cstr
CColymorph
Cint
Cpoint
#include <list>
#Include <iostream>
Using namespace std;
class CPolymorph;//абстрактный класс
{
Public:
Virtual CPolymorph& get()=0;//Чистая виртуальная функция;
};
Class CStr : public CPolymorph
{
Char *S
Public:
CStr(char* s =”xyz”){S = new char[strlen(s)+1];strcpy(S,s);}
Cstr& get(){cout << “Object Cstr: ”<< S << endl; return *this;}
};
Class CPoint: public CPolymorph
{
Int X,Y;
Public:
CPoint(int x = 0, int y = 0){X = x; Y = y;}
CPoint& get(){cout << “Object CPoint: ” << “X = ”<<X<<”Y = ”<<Y<<endl; return *this;} }
Int main()
{ Cint n; Cstr m; CPoint k;
List<CPolimorph*> c;
c.pushfront(&n);
c.pushfront(&m);
c.pushfront(&k);
for(list<CPolymorph>::iterator it = c.begin(); it != c.end(); ++c) *c->get(); return 0;}
VIII билет)
1)Язык Си: структуры. Пример.
Формат: struct <Имя - структуры> {<список- полей>};
struct <Имя - структуры> {<описатели- переменных>};
struct [<Имя - структуры>] {<список- полей>} <описатели-переменных>;
Аналоги структур в реальной жизни – различные формуляры, анкеты, учетные карточки.
Существует два способа доступа к полям структурных переменных:
<Имя – структурной-переменной> . <имя-поля>
<указатель-на-структурную-переменную> -> <имя - поля>
ПРИМЕР: электронная картотека для домашней библиотеки
Struct {
Char * ptitle; //наименование книги
Char * pauthor; //автор
Float price; //стоимость Struct form books [1024]; //картотека есть массив структур
Struct form* pbook = books; //указатель на массив структур
2)Управление доступом к элементам классов. Пример.
Управление доступом к элементам классов по существу позволяет управлять степенью инкапсуляции в классе. Сокрытие данных и методов защищает объекты от несанкционированного доступа и от непреднамеренной порчи.
Рассмотрим значения следующих ключевых слов:
Private - элементы класса доступны методам этого класса и дружественным функциям. Private есть значение по умолчанию.
Protected - элементы класса доступны методам этого класса, методам
производных от него классов и дружественным функциям.
Public - элементы класса доступны любым функциям текущего проекта.
Friend - открывает доступ к элементам класса для функций, не являющихся
методами данного класса (т.e. объявляет дружественные функции), а также
используется для объявления дружественных классов.
class CPoint { // это пример сокрытия данных
protected:
int Х, Y; // координаты точки
public:
CPoint ( int a, int b ) { X = a; Y = b; } // конструктор объекта
int GetX( ) {return X; } // получить координату Х
int GetY( ) {return Y; } // получить координату Y
};
void main ( void ) { CPoint point ( 10, 20 ); }
Каким образом регулируются права доступа к элементам классов при наследовании классов? Рассмотрим следующую синтаксическую конструкцию:
class Derived: <модификатор-доступа> Base { ...... };
Здесь Base - базовый класс (предок), а Derived - производный класс (потомок).
См. след стр.
Таблица определения прав доступа при наследовании |
||
Base |
<модификатор-доступа> |
Derived |
private |
private |
не доступны |
protected |
private |
private |
public |
private |
private |
private |
public |
не доступны |
protected |
public |
protected |
public |
public |
public |