4_0.pptx
- Количество слайдов: 30
Объектноориентированное Программирование
Структура – пользовательский тип в котором несколько полей Что будет если в структуру добавить поведенческий аспект? Создать концепцию, при которой структурный тип не только содержал бы в себе все свои данные, но и сам бы с ними работал: загружал, сохранял, изменял и т. д.
Класс — это некий шаблон, описание не только самой структуры данных, но и поведения, функциональных возможностей объектов этого класса Объект класса — это переменная этого класса, которая содержит конкретные данные и работает в соответствии с описанной в классе функциональностью. Из жизни: Класс = чертёж Объект = детали изготовленные, по чертежу
С точки зрения создателя Класс=поля+методы Монстр • Поля: – Здоровье – Урон – Скорость • Методы: – Двигаться – Драться
С точки зрения Использующего Класс = интерфейс+чёрный ящик Интерфейс Объект
Инкапсуляция — это свойство объектов скрывать некоторые свои данные и способы их обработки (методы) от окружающей его цифровой среды, оставляя «снаружи» только необходимые и/или требуемые свойства и функциональные возможности. Как это достигается? • public • protected • private общедоступно ? закрыто
Монстр • Поля: – Здоровье – Урон – Скорость • Методы: – Двигаться – Драться (private) (public)
Наследование —механизм, позволяющий расширить и/или изменить структуру уже существующего (родительского) класса, путём написания нового класса (потомка), который полностью наследует все свойства и методы и, плюс, добавляет что-то своё.
Монстр Дракон • Поля: – Здоровье – Урон – Скорость • Методы: – Двигаться – Драться Как это достигается? • public • protected • private – Двигаться(Полёт) – Драться(Хвост) – Плевать огнём общедоступно наследники закрыто
Девушка Демон Множественное наследование • Поля: – Здоровье – Интуиция • Методы: – Двигаться – Угадывать Ведьма • Поля: – Здоровье – Интуиция – Магия • Методы: – Двигаться – Угадывать – Проклинать – Здоровье – Магия • Методы: – Двигаться – Проклинать
Полиморфизм monstr *tmp; If(a>5) tmp= new dragon; else tmp = new shark; tmp->move(); Полиморфизм -возможность объектов с одинаковой спецификацией иметь различную реализацию.
Вопросы?
Стандартная библиотека
Потоки <ios> базовый класс потоков ввода/вывода <istream> шаблон потока ввода <ostream> шаблон потока вывода <iostream> стандартные объекты ввода/вывода <fstream> ввод/вывод в файл <sstream> ввод/вывод в строку <iomanip> манипуляторы
ios iostream fstream sstream
Объект cin cout Класс istream ostream #include <iostream> int _tmain(int argc, _TCHAR* argv[]){ using std: : cin; using std: : cout; int i; cin>>i; cout<<"you print "<<i; return 0; }
Приоритет операций cout<<i+j cout<<(i<j) cout<<(i<<j) Буферизация
Чтение строк до пробела char str 1[100], str 2[100]; С клавиатуры вводят: one two three four five На выходе str 1 one str 2 two
Форматирование данных • Флаги • Манипуляторы • Форматирующие методы
Флаги В классе ios присутствуют методы flags, setf, unsetf Методы для изменения флагов форматирования std: : ios: : width(int); изменяет ширину поля Ios: : precision(int); точность вещ. чисел Ios: : fill(char); символ заполнения Подробнее в Павловской
Манипуляторы <iomanip> • Простые – dec, oct, hex – endl • Параметризованные – setbase(int); – setw(int); – setfill(int); – setprecision(int); почему int? setfill((‘. ’);
Неформатированное чтение/запись • get(c); извлекает символ • get(buf, num, lim=‘n’); считывает до символа lim или num символов • getline(buf, num, lim=‘n’); аналогично, но lim тоже читается Пример cin. getline(str, n. Max, ‘n’); • read/write(buf, num); • peek(); • eof(); считывает num символов возвращает следующий символ, без удаления из потока если eofbit, то значение
Файловые потоки ifstream/ofstream/fstream Пример ofstream outf(“input. txt”, ios: : out|ios: : trunc); или ofstream outf; out. open(“…. . ”, …. . ) ; Не забываем закрывать out. close(); Если хотим подсказки для ios, то подключаем iostream Ничего не мешает перегрузить cin и cout
• in • out • ate mode открыть на чтение открыть на запись установить указатель на конец файла • app открыть для добавления в конец файла • trunc если файл существует удалить • binary бинарный Нет в стандарте! nocreate noreplace
Строковые потоки Позволяют считывать и записывать информацию из областей оперативной памяти <sstream>
Строки #include <string> Так и только так! string модуль С++ cstring или string. h модуль С Объявление string st 1; string st 2("123"); string st 3(st 2); Присваивание st 1=‘a’; st 1=“ 123”; st 1=st 2;
http: //www. cplus. com/reference/string/ Итераторы begin и end string str ("Test string"); string: : iterator it; for ( it=str. begin() ; it < str. end(); it++ ) cout << *it; Возможности length() и size() длинна строки capacity() занятая “память” max_size() максимальная длинна clear отчистить строку empty проверка на пустоту
оператор [] или at() Модификаторы += или append() push_back() assign(“ 123”); . assign(“ 123”, 2); . assign(“ 123”, 1, 2); . assign(3, ’. ’); replace swap получить символ добавить в хвост строку добавить в хвост символ подменяет содержание //на выходе 123 //на выходе 12 //на выходе 23 //на выходе … подменяет часть строки поменять местами
Заложены функции • Поиска подстроки (find) • Слияния строк (compare) • Копирования части символов из строки • Генерации подстроки • и. т. д Операторы == != < > корректны www. cplus. com/reference/string
4_0.pptx