Основы объектно-ориентированного программирования
За дополнительной информацией обращаться:
Ведущий специалист Ордынская Марина Юрьевна, ауд. 607-7., тел. +375 17 397-82-95, +375 29 639-65-63,
e-mail: ordinskaya@bsuir.by
ведущий специалист Крищенович Вероника Анатольевна, ауд. 607-7., тел. +375 17 397-82-95, +375 29 390-88-95,
e-mail: krish@bsuir.by
Заместитель декана Гарбуз Виталий Борисович, ауд. 402-8., тел. +375 29 686-61-14,
e-mail: garbuz@bsuir.by
Запись осуществляется через электронную форму. Обучение начинаются по мере формирования групп.
Стоимость
****
Продолжительность
36 часов
О программе
Программа курса
Качество программного обеспечения.
Качество - это цель инженерной деятельности; построение качественного программного обеспечения (ПО, software) - цель программной инженерии (software engineering). Внешние и внутренние факторы. Корректность (Correctness). Устойчивость (Robustness). Расширяемость (Extendibility). Повторное использование (Reusability). Совместимость (Compatibility). Эффективность (Efficiency). Переносимость (Portability). Простота использования (Easy of Use). Функциональность (Functionality). Своевременность (Timeliness). Другие качества. О документации. О программном сопровождении.
Критерии объектной ориентации
О критериях. Категории. Метод и язык. Бесшовность (seamlessness). Классы. Утверждения (Assertions). Классы как модули. Классы как типы. Вычисления, основанные на компонентах. Скрытие информации (information hiding). Обработка исключений (Exception handling). Статическая типизация (static typing). Универсальность (genericity). Единичное наследование (single inheritance). Множественное наследование (Multiple inheritance).Дублируемое наследование (Repeated inheritance). Ограниченная универсальность (Constrained genericity). Переопределение (redefinition). Полиморфизм. Динамическое связывание. Выяснение типа объекта в период выполнения. Отложенные (deferred) свойства и классы. Управление памятью (memory management) и сборка мусора (garbage collection). Реализация и среда. Автоматическое обновление (automatic update). Быстрое обновление (fast update). Живучесть (persistence). Библиотеки. Базовые библиотеки. Графика и пользовательские интерфейсы. Механизмы эволюции библиотек. Механизмы индексации в библиотеках.
Модульность
Пять критериев. Декомпозиция. Модульная Композиция. Модульная Понятность. Модульная Непрерывность. Модульная Защищенность. Пять правил: прямое отображение, минимум интерфейсов, слабая связность интерфейсов, явные интерфейсы, скрытие информации. Пять принципов: Лингвистические Модульные Единицы, Самодокументирование, Унифицированный Доступ, Открыт-Закрыт, Единственный Выбор.
Подходы к повторному использованию
Цели повторного использования. Ожидаемые преимущества. Потребители и производители повторно используемых программ. Повторное использование персонала. Повторное использование проектов и спецификаций. Образцы проектов (design patterns). Повторное использование исходного текста. Повторное использование абстрактных модулей. Повторяемость при разработке ПО. Организация доступа к компонентам. Форматы для распространения повторно используемых компонентов. Изменчивость Типов (Type Variation), Группирование Подпрограмм (Routine Grouping), Изменчивость Реализаций (Implementation Variation), Независимость Представлений, Факторизация Общего Поведения. Традиционные модульные структуры. Подпрограммы. Пакеты. Перегрузка и универсальность. Синтаксическая перегрузка. Семантическая перегрузка (предварительное представление). Универсальность (genericity).
Абстрактные типы данных (АТД)
Различные реализации. Представления стеков. Опасность излишней спецификации. Использование операций. Политика невмешательства в обществе модулей. Согласованность имен. Можно ли обойтись без абстракций. Формализация спецификаций. Специфицирование типов. Универсализация (Genericity). Перечисление функций. Категории функций. Частичные функции. Предусловия. Полная спецификация. Роль отложенных классов. Абстрактные типы данных и скрытие информации.
Статические структуры: классы
Роль классов. Модули и типы. Класс как модуль и как тип. Унифицированная система типов. Простой класс. Компоненты. Атрибуты и подпрограммы. Унифицированный доступ. Класс POINT. Распознавание вида компонент. Тело подпрограммы и комментарии к заголовку. Предложение indexing. Обозначение результата функции. Объектно-ориентированный стиль вычислений.
Динамические структуры: объекты
Объекты. Базовая форма. Простые поля. Ссылки. Идентичность объектов. Объявление ссылок. Ссылка на себя. Взгляд на структуру объектов периода выполнения. Объекты как средство моделирования. Работа с объектами и ссылками.Динамическое создание и повторное связывание. Процедуры создания и перегрузка. Операции над ссылками. Присоединение ссылки к объекту. Значение void. Клонирование и сравнение объектов. Копирование объектов. Агрегирование. Свойства развернутых типов. Присоединение: ссылочное и копии. Динамические псевдонимы. Инкапсуляция действий со ссылками.
Управление памятью
Создание объектов. Использование динамического режима. Отсоединение. Недостижимые объекты. Достижимые объекты в классическом подходе. Достижимые объекты в объектно-ориентрованной (ОО)-модели. Проблема управления памятью в ОО-модели. Восстановление памяти: проблемы. Удаление объектов, управляемое программистом. Автоматическое управление памятью. Механизм сборки мусора.
Универсализация
Горизонтальное и вертикальное обобщение типа. Необходимость параметризованных классов. Родовые АТД. Операции над сущностями родового типа. Типы и классы. Массивы как объекты. Свойства массива.
Построение надежного ПО
Базисные механизмы надежности. О корректности ПО. Введение утверждений в программные тексты. Предусловия и постусловия. Класс стек. Контракты и надежность ПО. Права и обязательства. Ошибки, дефекты. Работа с утверждениями.Императив и аппликатив (применимость).
Обработка исключений
Базисные концепции обработки исключений. Отказы. Исключения. Источники исключений. Ситуации отказа. Обработка исключений.
Поддерживающие механизмы
Взаимодействие с не объектным ПО. Внешние программы. ОО-изменение архитектуры (re-architecturing). Условная Инструкция (Conditional). Множественный выбор. Циклы. Повторение вычислений. Выражения. Манифестные константы. Нестрогие булевы операторы. Строки.
Введение в наследование
Основные соглашения и терминология. Наследование инварианта. Наследование и конструкторы. Полиморфизм. Полиморфное присоединение. Полиморфные структуры данных. Типизация при наследовании. Согласованность типов. Пределы полиморфизма. Экземпляры. Статический тип, динамический тип. Динамическое связывание. Отложенные компоненты и классы. Повторное объявление функции как атрибута. Явное переопределение. Доступ к предшественнику процедуры. Динамическое связывание и эффективность. Статическое связывание как оптимизация.
Множественное наследование
Примеры множественного наследования. Переименование компонентов. Конфликт имен. Смена имен и переопределение. Подбор локальных имен. Конфликт переопределений. Дублируемое наследование и универсальность.
Техника наследования
Наследование и утверждения. Инварианты. Предусловия и постусловия при наличии динамического связывания. Абстрактные предусловия. Правило языка. Повторное объявление функции как атрибута.
Типизация
Проблема типизации. Базисная конструкция. Статическая и динамическая типизация. Правила типизации.
Глобальные объекты и константы
Константы базовых типов. Атрибуты-константы. Константы пользовательских классов. Однократные функции. Разделяемые объекты. Однократные процедуры. Константы строковых типов.
Записаться на курс
Основы объектно-ориентированного программирования