SlideShare a Scribd company logo
1 of 21
Платформы .NET и Java
 Современные концепции объектно-
 ориентированного программирования
Дорога к ООП

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

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

    Язык SmallTalk: первый ОО-язык
●

    С++
●

    C# и Java
●
Что есть ООП?

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

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

    обработки
    Всё есть объект
●

    Модульность
●

    Повторное использование кода
●

    Средство анализа и проектирования
●

    ... не единственная парадигма и не
●

    серебрянная пуля!
Сферы применения ООП

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

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

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

     – Псевдо ООП
    Библиотеки и фреймворки
●

     – ”Не изобретай колесо”
    Некритические части ОС
●

    ...почти везде – парадигма по умолчанию
●
Основные понятия ООП

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

    Класс
●

     – Методы
            Конструктор и деструктор
        ●


      Интерфейс
    –
      Поля: обычные поля, свойства
    –
    Объект
●

    Класс = Объект?
●
Отношения классов

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

    Композиция
●

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

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

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

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

    ...и четвертый кит – Абстракция
●

    ... а как же делегирование?
●
Современный взгляд

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

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

    Принцип ”Открытости-Закрытости”
●

    Сильная связность (cohesion)
●

    Слабое зацепление (coupling)
●

    Наследование нарушает инкапсуляцию
●

    Множественное наследование - зло
●
Use case – ОО-анализ

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

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

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

     – Объекты: ”Мама” и ”Рама”
     – Классы: Человек и Предмет
     – Методы: Мама.МытьРаму(Рама)
     – Мама.Мыть(предмет) {предмет.Мыться()}
    Создание объектов
●

    Уровень абстракции
●
Продвинутое ООП

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

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

     – Таблица ↔ Класс
     – Строка таблицы ↔ Объект
    UML
●

    Отображение (Reflection, Рефлексия)
●

    Антипаттерны
●

    TDD: разработка через тестирование
●
Критика ООП
    Отсутствие формального описания
●


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


    Фредерик Брукс: «Не существует серебрянной пули»
●


    Эдсгер Дейкстра: «... то о чём общество в большинстве
●

    случаев просит - это змеиное масло. Естественно, quot;змеиное
    маслоquot; имеет очень впечатляющие имена, иначе будет очень
    трудно что-то продать: quot;Структурный анализ и Дизайнquot;,
    quot;Програмная инженерияquot;, quot;Модели зрелостиquot;,quot;Объектная
    ориентированностьquot;...»
    Александр Степанов: «... ООП практически такая же
●

    мистификация как и искусственный интеллект...»
Понятие платформы

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

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

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

    Parrot
●

    Платформа = виртуальная машина +
●

    библиотеки + инструменты
Отличия

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



                          Компиляция

Бинарный код (выполняемый                     Байт-код
          файл)                          (файл с байт-кодом)


                      JIT-Компиляция

                                           Бинарный код
                                             (в памяти)
Java – платформа от Sun

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

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

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

    Бизнес-среда
●

    Огромное количество библиотек и
●

    инструментов
    Академическое использование
●
Наглядное представление
Microsoft .NET Framework

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

     – Включение в дистрибутивы
     – Совместимость
    Закрытость платформы
●

     – Mono
    Обширная стандартная библиотека
●

     – Base Class Library
     – Windows Forms
От Turbo Pascal к C# 3.0
    Turbo Pascal
●


    Delphi
●


    J++
●


    WFC
●


    C# 1.0
●


    C# 2.0
●
                          Андерс Хейлсберг
    C# 3.0
●
Свободные реализации

    ОС
●

     – Linux
    IDE
●

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

    Проблемы
●

    – Маленькие проекты
    – Magic Pushbutton
    – ООП ≠ GUI
    – Привязка к языку программирования
    ООП и алгоритмическое мышление
●

    – АТД
    Первый язык
●

    – Основные алгоритмические конструкции
Варианты применения

    C# и Java
●

    Object Pascal/Delphi
●

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

    UML
●

    Нежелательные варианты
●

     – VBA
     – Turbo Pascal
Литература

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

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

    анализ и проектирование”
    Т. Бадд ”Объектно-ориентированное
●

    программирование в действии”
    GoF ”Паттерны проектирования”
●

    Бьерн Страуструп. ”Язык программирования
●

    С++”

More Related Content

What's hot

Career Development в Epam Systems
Career Development в Epam SystemsCareer Development в Epam Systems
Career Development в Epam Systemssef2009
 
Sergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbSergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbLiudmila Li
 
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbixElina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbixMichael Ganschuk
 
Internet Programming With Java Book - Svetlin Nakov
Internet Programming With Java Book - Svetlin NakovInternet Programming With Java Book - Svetlin Nakov
Internet Programming With Java Book - Svetlin NakovSvetlin Nakov
 
Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Anatoly Sharifulin
 
компьютер изнутри
компьютер изнутрикомпьютер изнутри
компьютер изнутриPuLJa
 
Вебинар компании VMC по продуктам Parallels 2009
Вебинар компании VMC по продуктам Parallels 2009Вебинар компании VMC по продуктам Parallels 2009
Вебинар компании VMC по продуктам Parallels 2009areconster
 
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиОптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиcollaborator.pro
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S PbLiudmila Li
 
