Скачать презентацию Основы ООП Составление Суров М Ю Скачать презентацию Основы ООП Составление Суров М Ю

Основы ООП - v0.3.ppt

  • Количество слайдов: 22

Основы ООП © Составление, Суров М. Ю. , 2009 © Net. Cracker Confidential 2008 Основы ООП © Составление, Суров М. Ю. , 2009 © Net. Cracker Confidential 2008

Содержание u Введение u Концепции ООП u Реализация концепций ООП u Инкапсуляция u Наследование Содержание u Введение u Концепции ООП u Реализация концепций ООП u Инкапсуляция u Наследование классов и полиморфизм u Реализация ООП в Java (абстрактные классы, интерфейсы) u Объекты (инициализация, работа с объектами, конструкторы) © Net. Cracker Confidential 2008 2

Процедурный стиль Входные данные Процедура 1 Процедура 2 Память Процедура 3 Результат работы процедур Процедурный стиль Входные данные Процедура 1 Процедура 2 Память Процедура 3 Результат работы процедур © Net. Cracker Confidential 2008 3

Концепции ООП Объектно-ориентированное программирование (ООП) – методология программирования, основанная на представлении программы в виде Концепции ООП Объектно-ориентированное программирование (ООП) – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определённого класса. ООП базируется на следующих принципах: Абстракция u Инкапсуляция u Наследование u Полиморфизм u © Net. Cracker Confidential 2008 4

Абстракция Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Абстракция Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Абстракция — это набор всех таких характеристик. геометрическая фигура треугольник прямой элипс острый круг Процесс выделения более точных абстракций из более общих называется декомпозированием © Net. Cracker Confidential 2008 5

Реализация концепций ООП Основным понятием является класс – абстрактная модель некоего предмета. © Net. Реализация концепций ООП Основным понятием является класс – абстрактная модель некоего предмета. © Net. Cracker Confidential 2008 6

Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом. базовый потомок Класс 1 Класс 2 Свойство 1 Свойство 2 Свойство 3 Свойство 1 Свойство 2 © Net. Cracker Confidential 2008 отнаследовано новое 7

