Лекция 18. Повторение и введение в STL (часть 1) Красс Александр Alexander.Krass@gmail.com СПбГУ ИТМО, 2008.

Презентация:



Advertisements
Похожие презентации
Лекция 16. Введение в ООП. Часть 7 Красс Александр СПбГУ ИТМО, 2008.
Advertisements

Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Лекция 11. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Лекция 10. Введение в ООП. Часть 3 Красс Александр СПбГУ ИТМО, 2008.
Лекция 8. Введение в ООП. Часть 1 Красс Александр СПбГУ ИТМО, 2008.
Лекция 9. Введение в ООП. Часть 2 Красс Александр СПбГУ ИТМО, 2008.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Лекция 5. Подготовка к ООП Красс Александр СПбГУ ИТМО, 2008.
Лекция 7. Введение в ООП через практику. Часть 2 Красс Александр СПбГУ ИТМО, 2008.
Лекция 12 Перегрузка операторов. Часть 2. Подбельский гл. 9.7, Страуструп гл. 11, Мейрс п. 11,15-17,19. Перегрузка копирующего конструктора T(const T&)
Лекция 6. Введение в ООП через практику. Часть 1 Красс Александр СПбГУ ИТМО, 2008.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Лекция 31. Динамическая информация о типе Красс Александр СПбГУ ИТМО, 2009.
1 Переопределение операций Макаревич Л. Г.. 2 Зачем нужна перегрузка операций? class Complex { double re; double im; public: Complex(double r=0, double.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Лекция 15. Введение в ООП. Часть 6 Красс Александр СПбГУ ИТМО, 2008.
Транксрипт:

Лекция 18. Повторение и введение в STL (часть 1) Красс Александр СПбГУ ИТМО, 2008

2 Темы Чуть-чуть повторения Введение в STL (класс string) Практика

3 Помни о прошлом! class A { int *i; public: A() { i = new int(5); } virtual void foo() { cout << "A::foo()\n"; } virtual ~A() { delete i; foo(); } }; class B : public A { int *j; public: B() { j = new int(7); } virtual void foo() { cout << "B::foo()\n"; } virtual ~B() { delete j; foo(); } }; void main() // Что мы увидим { // на экране? A *a = new B; delete a; }

4 Помни о прошлом! class A { int *i; public: A() { i = new int(5); } virtual void foo() { cout << "A::foo()\n"; } virtual ~A() { delete i; foo(); } }; class B : public A { int *j; public: B() { j = new int(7); } virtual void foo() { cout << "B::foo()\n"; } virtual ~B() { delete j; foo(); } }; void main() // B::foo() { // A::foo() A *a = new B; delete a; }

Наш класс String class String { public: String(const char* s = NULL); // Конструктор String(const String& s); // Конструктор копирования ~String (); // Деструктор String& operator= (const String& s); // Присваивание String operator+ (const String& s); // Конкатенация char& operator[] (int element); // Оператор индексации friend ostream& operator<< (ostream& os, String& s); // Вывод в поток int Length () const; // Длина operator const Char*() const; // Преобразование типа char * ToChars(); // Возвращает поле класса data private: char* data; }; 5

std::string Очень похож на наш класс String. Умеет намного больше. Пишем в поисковике std string и происходит чудо! 6

Задание Всем известно, что инопланетяне из солнечной системы «Большие редиски» несколько десятков тысяч лет используют нашу планету как свалку своих отходов. А Вы думали откуда такая наука была в древнем Египте, Китае? Просто в учебниках для детского сада этих самых пришельцев много полезных картинок. А почему погибла Атлантида? Думаю, что Вы уже догадываетесь. К счастью, у них почти всё идёт на переработку. 7

Задание Пришельцы иногда сбрасывают очень полезные высокотехнологичные вещи, иногда даже почти исправные (как в случае с Атлантидой). 8

Задание Вы работник сверхсекретного подразделения по борьбе с инопланетным мусором «Люди в чёрном». За великолепный послужной список Вас перевели на несколько месяцев в отдел разработки ПО Вашей организации. Вам дали задание написать часть прототипа тренажёра организации работы с инопланетным мусором (по готовому тренажёру будут обучать новичков).

Задание Схема Вашей части мусора оборота: 1. В специальный отдел временного хранилища поступает некоторое число единиц мусора. 2. Каждая единица должна поступить в отдел оценки. 3. По окончанию работы с единицей мусора в отделе оценки составляется документ, содержащий заключение о ценности и способе использования этой единицы. Далее единица мусора поступает во временное хранилище. 4. В любой момент один из отделов, занимающийся исследованием, использованием или утилизацией инопланетного мусора может попросить прислать со склада все вещи соответствующие некоторому описанию, которое содержится в документе, сформированном отделом оценки. Эти отделы никогда не возвращают взятые единицы мусора назад во временное хранилище. 10

Задание Единица мусора, которая поступает в п.1 – это экземпляр класс std::string, содержащий набор букв A и B. Если единица мусора, поступившая в распоряжение отдела оценки содержит три идущих подряд буквы A, то она считается объектом, подлежащим исследованию; если содержит не более двух идущих подряд букв A, то считается бесполезной и подлежит утилизации; если содержит две идущих подряд буквы A и букв B больше чем букв A, то считается, что элемент мусора не может быть использован на данном этапе развития науки и поступает в распоряжение отдела длительного хранения. В п. 4 подразумевается, что любой отдел может потребовать все вещи из временного хранилища соответствующие одному из классов, перечисленных выше. 11

Требования По окончанию работы отдела оценки над единицей мусора ей должен соответствовать экземпляр одного из классов: ResearchableItem, UtilizableItem, UnknownItem. Эти классы являются наследниками класса Item. Элементы мусора во временном хранилище находятся в массиве указателей на класс Item длины 100. Ваш начальник – просто зверюга! Он заставляет использовать для всех сущностей (отдел оценки, отдел временного хранения и т.п.) отдельные классы. 12

Если не успели на занятии, то задание придётся доделать дома к следующему разу! Спасибо за внимание! 13