🗊Презентация Приведение типов. Механизм исключений. Задача на разбор командной строки

Нажмите для полного просмотра!
Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №1Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №2Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №3Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №4Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №5Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №6Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №7Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №8Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №9Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №10Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №11Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №12Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №13Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №14Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №15Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №16Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №17Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №18Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №19Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №20Приведение типов. Механизм исключений. Задача на разбор командной строки, слайд №21

Содержание

Вы можете ознакомиться и скачать презентацию на тему Приведение типов. Механизм исключений. Задача на разбор командной строки. Доклад-сообщение содержит 21 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Осенний семестр 2017
Преподаватель: асс. каф. Чуканов В.С
Описание слайда:
Осенний семестр 2017 Преподаватель: асс. каф. Чуканов В.С

Слайд 2





Содержание
Исключения
Исключения в конструкторах и деструкторах
Операторы приведения типов
Постановка задачи: разбор аргументов командной строки
Описание базового класса переменной
Описание произвольной переменной
Менеджер переменных
Описание слайда:
Содержание Исключения Исключения в конструкторах и деструкторах Операторы приведения типов Постановка задачи: разбор аргументов командной строки Описание базового класса переменной Описание произвольной переменной Менеджер переменных

Слайд 3





Исключения
Механизм исключений
Регламентирует редко случающиеся ситуации, влекущие радикальные изменения в текущем поведении программы либо прекращение ее работы
Код, генерирующий исключения
Помещается в блок try { }
Исключения создаются вызовом throw [exception_object];
Код, обрабатывающий исключения
Помещается в блок catch {}
Описание слайда:
Исключения Механизм исключений Регламентирует редко случающиеся ситуации, влекущие радикальные изменения в текущем поведении программы либо прекращение ее работы Код, генерирующий исключения Помещается в блок try { } Исключения создаются вызовом throw [exception_object]; Код, обрабатывающий исключения Помещается в блок catch {}

Слайд 4





Объекты-исключения
Семантика
Данные об ошибке
std::exception
Базовый класс исключения в стандартной библиотеке
Все исключения стд. библиотеки наследованы от std::exception
Объекты-исключения
В качестве объекта-исключения может выступать любой класс
Классы исключений могут быть организованы в иерархию
Описание слайда:
Объекты-исключения Семантика Данные об ошибке std::exception Базовый класс исключения в стандартной библиотеке Все исключения стд. библиотеки наследованы от std::exception Объекты-исключения В качестве объекта-исключения может выступать любой класс Классы исключений могут быть организованы в иерархию

Слайд 5





Обработка исключений
catch блоки обрабатываются в порядке объявления
catch (…) { }
Ловит любое исключение
Должен быть объявлен последним
catch (BaseClass &b)
Должен быть объявлен после всех наследников
Описание слайда:
Обработка исключений catch блоки обрабатываются в порядке объявления catch (…) { } Ловит любое исключение Должен быть объявлен последним catch (BaseClass &b) Должен быть объявлен после всех наследников

Слайд 6





Обработка исключений
Обработка исключения = развертка стека вызовов
При возникновении исключения поиск обработчика заканчивается во внешнем блоке try .. catch, в который «обернут» main (winmain)
Попадание в этот блок ведет к вызову функции terminate()
Возникновение исключения во время развертки стека = вызов terminate()
Описание слайда:
Обработка исключений Обработка исключения = развертка стека вызовов При возникновении исключения поиск обработчика заканчивается во внешнем блоке try .. catch, в который «обернут» main (winmain) Попадание в этот блок ведет к вызову функции terminate() Возникновение исключения во время развертки стека = вызов terminate()

Слайд 7





Исключения в конструкторах и деструкторах
Исключение в конструкторе
Объект не является созданным, и тело деструктора не будет вызвано
Деструкторы предков и полей вызываются в стандартном порядке
Исключение в деструкторе
При возникновении на этапе развертки стека вызовов приведет к вызову terminate()
Следует избегать ОБА ВАРИАНТА использования исключений
Описание слайда:
Исключения в конструкторах и деструкторах Исключение в конструкторе Объект не является созданным, и тело деструктора не будет вызвано Деструкторы предков и полей вызываются в стандартном порядке Исключение в деструкторе При возникновении на этапе развертки стека вызовов приведет к вызову terminate() Следует избегать ОБА ВАРИАНТА использования исключений

Слайд 8





Операторы приведения типов
type_to_cast  a = static_cast <type_to_cast> (b);
Приведение объекта b к типу type_to_cast
Проверка уровня компиляции
type_to_cast  *a = dynamic_cast <type_to_cast*> (b);
Используется для приведения типов с проверкой в run-time (RTTI, run-time type info)
При неудаче вернет NULL
type_to_cast  &a = dynamic_cast <type_to_cast&> (b);
В случае ошибки порождает исключение std::bad_cast
const_cast
Снимает модификаторы const и volatile
reinterpret_cast
Максимально небезопасное приведение типов
Конвертация указателя в int, любого типа в любой другой
Описание слайда:
Операторы приведения типов type_to_cast a = static_cast <type_to_cast> (b); Приведение объекта b к типу type_to_cast Проверка уровня компиляции type_to_cast *a = dynamic_cast <type_to_cast*> (b); Используется для приведения типов с проверкой в run-time (RTTI, run-time type info) При неудаче вернет NULL type_to_cast &a = dynamic_cast <type_to_cast&> (b); В случае ошибки порождает исключение std::bad_cast const_cast Снимает модификаторы const и volatile reinterpret_cast Максимально небезопасное приведение типов Конвертация указателя в int, любого типа в любой другой