Наследование классов Классы можно наследовать друг от друга: public class Parent { public int Наследование классов Классы можно наследовать друг от друга: public class Parent { public int sum(int x, int y) { return x+y; } } public class Child extends Parent { public int sum(int x, int y) { // >>> можно переопределить <<<< // например: return x+x; } } © Net. Cracker Confidential 2008 8

Инкапсуляция Отделение (сокрытие) внутреннего устройства (данных и вспомогательных операций) от поведения (доступных операций) u Инкапсуляция Отделение (сокрытие) внутреннего устройства (данных и вспомогательных операций) от поведения (доступных операций) u Положительные стороны u w гибкость – можем менять внутреннее строение, не меняя поведение w безопасность – запрещаем и/или ограничиваем доступ к данным объекта w простота – меньше доступных операций -> легче использовать и понимать u Реализация инкапсуляции w Методы доступа к полям u get. Field. Name/set. Field. Name u boolean – is. Field. Name w Поля u модификатор private (или protected) w Модификатор final повышает скорость © Net. Cracker Confidential 2008 9

Инкапсуляция private protected public © Net. Cracker Confidential 2008 доступно только в этом классе Инкапсуляция private protected public © Net. Cracker Confidential 2008 доступно только в этом классе доступно в этом классе и наследниках доступно всем 10

Абстрактные классы public abstract class Simple. Class { public abstract void empty. Method(); } Абстрактные классы public abstract class Simple. Class { public abstract void empty. Method(); } абстрактные классы – эти классы представляют собой не до конца реализованную модель какого-либо предмета © Net. Cracker Confidential 2008 11

Интерфейсы в общем их понимании Интерфейс – семантическая и синтаксическая конструкция в коде программы, Интерфейсы в общем их понимании Интерфейс – семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом Суть: Интерфейс это контракт налагемый на реализацию (класс, компонент) Интерфейс – описание функционала Интерфейс – граница взаимодействия между классами или компонентами Интерфейс не содержит реализации Интерфейс не может инстанцировать объект © Net. Cracker Confidential 2008 12

Интерфейсы в Java Класс может наследоваться только от одного класса, независимо от того, является Интерфейсы в Java Класс может наследоваться только от одного класса, независимо от того, является ли класс-родитель абcтрактным, при этом класс может реализовывать любое число интерфейсов, переопределяя их методы public interface Interface { public void simple. Method(); } Интерфейс представляет собой некий облегчённый аналог класса: он не содержит полей и не содержит методов с реализацией © Net. Cracker Confidential 2008 13

Абстрактные классы и интерфейсы Функциональность Интерфейс Абстрактный класс Множественное наследование Поддерживает Не поддерживает Реализация Абстрактные классы и интерфейсы Функциональность Интерфейс Абстрактный класс Множественное наследование Поддерживает Не поддерживает Реализация функциональности Интерфейс предоставляет только сигнатуры методов, не может предоставлять функциональность Может предоставлять завершённую функциональность некоторых методов, которые потом можно переопределить Модификаторы доступа У интерфейса не может быть никаких модификаторов доступа Может иметь модификаторы доступа для полей, функций, итд. © Net. Cracker Confidential 2008 14

Абстрактные классы и интерфейсы Функциональность Интерфейс Поля и константы Поля не могут быть Может Абстрактные классы и интерфейсы Функциональность Интерфейс Поля и константы Поля не могут быть Может иметь и поля и объявлены в константы интерфейсе, все поля становятся константами Уровень абстракции Предоставляют крайнюю степень абстракции, на уровне описания Предоставляет базовые характеристики сущности Добавление новой функциональность При добавлении новых методов, мы должны реализовать данные методы во всех классах, которые реализуют данный интерфейс Можем реализовать данный метод по умолчанию, тогда наследники просто пронаследуют его © Net. Cracker Confidential 2008 Абстрактный класс 15

Объекты Объект представляет собой экземпляр класса. © Net. Cracker Confidential 2008 16 Объекты Объект представляет собой экземпляр класса. © Net. Cracker Confidential 2008 16

Объекты public class Simple. Object { private Long id; public String name; public Simple. Объекты public class Simple. Object { private Long id; public String name; public Simple. Object() { } public void set. Name(String name) { this. name = name; } public Long get. Name() { return name; } public Long get. Id() { return id; } private void erase. Name() { name = null; } } Simple. Object simple. Object = new Simple. Object(); © Net. Cracker Confidential 2008 17

Работа с объектом simple. Object. set. Name(“Rrrr”); вызываем метод, который проставит значение полю simple. Работа с объектом simple. Object. set. Name(“Rrrr”); вызываем метод, который проставит значение полю simple. Object. get. Name(); вернёт “Rrrr” simple. Object. get. Id(); вернёт null simple. Object. name = “Mrrr”; явно проставляем значение полю © Net. Cracker Confidential 2008 18

Конструктор u u u u u Конструктор – метод инициализации полей объекта Обычный метод Конструктор u u u u u Конструктор – метод инициализации полей объекта Обычный метод Для него не указывается тип возвращаемого значения Конструктор вызывается каждый раз при создании объекта При использовании ключевого слова new происходит выделение памяти под объект Конструктор может принимать параметры Класс может иметь несколько конструкторов, различающихся сигнатурой По оформлению кода, конструктор является методом типа void Имя конструктора должно совпадать с именем класса © Net. Cracker Confidential 2008 19

Минусы ООП • Динамическое связывание методов через виртуальную таблицу • Наследование размывает код • Минусы ООП • Динамическое связывание методов через виртуальную таблицу • Наследование размывает код • Глубина абстракции приводит к многослойным приложениям • Инкапсуляция снижает скорость доступа к данным • Динамическое создание объектов в «куче» а не на стеке © Net. Cracker Confidential 2008 20

Мотивация uhttp: //codingbat. com/java 2 лучших результата – примут на кураторство в компанию Net. Мотивация uhttp: //codingbat. com/java 2 лучших результата – примут на кураторство в компанию Net. Cracker © Net. Cracker Confidential 2008 21

Основы ООП Вопросы? © Net. Cracker Confidential 2008 22 Основы ООП Вопросы? © Net. Cracker Confidential 2008 22