- •Преимущества
- •Связь: ooa→oop→ood
- •Механизм работы virtual
- •Абстрактный класс
- •Виртуальный деструктор
- •{Основные элементы языка программирования}
- •Основные подходы к семантике:
- •Формальное описание семантики:
- •Среда программирования
- •Объекты данных
- •Атрибуты объекта данных
- •Система типизации данных
- •Реализация типов данных
- •Типизация
- •Система типизации данных
- •Реализация типов данных
- •Связывание переменных
- •Контроль типов
- •Статистический контроль типов
- •Алгоритм статистического контроля типов
- •Динамический контроль типов
- •Параллелизм
- •Полиморфизм
- •Статический полиморфизм
- •Динамический полиморфизм
- •Преобразование типов
- •Связь: ooa→oop→ood
- •Среда программирования
- •Цель технологий параллелизма
- •Схемы параллелизма
- •Проблемы параллельного программирования
- •Показатели эффективности параллельного алгоритма Ускорение
- •Закон Густавсона-Барсиса
- •Масштабируемый алгоритм
- •Схемы параллелизма
- •Подтипы данных
- •Разновидности массивов. Статические
- •Кортежи
- •Разновидности массивов. Статические
- •Динамические
- •Атрибуты объекта данных
- •Операции над целыми числами
- •Вещественные числа
- •Числа с фиксированной точкой
- •Числа с плавающей точкой(float)
- •Ошибки вычислений с вещественными числами
- •Утечки памяти и повисшие указатели
- •Указатели на указатели
- •Типизированные указатели
- •Указатели на функции
- •[Отличия указателей и ссылок]
- •Параметры подпрограмм
- •Преимущества подпрограмм
- •Позиционное сопоставление
- •Сопоставление по имени
- •Методы передачи параметров:
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по значению-результату
- •Параметр по результату
- •Стековые языки
- •Циклы и рекурсия
- •Циклы со счетчиком
- •Операторы циклы без заданного числа повторений (бесконечно)
- •Динамический полиморфизм
- •Родовые (настраиваемые) сегменты и шаблоны
Контроль типов
•Проверяет факт получения каждой переменной нужного количества операндов правильного типа.
Контроль типов данных может осуществляться в период выполнения программы (динамический контроль типов) или в период компиляции(статистический контроль типов).
Статистический контроль типов
•Исходные данные:
Для каждой операций определены кол-во и типы данных для операций и результата.
Тип каждого объекта данных (переменной или экземпляра типа) известен и не меняется в ходе выполнения программы.
Типы всех констант тоже понятны.
Алгоритм статистического контроля типов
Компилятор собирает информацию при анализе текста программы и заносит в таблицу символов, которая накапливает все сведения о типах их операндов.
После завершения сбора компилятор проверяет все операции программы на предмет правильности типов их операндов.
после проверки типов операндов i-й операции определяется тип ее результата, а полученная информация сохраняется для проверки следующей операции программы, в которой результат i-й операции может использоваться как операнд.
•Статистический контроль типов данных охватывает все операции программы проверке подвергаются все варианты вычислений и отпадает необходимость в дальнейшем контроле.
Динамический контроль типов
•Осуществляется непосредственно перед выполнением.
•Динамический контроль типов характерен для скриптовых, функциональных и логических языков.
+ Гибкость программы.
+ Можно создавать настраиваемые программы, способные работать с данными любого типа.
- Понижение надежность вычисления.
- Снижение скорости вычислений.
- Возрастание накладных затрат памяти.
Параллелизм
• Параллелизм – свойство, отличающее активные объекты от пассивных.
• Разделение предметной области на объекты позволит разнести общий функционал системы по нескольким потокам и процессам, часть из которых сможет выполняться одновременно.
Оценка качества декомпозиции предметной области
• Для оценки качества классов и объектов существуют 5 критериев:
1. Зацепление – степень глубины связи между отдельными модулями. (чем меньше связность тем лучше)
2. Связность – степень взаимодействия между элементами отдельного модуля. (чем крепче связь тем лучше)
3. Достаточность – степень необходимого для реализации логичного и эффективного поведения в классе. (не наполнять лишним функционалом)
4. Полнота – в интерфейсной части класса должны быть учтены все характеристики абстракции. (Не исключать главное)
5. Примитивность - ….. (операции внутренние не обращаются к другим классам, дополнение связности)
Полиморфизм
• Полиморфные объекты – объекты, принимающие разные формы.
• Полиморфизм – возможность использовать один объект языка (идентификатор или операцию) для выполнения различных действий.
• Полиморфные функции – это те функции, которые имеют полиморфные аргументы.
