- •1. Основные операции языка Си.
- •3. Язык Си: указатели и массивы. Определения, примеры.
- •4. Язык Си: объявления функций, передача аргументов. Примеры.
- •5. Язык Си: строки и указатели. Определения, примеры.
- •8. Язык Си: структуры. Пример.
- •9 . Язык Си: битовые поля и объединения. Примеры.
- •10. Язык Си: оператор определения типа. Примеры.
- •11.Язык Си: препроцессор. Директивы препроцессора, примеры
- •12.Язык Си: программный стек. Пример работы стека.
- •13. Линейные списки. Операции с линейными списками.
- •14 Hash-таблицы
- •15 Двоичные деревья
- •17. Язык Си: ссылочные типы. Пример.
- •18. Язык Си: защита указателей и объектов, неявное изменение объектов.
- •19. Язык Си: организация ввода/вывода. Пример: слияние файлов. Организация ввода/вывода
- •Открытие файла
- •Закрытие файла
- •Ввод из файла
- •Вывод в файл
- •Особые ситуации
- •Пример: слияние файлов
- •20. Язык Си: произвольный доступ к файлам. Пример.
- •22. Язык Си: примеры реализаций функций ввода/вывода (getc,putc).
- •23. Язык Си: примеры реализаций функций ввода/вывода (fgets, fputs).
- •24. Язык Си: работа с файловой системой. Пример.
- •25. Основные понятия ооп: абстракция, инкапсуляция, наследование, полиморфизм.
- •27. Объекты классов: статические,автоматические, динамические. Примеры.
- •28. Управление доступом к элементам классов. Пример.
- •29. Шаблоны функций и шаблоны классов. Примеры.
- •30. Наследование. Пример.
- •31. Множественное наследование. Пример.
- •П оскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:
- •32. Виртуальные функции. Раннее и позднее связывание.
- •33. Абстрактные классы. Их назначение, пример.
- •34. Полиморфный контейнер (пример).
- •36. Конструкторы, их виды, примеры. Вызов конструкторов при наследовании.
- •37. Деструкторы. Их назначение, примеры.
- •39. Перегруженные операции. Примеры.
- •40. Обработка нештатных ситуаций. Объекты-исключения. Примеры.
- •Вопрос 1: какова дальнейшая судьба этих ресурсов, будут ли они освобождены?
- •Вопрос 2: как распознавать подобные ситуации и корректно их обрабатывать?
- •41. Модели жизненного цикла программного обеспечения. Модели жизненного цикла по
- •Спиральная модель жизненного цикла по.
- •42. Проектирование программного обеспечения и uml.
- •Uml (основные понятия)
- •Канонические диаграммы языка uml 2.X
- •43. Диаграммы прецедентов. Нотация, семантика, примеры.
- •Основные обозначения на диаграммах прецедентов:
- •44. Сценарии выполнения прецедентов (пример).
- •45. Диаграммы классов. Нотация, семантика, отношения.
- •46. Атрибуты на диаграммах классов. Нотация и семантика. Примеры.
- •47. Операции на диаграммах классов. Нотация и семантика. Примеры.
- •48. Отношения ассоциации на диаграммах классов.
- •Отношения ассоциации
- •Предприятие
- •Сотрудник
- •Отношения обобщения
- •Отношения композиции
- •53. Язык c#: сборки, манифесты, домены, компоненты.
- •55. Java как язык ооп для машинно-независимых приложений.
- •56. Обзор Java-технологий NetBeans ide.
- •57. Компонентные технологии разработки программного обеспечения.
- •59.Обёртки в языках c# и Java.
- •60. Архитектурный паттерн mvc. Область применения, схема взаимодействия.
33. Абстрактные классы. Их назначение, пример.
Абстрактные классы используются для порождения производных классов. «Нет ничего практичнее хорошей абстракции» (перефразируя Р.Кирхгофа). Переопределим абстрактную фигуру ещё раз следующим образом:
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); };
//перемещение фигуры по экрану
Класс называется абстрактным, если он содержит хотя бы одну чистую виртуальную функцию. Создание объектов абстрактных классов бессмысленно, т.к. такие объекты будут нежизнеспособны. Чистые виртуальные функции должны быть перекрыты в классах-потомках в обязательном порядке.
Таким образом, абстрактные классы как бы «вынуждают» своих потомков реализовывать определенные минимальные модели поведения, обеспечивая надлежащую функциональность производных классов.
34. Полиморфный контейнер (пример).
Пример полиморфного Контейнера
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;}
35.Виртуальная схема наследования.
Виртуальная схема наследования позволяет избегать неоднозначности в процессе множественного наследования.
Это достигается за счёт применения механизма позднего связывания и использования ссылочных типов.
При этом, вся внутренняя работа выполняется компилятором и конструкторами объектов. Разработчику кода необходимо лишь указать ключевое слово “virtual” при описании процесса наследования.
Пример. Пусть есть такие описания:
// Вариант 1 – используем обычную схему множественного наследования class Base { ….. }; class Derived : public Base, public Base { ….. }; // так нельзя (синтаксис!) class X : public Base { ….. }; class Y : public Base { ….. }; class Derived : X, Y { ….. }; // так можно, в Derived попадёт две копии Base
// Вариант 2 – используем виртуальную схему множественного наследования class X : virtual public Base { ….. }; class Y : virtual public Base { ….. }; class Derived : X, Y { ….. }; // так можно, причём в Derived // избежим неоднозначности с Base |