Слайд 9





Ассоциативный контейнер map
std::map
Отсортированная структура данных, состоящая из пар ключ-значение
Реализует красно-черное дерево
Тип «ключа» должен иметь оператор сравнения
Операции (ключ = std::string)
Объявление std::map<std::string, int> mymap;
Добавление mymap[“firstVal”] = 10;
Поиск
std::map<std::string, int>::iterator – тип итератора по контейнеру
std::map<std::string, int>::iterator it = mymap.find(“firstVal”);
it == mymap.end() – верно в случае отсутствия элемента в контейнере
Описание слайда:
Ассоциативный контейнер map std::map Отсортированная структура данных, состоящая из пар ключ-значение Реализует красно-черное дерево Тип «ключа» должен иметь оператор сравнения Операции (ключ = std::string) Объявление std::map<std::string, int> mymap; Добавление mymap[“firstVal”] = 10; Поиск std::map<std::string, int>::iterator – тип итератора по контейнеру std::map<std::string, int>::iterator it = mymap.find(“firstVal”); it == mymap.end() – верно в случае отсутствия элемента в контейнере

Слайд 10





Разбор аргументов командной строки
Параметры ком. строки
Пара «имя» «значение»
Значение может быть произвольного типа
Значение считывается из строки
Задача: разработать класс для обработки командной строки
Регистрация имени новой переменной
Установка значения по умолчанию для переменной
Возврат значения по имени переменной
Заполнение значений переменных по массиву argV и кол-ву аргументов argC
Описание слайда:
Разбор аргументов командной строки Параметры ком. строки Пара «имя» «значение» Значение может быть произвольного типа Значение считывается из строки Задача: разработать класс для обработки командной строки Регистрация имени новой переменной Установка значения по умолчанию для переменной Возврат значения по имени переменной Заполнение значений переменных по массиву argV и кол-ву аргументов argC

Слайд 11





Класс переменной
Пара «имя» - «значение»
Переменная = значение
Класс переменной
Унифицированный интерфейс для хранения значения любого типа
Интерфейс для извлечения значения любого типа из строки
Описание слайда:
Класс переменной Пара «имя» - «значение» Переменная = значение Класс переменной Унифицированный интерфейс для хранения значения любого типа Интерфейс для извлечения значения любого типа из строки

Слайд 12





Базовый класс переменной
Любой унифицированный интерфейс = базовый класс
Описание слайда:
Базовый класс переменной Любой унифицированный интерфейс = базовый класс

Слайд 13





Класс переменной: реализация
Потомок = шаблон
Для каждого фиксированного типа реализуется set_value()
Хранение любых наследников возможно по указателю на базовый класс
Описание слайда:
Класс переменной: реализация Потомок = шаблон Для каждого фиксированного типа реализуется set_value() Хранение любых наследников возможно по указателю на базовый класс

Слайд 14





Менеджер переменных
Поля
Описание слайда:
Менеджер переменных Поля

Слайд 15





Регистрация новой переменной
Тип неизвестен = шаблонный метод
Тип специализации класса-переменной = типу специализации метода регистрации переменной
Описание слайда:
Регистрация новой переменной Тип неизвестен = шаблонный метод Тип специализации класса-переменной = типу специализации метода регистрации переменной

Слайд 16





Получение значения переменной
Для указания значения переменной необходимо указать тип
Метод - шаблонный
Алгоритм
Поиск по имени переменной
Тип специализации метода = тип специализации наследника variable
Приведение к типу наследника
dynamic_cast
Описание слайда:
Получение значения переменной Для указания значения переменной необходимо указать тип Метод - шаблонный Алгоритм Поиск по имени переменной Тип специализации метода = тип специализации наследника variable Приведение к типу наследника dynamic_cast

Слайд 17





Получение значения переменной: реализация
Описание слайда:
Получение значения переменной: реализация

Слайд 18





Закрытый метод set_value
Поиск переменной и установка значения
Описание слайда:
Закрытый метод set_value Поиск переменной и установка значения

Слайд 19





Парсинг командной строки
Описание слайда:
Парсинг командной строки

Слайд 20





Указание реализаций set_value
Компилятору необходимо указать реализации для всех используемых в коде специализаций variable
Описание слайда:
Указание реализаций set_value Компилятору необходимо указать реализации для всех используемых в коде специализаций variable

Слайд 21





Заключение
Исключения
Механизм детектирования и обработки ошибок
Необходимо избегать возникновения исключений в к-торах и д-торах
Приведение типов
static_cast – проверка только на уровне компиляции (ближе к C-style)
dynamic_cast – проверка в run-time
Составление контейнеров объектов разных типов
Требует дополнительной иерархии
Наследник = шаблон
Хранение по указателю на базовый класс
Может требовать dynamic_cast
Описание слайда:
Заключение Исключения Механизм детектирования и обработки ошибок Необходимо избегать возникновения исключений в к-торах и д-торах Приведение типов static_cast – проверка только на уровне компиляции (ближе к C-style) dynamic_cast – проверка в run-time Составление контейнеров объектов разных типов Требует дополнительной иерархии Наследник = шаблон Хранение по указателю на базовый класс Может требовать dynamic_cast



Похожие презентации
Mypresentation.ru
Загрузить презентацию