1. Платформы .NET и Java
Современные концепции объектно-
ориентированного программирования
2. Дорога к ООП
Процедурное программирование
●
Язык Симула: средства моделирования
●
Язык SmallTalk: первый ОО-язык
●
С++
●
C# и Java
●
3. Что есть ООП?
Парадигма программирования
●
”Совмещение” данных и методов их
●
обработки
Всё есть объект
●
Модульность
●
Повторное использование кода
●
Средство анализа и проектирования
●
... не единственная парадигма и не
●
серебрянная пуля!
4. Сферы применения ООП
Большие программы
●
Бизнес-приложения
●
Графические интерфейсы
●
– Псевдо ООП
Библиотеки и фреймворки
●
– ”Не изобретай колесо”
Некритические части ОС
●
...почти везде – парадигма по умолчанию
●
5. Основные понятия ООП
Объект – существительное, метод - глагол
●
Класс
●
– Методы
Конструктор и деструктор
●
Интерфейс
–
Поля: обычные поля, свойства
–
Объект
●
Класс = Объект?
●
6. Отношения классов
Генерализация (наследование)
●
Композиция
●
Агрегация
●
7. Три кита ООП
Наследование
●
– Множественное наследование
Полиморфизм
●
Инкапсуляция
●
...и четвертый кит – Абстракция
●
... а как же делегирование?
●
8. Современный взгляд
Класс – сущность с обязанностями
●
Проектирование через интерфейс
●
Принцип ”Открытости-Закрытости”
●
Сильная связность (cohesion)
●
Слабое зацепление (coupling)
●
Наследование нарушает инкапсуляцию
●
Множественное наследование - зло
●
9. Use case – ОО-анализ
”Мамы мыла раму”
●
Процедура ”МамаМытьРаму”
●
ОО-анализ и проектирование
●
– Объекты: ”Мама” и ”Рама”
– Классы: Человек и Предмет
– Методы: Мама.МытьРаму(Рама)
– Мама.Мыть(предмет) {предмет.Мыться()}
Создание объектов
●
Уровень абстракции
●
10. Продвинутое ООП
Паттерны проектирования
●
Объектно-реляционный маппинг
●
– Таблица ↔ Класс
– Строка таблицы ↔ Объект
UML
●
Отображение (Reflection, Рефлексия)
●
Антипаттерны
●
TDD: разработка через тестирование
●
11. Критика ООП
Отсутствие формального описания
●
Никлаус Вирт: АДТ = ООП
●
Фредерик Брукс: «Не существует серебрянной пули»
●
Эдсгер Дейкстра: «... то о чём общество в большинстве
●
случаев просит - это змеиное масло. Естественно, quot;змеиное
маслоquot; имеет очень впечатляющие имена, иначе будет очень
трудно что-то продать: quot;Структурный анализ и Дизайнquot;,
quot;Програмная инженерияquot;, quot;Модели зрелостиquot;,quot;Объектная
ориентированностьquot;...»
Александр Степанов: «... ООП практически такая же
●
мистификация как и искусственный интеллект...»
12. Понятие платформы
Виртуальная машина
●
– Байт-код
Переносимость
●
ОО-библиотека
●
Parrot
●
Платформа = виртуальная машина +
●
библиотеки + инструменты
13. Отличия
Исходный код программы Исходный код программы
(текстовый файл) (текстовый файл)
Компиляция
Бинарный код (выполняемый Байт-код
файл) (файл с байт-кодом)
JIT-Компиляция
Бинарный код
(в памяти)
14. Java – платформа от Sun
Java: не только язык
●
Открытость платформы
●
Абсолютная переносимость
●
Бизнес-среда
●
Огромное количество библиотек и
●
инструментов
Академическое использование
●
16. Microsoft .NET Framework
Платформа от Майкрософт
●
– Включение в дистрибутивы
– Совместимость
Закрытость платформы
●
– Mono
Обширная стандартная библиотека
●
– Base Class Library
– Windows Forms
18. Свободные реализации
ОС
●
– Linux
IDE
●
– C++ + Anjuta/Eclipse CDT/KDevelop/...
– Free Pascal/Lazarus
– Mono + MonoDevelop
– Java + Eclipse
19. ООП в образовании
Проблемы
●
– Маленькие проекты
– Magic Pushbutton
– ООП ≠ GUI
– Привязка к языку программирования
ООП и алгоритмическое мышление
●
– АТД
Первый язык
●
– Основные алгоритмические конструкции
20. Варианты применения
C# и Java
●
Object Pascal/Delphi
●
PHP5 и JavaScript - веб-разработка
●
UML
●
Нежелательные варианты
●
– VBA
– Turbo Pascal
21. Литература
Любая книга по ОО-языку
●
программирования
Гради Буч ”Объектно-ориентированный
●
анализ и проектирование”
Т. Бадд ”Объектно-ориентированное
●
программирование в действии”
GoF ”Паттерны проектирования”
●
Бьерн Страуструп. ”Язык программирования
●
С++”