- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Основные правила использования базовых и производных классов:
Пусть функция F принадлежит базовому классу Б. Тогда в производномклассеП можно:
1)полностьюзаменитьфункциюF (старая Б::F иноваяП::F);
2)доопределить (частичноизменить)функцию F;
3)использоватьфункциюБ::F безизменения.
-Если объявить указатель рБ на базовый класс, то ему можно присвоитьзначениеуказателянаобъектпроизводногокласса;
-указателю рП на производный класс нельзя присвоить значение указателянаобъектбазовоrокласса;
-регулирование доступа к компонентам базового и производного классов осуществляется с помощью атрибутов private, public и protected;
-производный класс может быть в свою очередь базовым.
Множество классов, связанных отношением наследования базовый - производный,называетсяиерархиейклассов.
Наследование атрибутов компонентов базового класса:
наследник
|
|
|
|
|
|
|
|
PRIVATE |
|
PROTECTED |
|
PUBLIC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PRIVATE |
|
PROTECTED |
|
PUBLIC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:PUBLIC:PROTECTEDPRIVATE родитель
class base {protected: int x; public: char * str;
void f(int, char*);
};
class generate : private base
{
protected: int base::x; public:
char * base::str; base::f;
…}
Множественное наследование
class base1 |
|
|
|
|
{public: |
|
|
|
|
Часть унаследованная от класса |
||||
int field; |
||||
base1 |
|
|
||
char * str; |
|
|
||
}; |
Часть унаследованная от класса |
|||
class base2 |
base2 |
|
|
|
{public: |
|
|
||
|
|
|
||
Собственная |
часть |
класса |
||
int field; |
||||
int data; |
generate |
|
|
|
}; |
|
|
|
|
|
|
|
class generate :public base1, public base2
{…};
Generate ex; ex.field = 4; ex.base1::filed = 4;
class base |
base |
|
|
|
|
|
base |
|
|
||
{public: |
|
|
|
|
|
|
|
|
|
|
|
int field; |
gen1 |
|
|
|
|
|
gen2 |
|
|
||
char *str; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
global |
|
|
|
|
|
|||
classgen1 : public base |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{public: |
|
|
Часть |
унаследованная |
от |
класса |
|||||
|
|
||||||||||
floats; |
|
|
base |
|
|
|
|
|
|
|
|
}; |
|
|
Часть |
унаследованная |
от |
класса |
|||||
classgen2 : public base |
|
|
gen1 |
|
|
|
|
|
|
|
|
{public: |
|
|
Часть |
унаследованная |
от |
класса |
|||||
char * name; |
|
|
base |
|
|
|
|
|
|
|
|
}; |
|
|
Часть |
унаследованная |
от |
класса |
|||||
classglobal : publicgen1, publicgen2 |
gen2 |
|
|
|
|
|
|
|
|||
{…} ex; |
|
|
Собственная часть класса global |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|