Владимир Биллиг профессор кафедры информатики Тверского госуниверситета Преподавание Объектно-Ориентированной Технологии Программирования
Основные положения Программистская составляющая курса информатики Программистская составляющая курса информатики ОО проектирование и ОО программирование –основной метод современной программной инженерии ОО проектирование и ОО программирование –основной метод современной программной инженерии Объектный подход. Когда начинать? Объектный подход. Когда начинать? ОО подход и ОО язык. ОО подход и ОО язык.
ОО язык и среда. Три кандидата Язык C# и среда Visual Studio.Net Язык C# и среда Visual Studio.Net Язык Eiffel и среда Eiffel EnViSioN 2.0 Язык Eiffel и среда Eiffel EnViSioN 2.0 Язык Visual Basic и среда Microsoft Office Язык Visual Basic и среда Microsoft Office
Кандидаты. Достоинства и недостатки C#. Достоинства C#. Достоинства Перспективный язык разработки современных системПерспективный язык разработки современных систем Изначально объектный языкИзначально объектный язык Ориентирован на компонентное программированиеОриентирован на компонентное программирование Открытая многоязычная среда, облегчающая интеграцию.Открытая многоязычная среда, облегчающая интеграцию. С#. Недостатки С#. Недостатки Не поддерживает всех возможностей объектного подходаНе поддерживает всех возможностей объектного подхода Нет учебников, ориентированных на начальный курс обученияНет учебников, ориентированных на начальный курс обучения
Eiffel Достоинства Достоинства Тщательно спроектирован Бертраном Мейером. Не отягощен прошлым наследием.Тщательно спроектирован Бертраном Мейером. Не отягощен прошлым наследием. Поддержан авторской книгой Object-Oriented Software ConstructionПоддержан авторской книгой Object-Oriented Software Construction На его основе автор читает начальный курс информатики в ETH, Цюрих.На его основе автор читает начальный курс информатики в ETH, Цюрих. Доступна академическая версия языка и среды EnViSioN 2.0 : академическая версия языка и среды EnViSioN 2.0 : Недостатки Недостатки Менее популярен, как практический язык разработкиМенее популярен, как практический язык разработки
Офисное программирование См. доклад на предыдущей конференции: «ОФП и его роль в образовании»
О сути подхода. Основные понятия Классы. Две ипостаси – Тип и Модуль Классы. Две ипостаси – Тип и Модуль Встроенные классы Встроенные классы Семейства классов. Отношения. Клиенты и наследники Семейства классов. Отношения. Клиенты и наследники Повторное использование Повторное использование Динамическое связывание. Полиморфизм. Динамическое связывание. Полиморфизм.
Объектное проектирование Абстрактные классы Абстрактные классы Универсальные классы Универсальные классы Ограниченная универсальность Ограниченная универсальность
Проектирование по контракту Качество программ и спецификации Качество программ и спецификации Система как совокупность классов, связанных контрактами Система как совокупность классов, связанных контрактами Корректные программы и триады Хоара Корректные программы и триады Хоара Корректность класса Корректность класса Определение: Корректность класса Определение: Корректность класса Класс C корректен по отношению к своим утверждениям, если и только если: С1. Для любого правильного множества аргументов xp процедуры создания p: { DefaultC and prep(xp)} Bodyp { postp(xp) and Inv} С2. Для каждой экспортируемой программы r и для любого множества правильных аргументов xr: { prer(xr) and Inv} Bodyr { postr(xr) and Inv}
Исключительные ситуации. Когда контракт нарушается Что такое исключительная ситуация по Мейеру? Что такое исключительная ситуация по Мейеру? Как обрабатывать исключительные ситуации. Как обрабатывать исключительные ситуации. Два исхода – повторение и возврат управления вызывающей программе Два исхода – повторение и возврат управления вызывающей программе
Классы и события Модель событий в C# Модель событий в C#
Детали C# Указатели и автоматическая сборка мусора (Garbage Collector) Указатели и автоматическая сборка мусора (Garbage Collector) Ссылочные и значимые типы Ссылочные и значимые типы Boxing и Unboxing Boxing и Unboxing Иерархия классов и прародитель Object Иерархия классов и прародитель Object Встроенные классы. Пример строковых классов – класс регулярных выражений Встроенные классы. Пример строковых классов – класс регулярных выражений Структуры, интерфейсы, классы. Структуры, интерфейсы, классы. Наследование. Наследование.
Эйфель. Детали Факторы: корректность, устойчивость, расширяемость, повторное использование, совместимость, эффективность, переносимость, простота использования, функциональность, своевременность. Факторы: корректность, устойчивость, расширяемость, повторное использование, совместимость, эффективность, переносимость, простота использования, функциональность, своевременность. Критерии (Метод и язык): Бесшовность, Классы (как модули, как типы), Утверждения, Механизм вычислений. Скрытие информации, Обработка исключений, Статическая типизация, Наследование, Переопределение, Полиморфизм, Динамическое связывание, Отложенные классы, Универсальность, Ограниченная универсальность. Управление памятью и сборка мусора. Критерии (Метод и язык): Бесшовность, Классы (как модули, как типы), Утверждения, Механизм вычислений. Скрытие информации, Обработка исключений, Статическая типизация, Наследование, Переопределение, Полиморфизм, Динамическое связывание, Отложенные классы, Универсальность, Ограниченная универсальность. Управление памятью и сборка мусора. Критерии (Реализация и окружение): Автоматическое обновление, Быстрое обновление, Сохраняемость, Документирование, Просмотр и поиск. Критерии (Реализация и окружение): Автоматическое обновление, Быстрое обновление, Сохраняемость, Документирование, Просмотр и поиск. Критерии (Библиотеки): Базисные библиотеки, Графические и пользовательские интерфейсы Критерии (Библиотеки): Базисные библиотеки, Графические и пользовательские интерфейсы
5 критериев, 5 правил, % принципов Метод проектирования, претендующий на звание «модульного» должен удовлетворять следующим критериям, правилам, принципам: Критерии: Декомпозиции, Композиции, Понимаемости, Непрерывности, Защищенности Критерии: Декомпозиции, Композиции, Понимаемости, Непрерывности, Защищенности Правила: Прямое отображение, Минимум интерфейсов, Слабая связность, Явные интерфейсы, Скрытие информации Правила: Прямое отображение, Минимум интерфейсов, Слабая связность, Явные интерфейсы, Скрытие информации Принципы: Лингвистических единиц, Самодокументирование, Единый доступ, Открыт- Закрыт, Однозначный выбор. Принципы: Лингвистических единиц, Самодокументирование, Единый доступ, Открыт- Закрыт, Однозначный выбор.
Итоги Одна цитата (из предисловия к русскому изданию книги Б. Мейера): Слишком часто, объектно-ориентированные механизмы использовались просто как некоторый способ обтесывания программы, а не как систематический подход ко всему процессу разработки программного продукта в бесшовной модели, покрывающей не только реализацию, но и этапы анализа, проектирования, сопровождения. Упор на качество компонентов должен быть особенно важен для российских читателей. Россия может поддерживать свое лидерство в глобальном оффшорном рынке только при условии представления точной и документированной гарантии качества, на самом высоком уровне сертификации для программных продуктов и компонентов, которые она производит.
Итоги ОО Метод следует вводить в начальном курсе информатики с тем, чтобы он стал основой во всем процессе обученийя инженерии программ. ОО Метод следует вводить в начальном курсе информатики с тем, чтобы он стал основой во всем процессе обученийя инженерии программ. Для программистов реальными кандидатами в поддержке ОО метода могут быть языки C# и Eiffel Для программистов реальными кандидатами в поддержке ОО метода могут быть языки C# и Eiffel Офисное программирование может быть положено в основу обучения студентов других специальностей. Офисное программирование может быть положено в основу обучения студентов других специальностей.
Литература В.А. Биллиг, М. И. Дехтярь «VBA и Office 97. Офисное программирование», Русская Редакция, 1998 В.А. Биллиг, М. И. Дехтярь «VBA и Office 97. Офисное программирование», Русская Редакция, 1998 В.А. Биллиг «VBA в Office Офисное программирование», Русская Редакция, 1999 В.А. Биллиг «VBA в Office Офисное программирование», Русская Редакция, 1999 В.А. Биллиг «Средства разработки VBA-программиста. Офисное программирование, т.1», Русская Редакция, 2001 В.А. Биллиг «Средства разработки VBA-программиста. Офисное программирование, т.1», Русская Редакция, 2001 В.А. Биллиг «Мир Объектов Excel 2000 Средства разработки VBA-программиста», Русская Редакция, 2001 В.А. Биллиг «Мир Объектов Excel 2000 Средства разработки VBA-программиста», Русская Редакция,