Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемГеннадий Воздвиженский
1 1 © Luxoft Training 2012 Введение в ООП Модуль #2
2 2 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
3 3 © Luxoft Training 2012 Парадигмы программирования Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ. Парадигма программирования определяет то, в каких терминах программист описывает логику программы. Парадигма программирования не определяется языком однозначно.
4 4 © Luxoft Training 2012 Виды парадигм программирования Структурное Логическое Функциональное Объектно-ориентированное Аспектно-ориентированное и др.
5 5 © Luxoft Training 2012 Структурное программирование Структурная программа очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые компьютер должен выполнить. Пример – язык С. Структурное программирование – это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние программы.
6 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 7 © Luxoft Training 2012 Функциональное программирование Функциональное программирование – это парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций. Любая функция – суперпозиция других функций. Примеры: Lisp, Haskel, Closure.
8 8 © Luxoft Training 2012 ООП возникло на базе процедурного программирования, где было предложено данные и методы их обработки объединить в классы. ООП – методология, при которой программа организуется как совокупность сотрудничающих объектов, каждый из которых – экземпляр класса. ООП – парадигма, в которой основными концепциями являются понятия классов и объектов.
9 9 © Luxoft Training 2012 ООП ООП является наиболее распространенной парадигмой программирования. Java является полностью ООП языком, т.е. не поддерживает программирование в процедурном стиле.
10 10 © Luxoft Training 2012 Три самых главных слова ООП
11 11 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляуция Цели ООП
12 12 © Luxoft Training 2012 Все вокруг нас – объекты свойства – поля объекта свойства – поля объекта операции – методы объекта Моделируем естественный мир. Разговариваем на языке предметной области.
13 13 © Luxoft Training 2012 Объекты: создаем пользовательский интерфейс для фигур Пример: создаем фигуры…
14 14 © Luxoft Training 2012 Объекты: квадрат, круг, треугольник
15 15 © Luxoft Training 2012 Еще объект: амеба
16 16 © Luxoft Training 2012 Еще объект: амеба
17 17 © Luxoft Training 2012 Еще объект: амеба
18 18 © Luxoft Training 2012 Амеба: добавим точку вращения
19 19 © Luxoft Training 2012 Что общего между этими классами?
20 20 © Luxoft Training 2012 Создаем иерархию объектов
21 21 © Luxoft Training 2012 Создаем иерархию объектов
22 22 © Luxoft Training 2012 Создаем иерархию объектов
23 23 © Luxoft Training 2012 Объект знает и объект делает
24 24 © Luxoft Training 2012 Объект знает и объект делает
25 25 © Luxoft Training 2012 Объект знает и объект делает: телевизор
26 26 © Luxoft Training 2012 Класс: шаблон для объекта
27 27 © Luxoft Training 2012 Классы и объекты Что является и что не является объектом? Буч предложил еще более лаконичное описание объекта: Объект обладает состоянием, поведением и индивидуальностью.
28 28 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
29 29 © Luxoft Training 2012 Наследование Дочерний класс может унаследовать структуру и поведение родительских классов
30 30 © Luxoft Training 2012 Наследование
31 31 © Luxoft Training 2012 Иерархия наследования
32 32 © Luxoft Training 2012 Иерархия наследования
33 33 © Luxoft Training 2012 Иерархия наследования
34 34 © Luxoft Training 2012 Animal Иерархия наследования
35 35 © Luxoft Training 2012 Какой метод вызывается? берется метод самого низкого уровня
36 36 © Luxoft Training 2012 Множественное наследование
37 37 © Luxoft Training 2012 Множественное наследование: проблемы «Смертоносный ромб смерти»
38 38 © Luxoft Training 2012 Классы из разных иерархий наследования могут реализовывать один и тот же интерфейс. Пользуйтесь интерфейсом, когда хотите определить роль, которую смогут играть другие классы, невзирая на то, где они находятся в иерархии наследования.
39 39 © Luxoft Training 2012 Интерфейс Интерфейс определяет, какие запросы вы вправе делать к определенному объекту. Light lt = new Light(); lt.on();
40 40 © Luxoft Training 2012 Интерфейсы т.к. интерфейс – это только спецификация некоторого поведения, то класс может наследовать несколько интерфейсов.
41 41 © Luxoft Training 2012 Комплексный пример
42 42 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
43 43 © Luxoft Training 2012 Полиморфизм Возможность объектов с одинаковой спецификацией иметь разную реализацию. (разная обработка сообщений в разных классах) Методам с одним и тем же именем соответствует разный программный код, в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе- потомке изменяют реализацию класса-предка с обязательным сохранением сигнатуры метода.
44 44 © Luxoft Training 2012 Полиморфизм раннее связывание позднее связывание Возможность объектов с одинаковой спецификацией иметь разную реализацию.
45 45 © Luxoft Training 2012 Полиморфизм
46 46 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
47 47 © Luxoft Training 2012 Инкапсуляция Инкапсуляция – механизм языка программирования, который ограничивает доступ к составляющим объект компонентам. (сокрытие деталей реализации за набором допустимых сообщений) К инкапсулированной переменной можно обратиться, когда пишешь реализацию класса.
48 48 © Luxoft Training 2012 Инкапсуляция Конецепция черного ящика
49 49 © Luxoft Training 2012 Инкапсуляция Инкапсуляция позволяет не зависеть от внутреннего устройства объекта. Примеры: -управление автомобилем: автомобили устроены по-разному, но мы об этом не задумываемся -выполнение работы специалистом: мы не знаем, как он делает свою работу; все, что мы делаем – отдаем ему команду выполнить работу. Это позволяет отделить использование объекта от его внутреннего устройства, и при необходимости менять внутреннее устройство, не влияя на работу тех, кто его использует.
50 50 © Luxoft Training 2012 Инкапсуляция Мы можем прятать: поля и методы. При этом есть несколько уровней сокрытия: private – прячем ото всех: только данный класс может получить доступ; protected – прячем ото всех, кроме объекта и его потомков public – каждый может получить доступ
51 51 © Luxoft Training 2012 Инкапсуляция
52 52 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
53 53 © Luxoft Training 2012 Цели ООП ООП вводит значительное число новых концепций, требует привлечения определенных усилий на создание правильного дизайна системы, при этом достигаются следующие преимущества. Высокая степень повторно используемого кода Упрощение понимания человеком Возможность локализации модификаций кода
54 54 © Luxoft Training 2012 Упражнение 3 Анализ предметной области в произвольной нотации. Возможные примеры из жизни: форточка, ручка, лист, чашка Примеры из графического интерфейса: окно, кнопка, меню Примеры из банковского приложения: клиент, сотрудник, счет 1)Описать атрибуты 2) Описать методы 3) Определить иерархию наследования 4) Определить интерфейс 5) Определить полиморфное поведение методов 6) Определить спрятанные методы (инкапсуляция) 7) Определить отношения часть/целое
55 55 © Luxoft Training 2012 Модуль 2 Парадигмы программирования Классы и объекты Наследование Полиморфизм Инкапсуляция Цели ООП
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.