Объектно-ориентированное программирование на С/С++. Лекция 1. Введение. Типы. Классы. Операторы. Перегрузка презентация
Содержание
- 2. Книги и ссылки 1. Страуструп Б. Язык программирования C++. Москва: Вильямс, 2011 2. Мейерс С. -
- 3. Методология познания Метод проб и ошибок. Чем больше сделаете ошибок, тем быстрее научитесь.
- 4. Интегрированная Среда Разработки (IDE) для С++: Microsoft Visual Studio vv. 2019-2022
- 5. Исследования, проведенные в 1970-х годах в Массачусетском технологическом институте и исследовательском центре Xerox Palo Alto Research
- 6. Предполагается, что вы уже знаете понятия цикла (for, while, do{ }while), главной функции (main/WinMain), операторов if/else,
- 7. Чего нет в книгах и учебниках Каждый вызов функции – это отражение вашего желания получить нужный
- 8. Создание проекта
- 9. Компиляция проекта
- 10. В начале файла программы следует указать нужные хидеры: #include #include #include #include // или set или
- 11. Файлы 3 способа доступа к файлам данных: Windows API: CreateFile (и другие функции для работы с
- 12. Потоки данных С: printf и scanf (#include ) C++: cin и cout (#include ) Файловые потоки:
- 13. #include #include void error (char* s, char* s2 ="") { cerr Пример
- 14. Стандартная библиотека шаблонов STL Включает, основанную на методологии обобщенного программирования библиотеку классов, содержащую: Контейнеры (для хранения
- 15. Пример stl-алгоритма: сортировка #include #include using namespace std; vector v; for ( int i=10; i v.push_back(i);
- 16. Три основных свойства ООП Абстракция (данных) (отвлечение) Инкапсуляция (скрытие) Полиморфизм (разнообразие)
- 17. Пример ООП- программы class A{ public: A(){ } ~A(){ } virtual void print(){cout }; class B:
- 18. Отладчик MS Visual Studio Клавиши отладки: F9 – поставить или снять точку останова программы F10 –
- 21. Типы Тип называется встроенным, если компилятор знает, как представить объекты такого типа и какие операторы к
- 22. Классы Ключевым понятием С++ является класс: class. Класс - это определяемый пользователем тип. Классы обеспечивают упрятывание
- 23. Операции Как и встроенные типы, большинство типов, определенных пользователем, описывают операции. Например, класс vector содержит операции
- 24. Какие типы можно признать хорошими? Типы являются хорошими, если они позволяют прямо отразить идею в коде.
- 25. Необходимость классов имеет два аспекта • Представление. Тип знает, как представить данные, необходимые в объекте. •
- 26. Пример класса class X { public: int m_member; // данные-члены X(): m_member(0){ } // конструктор по
- 27. Разработка класса class Date { public: int у; // год int m; // месяц года int
- 28. Если мы забудем немедленно после создания инициализировать объект today, то до вызова функции init_day() этот объект
- 29. Сообщения об ошибках Что делать при обнаружении некорректной даты? В каком месте кода происходит поиск некорректных
- 30. bool Date::check () // возвращает true, если дата корректна { if (m else return true; }
- 31. Операторы В пользовательских классах существует возможность определения операторов: class T { int i=0; public: operator ++
- 32. Некоторые операторы сравнения и логические операторы : R T::operator ==(S b); R T::operator !=(S b); R
- 33. Операторы действия с указателями и обращения к члену класса : R T::operator [ ](S b); R
- 34. Перегрузка операторов и функций Перегрузка операторов - это мощная возможность, которая позволяет для типов, определяемых пользователем,
- 35. Перегрузка оператора ++ Date operator++(Date d){ // префиксный инкрементный оператор: // увеличивает дату на 1 день
- 36. Константные функции-члены Некоторые переменные должны изменяться, потому они так и называются, а некоторые— нет; иначе говоря,
- 37. class Date { public: // . . . int day() const; // константный член: не может
- 38. Выражения в c++
- 39. Выражения в c++
- 40. Выражения в c++
- 41. Выражения в c++
- 42. Основные термины и понятия Типы встроенные и пользовательские. Класс - это определяемый пользователем тип. Большинство типов,
- 43. Конструкторы По умолчанию – без параметров Пользовательские (заданные программистом, в том числе и конструктор по умолчанию)
- 44. Копирование объектов классов Всегда следует создавать объекты, предусматривая инициализацию и конструкторы. Это самые важные члены класса:
- 45. Конструкторы по умолчанию string s; // значение по умолчанию: пустая строка "" vector v1; // значение
- 46. Пользовательские конструкторы К пользовательским конструкторам относятся конструкторы с параметрами. string s (“test”); // значение “test” vector
- 47. Конструкторы копирования и перемещения MyClass (const MyClass& obj); // сигнатура конструктора копирования MyClass ( MyClass&& obj);
- 48. Деструктор - Это функция, где освобождаются ресурсы класса. class MyClass { public: int a; char* c;
- 49. Дружественные классы и функции Функция, не являющаяся членом класса, может получить доступ ко всем членам-класса, если
- 50. Другое предназначение ключевого слова friend - обеспечивать функцию доступа, которую нельзя вызывать как функцию-член. class Iter
- 51. Статические члены класса (фрагмент из книги Б. Страуструпа) Наиболее успешная реализация некоторых типов требует, чтобы все
- 52. Использование статических членов класса может заметно сократить потребность в глобальных переменных. Описывая член как статический, мы
- 53. Шаблоны Шаблон (template) — это класс или функция, параметризованные набором типов и/или целыми числами. template class
- 54. Шаблонные аргументы Аргументы шаблонного класса указываются каждый раз, когда используется его имя. vector v1; // OK
- 55. Специализация шаблонов Вариант шаблона для конкретного набора шаблонных аргументов называется специализацией. Процесс генерации специализаций на основе
- 56. Шаблонные типы членов-классов Шаблон может иметь как члены, являющиеся типами, так и члены, не являющиеся типами
- 57. Для желающих быстро научиться - проекты На следующих слайдах – 15 проектов, простых! Кто желает, можете
- 58. Домашнее задание. Создаем проект 1
- 59. Сразу как задали имя проекта выбираем кнопку Finish
- 60. Ничего не делаем, сразу выбираем Build Solution
- 61. В свойствах проекта меняем Unicode на Multi Byte
- 62. Запускаем исполнение программы (клавиша F5 или через меню) – если ошибок при создании программы нет, то:
- 63. Создаем проект 2
- 64. Добавляем заголовочные файлы, получаем код: #include "stdafx.h" #include #include #include #include #include #include #include #include using
- 65. Кроме того, добавляем строки в главную функцию программы: int _tmain( ) { string s; s= "test";
- 66. Опять, если нет ошибок, должно открыться черное окно, которое теперь не закроется, а выведет строку test.
- 67. Создаем проекты 3 и 4, в которые добавляем по одному новому элементу. Смотрим результат. Новые элементы
- 68. Создаем проект 5, в который также добавляем новый элемент, меняющий поведение программы ifstream ifile; // создает
- 69. Создаем проект 6, в который также добавляем новый элемент void Reader::print( ){ for(int i=0; i cout
- 70. Создаем проект 7, в который добавляем новый элемент – класс с деструктором int _tmain(int argc, _TCHAR*
- 71. Активно используем отладчик: клавиша F9 устанавливает точку остановки – в этот момент можно посмотреть, что внутри
- 73. Скачать презентацию