1 © Luxoft Training 2012 Введение в ООП Модуль #2.

Презентация:



Advertisements
Похожие презентации
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
Advertisements

Методология объектно- ориентированного программирования.
Delphi. 11 класс.. Познакомиться с понятиями : Инкапсуляция Интерфейс объекта Классы, экземпляр класса Наследование, иерархия полиморфизм.
Алгоритмический подход – главное алгоритм решения задачи ( в основном, используется для вычислительных задач ); Структурное программирование – декомпозиция,
Объектно- ориентированное программирование (ООП)
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
EPAM Systemswww.epam.com EPAM Systemswww.epam.com Программирование на языке C# Основы ООП.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
ООП Лекция 1. Основные понятия. Литература Шилдт Г. С#: полное руководтво.-М.:ООО Вильямс, с. Культин Н.Б. Microsoft Visual C# в задачах и.
Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
Кафедра ОСУ, Java 2007 Слайд 1 Методология ООП В формулировке цели участвуют предметы (объекты) и понятия реального мира, имеющие отношение.
В. Дихтяр ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ (для бакалавров) Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 1.Разработка.
Java, каф. ОСУ АВТФ1 Методология ООП В формулировке цели выполнения некоторого проекта (например, разработка ИС) участвуют предметы (объекты)
Объектно-ориентированное программирование. Объекты: свойства и методы Основной единицей в объектно- ориентированном программировании является программный.
EPAM Systemswww.epam.com EPAM Systemswww.epam.com Объектно-ориентированное программирование Неформальное введение.
1 Введение в объекты Java От моделирования машины к моделированию проблемы… 1. Все есть объект. Объекты - особенные переменные: они не только хранят данные,
Основы объектно-ориентированного программирования (ООП)
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
Транксрипт:

1 © Luxoft Training 2012 Введение в ООП Модуль #2

2 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП

3 © Luxoft Training 2012 Парадигмы программирования Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ. Парадигма программирования определяет то, в каких терминах программист описывает логику программы. Парадигма программирования не определяется языком однозначно.

4 © Luxoft Training 2012 Виды парадигм программирования Структурное Логическое Функциональное Объектно-ориентированное Аспектно-ориентированное и др.

5 © Luxoft Training 2012 Структурное программирование Структурная программа очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые компьютер должен выполнить. Пример – язык С. Структурное программирование – это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние программы.

6 © Luxoft Training 2012 Логическое программирование Логическое программирование – это программирование, основанное на автоматическом доказательстве теорем. Логические языки программирования, обычно определяют что надо вычислить, а не как это надо делать. Пример - Prolog fact(1,1). fact(N,F) :- N>1, N1 is N-1, fact(N1,F1), F is F1*N. ?- fact(4,X). X=120 Нахождение факториала:

7 © Luxoft Training 2012 Функциональное программирование Функциональное программирование – это парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций. Любая функция – суперпозиция других функций. Примеры: Lisp, Haskel, Closure.

8 © Luxoft Training 2012 ООП возникло на базе процедурного программирования, где было предложено данные и методы их обработки объединить в классы. ООП – методология, при которой программа организуется как совокупность сотрудничающих объектов, каждый из которых – экземпляр класса. ООП – парадигма, в которой основными концепциями являются понятия классов и объектов.

9 © Luxoft Training 2012 ООП ООП является наиболее распространенной парадигмой программирования. Java является полностью ООП языком, т.е. не поддерживает программирование в процедурном стиле.

10 © Luxoft Training 2012 Три самых главных слова ООП

11 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляуция Цели ООП

12 © Luxoft Training 2012 Все вокруг нас – объекты свойства – поля объекта свойства – поля объекта операции – методы объекта Моделируем естественный мир. Разговариваем на языке предметной области.

13 © Luxoft Training 2012 Объекты: создаем пользовательский интерфейс для фигур Пример: создаем фигуры…

14 © Luxoft Training 2012 Объекты: квадрат, круг, треугольник

15 © Luxoft Training 2012 Еще объект: амеба

16 © Luxoft Training 2012 Еще объект: амеба

17 © Luxoft Training 2012 Еще объект: амеба

18 © Luxoft Training 2012 Амеба: добавим точку вращения

19 © Luxoft Training 2012 Что общего между этими классами?

20 © Luxoft Training 2012 Создаем иерархию объектов

21 © Luxoft Training 2012 Создаем иерархию объектов