Competitions Cloudwatcher_new
Competitions Cloudwatcher_newCompetitions Cloudwatcher_new
Competitions Cloudwatcher_newguest18d24c
 
Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelissef2009
 
Urazbaev
UrazbaevUrazbaev
Urazbaevsef2009
 
Sef 2009 Itsm
Sef 2009 ItsmSef 2009 Itsm
Sef 2009 Itsmsef2009
 

What's hot (19)

Career Development в Epam Systems
Career Development в Epam SystemsCareer Development в Epam Systems
Career Development в Epam Systems
 
Sergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbSergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 Smb
 
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbixElina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix
Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix
 
07 Ws08 R2 Virt
07 Ws08 R2 Virt07 Ws08 R2 Virt
07 Ws08 R2 Virt
 
Internet Programming With Java Book - Svetlin Nakov
Internet Programming With Java Book - Svetlin NakovInternet Programming With Java Book - Svetlin Nakov
Internet Programming With Java Book - Svetlin Nakov
 
Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎Интерактивный терминал: Perl, XML и Firefox‎
Интерактивный терминал: Perl, XML и Firefox‎
 
компьютер изнутри
компьютер изнутрикомпьютер изнутри
компьютер изнутри
 
Вебинар компании VMC по продуктам Parallels 2009
Вебинар компании VMC по продуктам Parallels 2009Вебинар компании VMC по продуктам Parallels 2009
Вебинар компании VMC по продуктам Parallels 2009
 
10 Xs Dg
10 Xs Dg10 Xs Dg
10 Xs Dg
 
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиОптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
 
Sapka Contest 2009 (RU)
Sapka Contest 2009 (RU)Sapka Contest 2009 (RU)
Sapka Contest 2009 (RU)
 
Text
TextText
Text
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S Pb
 
Competitions Cloudwatcher_new
Competitions Cloudwatcher_newCompetitions Cloudwatcher_new
Competitions Cloudwatcher_new
 
Xrumme
XrummeXrumme
Xrumme
 
Problogging
ProbloggingProblogging
Problogging
 
Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelis
 
Urazbaev
UrazbaevUrazbaev
Urazbaev
 
Sef 2009 Itsm
Sef 2009 ItsmSef 2009 Itsm
Sef 2009 Itsm
 

More from Boris Volfson

Почему Agile больше не работает
Почему Agile больше не работаетПочему Agile больше не работает
Почему Agile больше не работаетBoris Volfson
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыBoris Volfson
 
Проекты 2013 года
Проекты 2013 годаПроекты 2013 года
Проекты 2013 годаBoris Volfson
 
Cтратегия сокращения технического долга
Cтратегия сокращения технического долгаCтратегия сокращения технического долга
Cтратегия сокращения технического долгаBoris Volfson
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиBoris Volfson
 
Agile Death March Projects: путь ниндзя
Agile Death March Projects: путь ниндзяAgile Death March Projects: путь ниндзя
Agile Death March Projects: путь ниндзяBoris Volfson
 
Как внедрить Agile за 14 недель
Как внедрить Agile за 14 недельКак внедрить Agile за 14 недель
Как внедрить Agile за 14 недельBoris Volfson
 
Управление рисками
Управление рискамиУправление рисками
Управление рискамиBoris Volfson
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXBoris Volfson
 
Scrum для Product owner'ов
Scrum для Product owner'овScrum для Product owner'ов
Scrum для Product owner'овBoris Volfson
 

More from Boris Volfson (11)

Почему Agile больше не работает
Почему Agile больше не работаетПочему Agile больше не работает
Почему Agile больше не работает
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
Проекты 2013 года
Проекты 2013 годаПроекты 2013 года
Проекты 2013 года
 
Cтратегия сокращения технического долга
Cтратегия сокращения технического долгаCтратегия сокращения технического долга
Cтратегия сокращения технического долга
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
 
Кайзен
КайзенКайзен
Кайзен
 
Agile Death March Projects: путь ниндзя
Agile Death March Projects: путь ниндзяAgile Death March Projects: путь ниндзя
Agile Death March Projects: путь ниндзя
 
Как внедрить Agile за 14 недель
Как внедрить Agile за 14 недельКак внедрить Agile за 14 недель
Как внедрить Agile за 14 недель
 
Управление рисками
Управление рискамиУправление рисками
Управление рисками
 
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIXСбор и анализ требований в Scrum. Адаптация процесса ICONIX
Сбор и анализ требований в Scrum. Адаптация процесса ICONIX
 
Scrum для Product owner'ов
Scrum для Product owner'овScrum для Product owner'ов
Scrum для Product owner'ов
 

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

  • 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
  • 17. От Turbo Pascal к C# 3.0 Turbo Pascal ● Delphi ● J++ ● WFC ● C# 1.0 ● C# 2.0 ● Андерс Хейлсберг C# 3.0 ●
  • 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 ”Паттерны проектирования” ● Бьерн Страуструп. ”Язык программирования ● С++”