ПРОГРАММИРОВАНИЕ II презентация
Содержание
- 2. Общий план курса Объектно-ориентированное программирование (на примере основных концепций языка C++)
- 3. Часть I. Основы языка С++ Концепция класса. Видимость членов. Конструкторы/деструкторы. Статические
- 4. Литература Б. Страуструп. Язык программирования С++. Третье издание: Пер. с англ.
- 5. Программа на С #include "myStack.h" void init_stack(Stack* st, int size) {
- 6. Задачи, которые хотелось бы решить при создании нового языка Удобное моделирование
- 7. Краткая история С++ Язык С – 1970 год (действующий ISO стандарт
- 8. Что является С и не является С++ Отсутствие типа поразумевает int.
- 9. Новые возможности С++ Константы, инициализаторы в операторах, новое в приведении типов,
- 10. Логический тип bool int x=0; bool b = x==1;//значения типа bool:
- 11. Константы #define PI 3.14159 //стиль С const float PI =
- 12. Указатели и константы void Proc(char * p, const char * q)
- 13. Ссылки: пример из Паскаля procedure Inc(var x:integer) begin x:=x+1; end; …
- 14. Ссылки в С++ //что можно в С void Inc(int* x) {
- 15. Концепция класса class Complex { double re; double im; };
- 16. Классы и объекты: реализация стека class Stack { int sz; int
- 17. Конструирование объектов – I
- 18. Конструирование объектов – II
- 19. Конструирование объектов – III Создание нестатического объекта, являющегося членом класса: class
- 20. Конструктор по умолчанию Конструктор без аргументов называется конструктором по умолчанию.
- 21. Копирующий конструктор
- 22. “Плохой” копирующий конструктор
- 23. Уничтожение объектов Деструктор вызывается: – для автоматических объектов – когда управление
- 24. Статические члены и методы класса class AAA { static const int
- 25. Объявление mutable логическое и физическое постоянство class SomeClass { char
- 26. Перегрузка имен функций – I int abs(int);
- 27. Перегрузка имен функций – II
- 28. Перегрузка имен функций – III Соответствие, достигаемое за счет продвижения в
- 29. Перегрузка имен функций – IV Результат разрешения перегрузки не зависит от
- 30. Переопределение операторов – I class Complex { double re; double im;
- 31. Переопределение операторов – II + - * /
- 32. Переопределение операторов – III Бинарные операторы могут определяться: Либо в виде
- 33. Переопределение операторов – IV Унарные операторы могут определяться: Либо в виде
- 34. Оператор присваивания ВАЖНО: В отличии от копирующего конструктора оператор присваивания работает
- 35. “Плохой” оператор присваивания
- 36. Стандартные потоки ввода/вывода class istream { … } cin; class ostream
- 37. Переопределение операторов – V class Complex { double re, im; public:
- 38. Z=M*X+Y и эффективность «Типичный» код в типичной программе по линейной
- 39. Z=M*X+Y и отложенные вычисления – I void mul_add_and_assign(Vector&, const Matrix&,
- 40. Z=M*X+Y и отложенные вычисления – II class Vector { // public:
- 41. Друзья класса – I Нестатическая функция-член обладает следующими свойствами: доступ к
- 42. Друзья класса – II class Matrix; class Vector { int length;
- 43. Друзья класса – III Друзей можно объявлять как в private-, так
- 44. Области видимости и пространства имен Глобальная ОВ (на уровне всей программы).
- 45. Пространства имен – I Синонимы пространства имен: namespace UT=UsefulThings; …
- 46. Пространства имен – II Разрешение области видимости: namespace ZZZ { int
- 47. Пространства имен – III Неименованные пространства имен: namespace { int Var;
- 48. Исключения – I При возникновении ошибок, которые невозможно обработать в месте
- 49. Исключения – II class Stack { … public: class Overflow {
- 50. Исключения – III try { throw E(); } catch (H) {
- 51. Исключения – IV Повторная генерация исключения try { throw E();
- 52. Исключения – V Техника обратных вызовов (callback techniques) #include “LexicalAnalyser.h” namespace
- 53. Сортировка в стандартной C-библиотеке
- 54. Шаблоны – I Процедурное программирование: один раз пишем – используем многократно;
- 55. Шаблоны – II template<class T>void qsort(T a[], int p, int r)
- 56. Шаблоны – III
- 57. Шаблоны – IV template<class Type> class Stack { int sz; int
- 58. Template-реализация стека
- 59. Наследование в ООП – I class SomeClass{ int val; public: SomeClass(int
- 60. Наследование в ООП – II #include <list> namespace UsefulThings { template<class
- 61. Наследование в ООП – III Жизнь до ист.мат. Совмещение типов в
- 62. Наследование в ООП – III Еще одна попытка
- 63. Наследование в ООП – IV Класс, обеспечивающий интерфейс для множества других
- 64. Наследование в ООП – V Реализация
- 65. Наследование – VI class Person { char name[100]; Date birthday; int
- 66. Преобразования типов static_cast int x=static_cast<int>(1.0); reinterpret_cast int* x=reinterpret_cast<int*>(0xEEEE); dynamic_cast
- 67. Обзор STL string (строки); типы vector, list, deque, queue, stack,
- 68. Стек, предоставляемый STL template<class Ty, class Container = deque<_Ty>> class stack
- 69. Пример: for_each-шаблон template<class _InIt, class _Fn1> inline _Fn1 for_each(_InIt
- 70. Современное ООП вне C++. Расширение Микрософт языка C++ – C++/CLI
- 71. Managed Extensions for C++ и C++/CLI Managed Extensions for C++ компании
- 72. Функции CLR CLR обеспечивает автоматическое размещение объектов и управление ссылками на
- 73. Выделение памяти в управляемой куче При запуске приложения CLR резервирует для
- 74. Освобождение памяти в управляемой куче Когда сборщик мусора (СМ) выполняет сборку
- 75. Эмпирические законы поведения объектов в куче Уплотнять память для части управляемой
- 76. Поколения объектов Объекты, созданные после последней сборки мусора или после запуска
- 77. Расширения C++/CLI для управления памятью ref class / ref struct – управляемые к/с.
- 78. Управляемые классы/структуры В то время как «родные» объекты C++ могут создаваться
- 79. Внутренний указатель interior_ptr
- 80. Пришпиленный указатель pin_ptr
- 81. Некоторые другие расширения value class interface class property delegate abstract
- 82. Скачать презентацию
Слайды и текст этой презентации