Платформы .NET и Java
 Современные концепции объектно-
 ориентированного программирования
Дорога к ООП

    Процедурное программирование
●

    Язык Симула: средства моделирования
●

    Язык SmallTalk: первый ОО...
Что есть ООП?

    Парадигма программирования
●

    ”Совмещение” данных и методов их
●

    обработки
    Всё есть объект...
Сферы применения ООП

    Большие программы
●

    Бизнес-приложения
●

    Графические интерфейсы
●

     – Псевдо ООП
  ...
Основные понятия ООП

    Объект – существительное, метод - глагол
●

    Класс
●

     – Методы
            Конструктор и...
Отношения классов

    Генерализация (наследование)
●

    Композиция
●

    Агрегация
●
Три кита ООП

    Наследование
●

     – Множественное наследование
    Полиморфизм
●

    Инкапсуляция
●

    ...и четвер...
Современный взгляд

    Класс – сущность с обязанностями
●

    Проектирование через интерфейс
●

    Принцип ”Открытости-...
Use case – ОО-анализ

    ”Мамы мыла раму”
●

    Процедура ”МамаМытьРаму”
●

    ОО-анализ и проектирование
●

     – Объ...
Продвинутое ООП

    Паттерны проектирования
●

    Объектно-реляционный маппинг
●

     – Таблица ↔ Класс
     – Строка т...
Критика ООП
    Отсутствие формального описания
●


    Никлаус Вирт: АДТ = ООП
●


    Фредерик Брукс: «Не существует сер...
Понятие платформы

    Виртуальная машина
●

     – Байт-код
    Переносимость
●

    ОО-библиотека
●

    Parrot
●

    П...
Отличия

 Исходный код программы                Исходный код программы
    (текстовый файл)                      (текстовы...
Java – платформа от Sun

    Java: не только язык
●

    Открытость платформы
●

    Абсолютная переносимость
●

    Бизне...
Наглядное представление
Microsoft .NET Framework

    Платформа от Майкрософт
●

     – Включение в дистрибутивы
     – Совместимость
    Закрытос...
От Turbo Pascal к C# 3.0
    Turbo Pascal
●


    Delphi
●


    J++
●


    WFC
●


    C# 1.0
●


    C# 2.0
●
         ...
Свободные реализации

    ОС
●

     – Linux
    IDE
●

     – C++ + Anjuta/Eclipse CDT/KDevelop/...
     – Free Pascal/La...
ООП в образовании

    Проблемы
●

    – Маленькие проекты
    – Magic Pushbutton
    – ООП ≠ GUI
    – Привязка к языку п...
Варианты применения

    C# и Java
●

    Object Pascal/Delphi
●

    PHP5 и JavaScript - веб-разработка
●

    UML
●

   ...
Литература

    Любая книга по ОО-языку
●

    программирования
    Гради Буч ”Объектно-ориентированный
●

    анализ и пр...
Upcoming SlideShare
Loading in …5
×

Платформы Java и .NET. Современные концепции ООП

3,047 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,047
On SlideShare
0
From Embeds
0
Number of Embeds
45
Actions
Shares
0
Downloads
60
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Платформы Java и .NET. Современные концепции ООП

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

×