22 © Luxoft Training 2012 Создаем иерархию объектов

23 © Luxoft Training 2012 Объект знает и объект делает

24 © Luxoft Training 2012 Объект знает и объект делает

25 © Luxoft Training 2012 Объект знает и объект делает: телевизор

26 © Luxoft Training 2012 Класс: шаблон для объекта

27 © Luxoft Training 2012 Классы и объекты Что является и что не является объектом? Буч предложил еще более лаконичное описание объекта: Объект обладает состоянием, поведением и индивидуальностью.

28 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП

29 © Luxoft Training 2012 Наследование Дочерний класс может унаследовать структуру и поведение родительских классов

30 © Luxoft Training 2012 Наследование

31 © Luxoft Training 2012 Иерархия наследования

32 © Luxoft Training 2012 Иерархия наследования

33 © Luxoft Training 2012 Иерархия наследования

34 © Luxoft Training 2012 Animal Иерархия наследования

35 © Luxoft Training 2012 Какой метод вызывается? берется метод самого низкого уровня

36 © Luxoft Training 2012 Множественное наследование

37 © Luxoft Training 2012 Множественное наследование: проблемы «Смертоносный ромб смерти»

38 © Luxoft Training 2012 Классы из разных иерархий наследования могут реализовывать один и тот же интерфейс. Пользуйтесь интерфейсом, когда хотите определить роль, которую смогут играть другие классы, невзирая на то, где они находятся в иерархии наследования.

39 © Luxoft Training 2012 Интерфейс Интерфейс определяет, какие запросы вы вправе делать к определенному объекту. Light lt = new Light(); lt.on();

40 © Luxoft Training 2012 Интерфейсы т.к. интерфейс – это только спецификация некоторого поведения, то класс может наследовать несколько интерфейсов.

41 © Luxoft Training 2012 Комплексный пример

42 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП

43 © Luxoft Training 2012 Полиморфизм Возможность объектов с одинаковой спецификацией иметь разную реализацию. (разная обработка сообщений в разных классах) Методам с одним и тем же именем соответствует разный программный код, в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе- потомке изменяют реализацию класса-предка с обязательным сохранением сигнатуры метода.

44 © Luxoft Training 2012 Полиморфизм раннее связывание позднее связывание Возможность объектов с одинаковой спецификацией иметь разную реализацию.

45 © Luxoft Training 2012 Полиморфизм

46 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП

47 © Luxoft Training 2012 Инкапсуляция Инкапсуляция – механизм языка программирования, который ограничивает доступ к составляющим объект компонентам. (сокрытие деталей реализации за набором допустимых сообщений) К инкапсулированной переменной можно обратиться, когда пишешь реализацию класса.

48 © Luxoft Training 2012 Инкапсуляция Конецепция черного ящика

49 © Luxoft Training 2012 Инкапсуляция Инкапсуляция позволяет не зависеть от внутреннего устройства объекта. Примеры: -управление автомобилем: автомобили устроены по-разному, но мы об этом не задумываемся -выполнение работы специалистом: мы не знаем, как он делает свою работу; все, что мы делаем – отдаем ему команду выполнить работу. Это позволяет отделить использование объекта от его внутреннего устройства, и при необходимости менять внутреннее устройство, не влияя на работу тех, кто его использует.

50 © Luxoft Training 2012 Инкапсуляция Мы можем прятать: поля и методы. При этом есть несколько уровней сокрытия: private – прячем ото всех: только данный класс может получить доступ; protected – прячем ото всех, кроме объекта и его потомков public – каждый может получить доступ

51 © Luxoft Training 2012 Инкапсуляция

52 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП

53 © Luxoft Training 2012 Цели ООП ООП вводит значительное число новых концепций, требует привлечения определенных усилий на создание правильного дизайна системы, при этом достигаются следующие преимущества. Высокая степень повторно используемого кода Упрощение понимания человеком Возможность локализации модификаций кода

54 © Luxoft Training 2012 Упражнение 3 Анализ предметной области в произвольной нотации. Возможные примеры из жизни: форточка, ручка, лист, чашка Примеры из графического интерфейса: окно, кнопка, меню Примеры из банковского приложения: клиент, сотрудник, счет 1)Описать атрибуты 2) Описать методы 3) Определить иерархию наследования 4) Определить интерфейс 5) Определить полиморфное поведение методов 6) Определить спрятанные методы (инкапсуляция) 7) Определить отношения часть/целое

55 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП