5.09M
Category: programmingprogramming

Объектно-ориентированное программирование: суть и задачи

1.

Объектно-ориентированное
программирование: суть и
задачи

2.

3.

Суть объектно-ориентированного
программирования
Объектно-ориентированное программирование (ООП)
представляет собой подход, который рассматривает программу в
качестве набора объектов, взаимодействующих между собой.
Каждый из этих объектов имеет свои характеристики и поведение.
ООП помогает ускорить процесс написания кода и сделать его
более читаемым.

4.

Изначально данный подход создавался для того, чтобы связать
поведение объектов с их классами. Дело в том, что людям проще
воспринимать окружающий мир в виде объектов, которые можно
классифицировать. Яркий пример – разделение на живую и
неживую природу.
Предшественником ООП является процедурное
программирование. В рамках этого подхода программа
рассматривается как набор процедур и функций, которые
называются подпрограммами. Эти подпрограммы выполняют тот
или иной блок кода с нужными входящими данными. Данный
способ позволяет писать легкие программы с простой структурой.

5.

При использовании ООП разработчик получает возможно вносить
изменения лишь один раз. Ему нужно обработать объект, который
выступает в качестве ключевого элемента программы. При этом
все операции рассматриваются как взаимодействия различных
объектов. Код становится более читаемым. Итоговую программу
проще масштабировать.

6.

7.

Принципы ООП
Основы объектно-ориентированного программирования
представляют собой перечень принципов, которые формируют
данный подход. Иными словами, это правила разработки и
применения всех структурных элементов (в т.ч. классов, объектов,
методов и т.д.).

8.

Инкапсуляция
Все важные данные, которые требуются для функционирования
объекта, должны хранится в нем самом. Лишь некоторая информация
доступна для внешних элементов.
Внутри объекта или класса хранятся все данные этого объекта или
класса. Таким образом, разработчик не может их редактировать при
помощи других классов. Окружающие элементы могут лишь
запрашивать «публичные» методы и атрибуты.
Зачем же это все нужно? Во-первых, данный подход повышает уровень
безопасности. Во-вторых, он помогает снизить вероятность случайного
повреждения информации внутри класса или объекта.

9.

Наследование
Наследование представляет собой метод организации объектов и
классов. Чтобы разработчику не приходилось собственноручно
создавать множество элементов, он может сформировать класс над
классами. Они будут иметь более общие характеристики и функции. В
результате программист может поэтапно наследовать от них какиелибо возможности.
При помощи специальной конструкции разработчик берет те или иные
атрибуты или методы из класса. Затем он их редактирует либо
оставляет в исходном виде. Далее разработчик формирует с помощью
этих атрибутов/методов уникальный объект или подкласс, чтобы
перейти к этапу наследования опций.

10.

11.

Разработчику не требуется каждый раз формировать новый класс
или объект, указывая для него весь необходимый набор опций.
Нужно лишь применить конструкцию наподобие этой:
• export class Bus extends Vehicle()
Затем код дополняется более конкретными свойствами нового
объекта (скорость, планировка и т.д.).

12.

Абстракция
Это еще одно свойство объектно-ориентированного
программирования. Его суть заключается в том, что каждый
верхний слой над объектом (класс) является более абстрактным,
чем его «младшая версия». Разработчику не нужно много раз
создавать один и тот же объект, приписывая одинаковые атрибуты
и методы.

13.

14.

Полиморфизм
Одни и те же методы могут применяться для обработки различных
типов информации. В разных ЯП полиморфизм имеет различные
свойства. К примеру, в строго типизированном языке C++
задействуется «перегрузка», а в JavaScript функции могут обрабатывать
различные типы данных без необходимости заранее указывать тип.
Следование принципу полиморфизма помогает обрабатывать разные
типы информации с использованием одних и тех же методов. К
примеру, двузначные числа и числа с плавающей точкой. Кроме того,
полиморфизмом называют возможность переопределять методы в
дочерних классах. Это необходимо для обработки других типов
информации или выполнения дополнительных действий при вызове
аналогичного метода.

15.

Структура объектно-ориентированного
программирования
Есть четыре базовых элемента кода, который написан по
парадигме объектно-ориентированного программирования:
• Объект
Речь идет о части кода, описывающей элемент с определенными
характеристиками и функциями. К примеру, объектами являются
карточки товаров в каталоге интернет-магазина, кнопка «заказать»
и т.д.

16.

• Класс
Это шаблон, который позволяет формировать новые объекты. Если
продолжить пример с интернет-магазином, то классом будет
являться «Карточка товара». Он описывает общие характеристики
всех конкретных карточек или объектов, о которых мы говорили
выше.
Классы имеют свойство наследования. Иными словами, подклассы
«Карточка товара для дома», «Карточка телевизора», «Карточка
планшета» перенимают характеристики (например, стоимость
товара, количество товаров на складе и т.д.) родительского класса
«Карточка товара». Однако подкласс имеет и свои специфические
свойства. К примеру, для «Карточки компьютера» указано
количество USB-портов, а для «Карточки телевизора» –
разрешение экрана.

17.

• Метод
Метод в объектно-ориентированном программировании
представляет собой функцию внутри объекта или класса, которая
дает возможность взаимодействовать с ним или с другой частью
кода. К примеру:
• Порекомендовать похожие товары.
• Сопоставить характеристики двух товаров.
• Проверить количество товара в наличии.
• Внести в карточку конкретного объекта определенные данные.

18.

• Атрибут
Атрибуты – это характеристики объекта. К примеру, стоимость,
производительность, диагональ экрана и т.д. Разработчик
указывает их классе, а затем заполняет эти атрибуты конкретной
информацией при помощи методов.

19.

В качестве примера рассмотрим код на языке Java.
Как уже было отмечено, класс представляет собой общую
абстракцию, которая описывает структуру объектов. Для начала
сформируем класс “Item” для товара, который имеет две
характеристики (атрибута) – наименование и стоимость. Чтобы это
сделать, воспользуемся конструктором класса (методом), который
поможет инициализировать объект. Пример объектноориентированного программирования:

20.

class Item {
private String name;
private String price;
public Item(String name,
String price){
this.name = name;
this.price = price;
}
public void card() {
System.out.println(this.
name + » стоит » + this.price);
}
}

21.

После этого укажем еще один метод – card. С его помощью мы
узнаем наименование и цену для конкретного товара. После этого
зададим атрибуты name и price. Затем сформируем подкласс,
который будет иметь одно и то же название – «Телефон». При
этом стоимость объектов может различаться.

22.

class Phone extends Item {
public Phone(String price){
super(«Телефон»,price);
}
}
Таким образом, был взят общий класс Item со всеми его
атрибутами и методами и сформирован подкласс, который
перенял атрибут name. Если мы вызовем этот подкласс, то
потребуется указать лишь стоимость. Название будет
присваиваться автоматически.

23.

Теперь попробуем вызвать подкласс и сформировать объект – телефон
с конкретной ценой:
public class Main {
public static void main(String
args[]) {
Phone1 = new Phone(«30000»);
}
}
После этого разработчик получит возможность просматривать
информацию об определенном телефоне. Для этого ему нужно будет
использовать метод card:
Phone1.card();
Мы увидим информацию: «Телефон стоит 30 000».

24.

Плюсы и минусы объектноориентированного программирования
Объектно-ориентированное программирование, как и любой
подход, имеет свои плюсы и минусы. Для начала рассмотрим
преимущества ООП:

25.

• Удобство. Разработчику гораздо
проще писать код на основе этой
парадигмы. Программисту
нужно лишь один раз прописать
все классы, методы и атрибуты.
После этого он сможет создать
любое количество объектов.
• Читабельность. Код, написанный
в соответствии с принципами
объектно-ориентированного
программирования,
воспринимается намного проще.
Его сможет прочесть даже
неопытный разработчик,
который знает основы данного
подхода. У него получится без
труда распознать структуру в
чужом коде. Кроме того,
программисту будет легче искать
определенные части и
исправлять ошибки.

26.

• Простота обновления.
Разработчику не требуется
прорабатывать каждую страницу
по отдельности, если
необходимо отредактировать
все карточки товаров. Нужно
лишь отредактировать базовый
класс.
• Возможность повторного
использования кода. Нужно
один раз написать код для
кнопки «Добавить товар в
корзину». После этого его можно
будет задействовать при
разработке других интернетмагазинов, мобильных
приложений и т.д. Таким
образом, специалисту не нужно
повторно создавать код. Это
упрощает процесс
программирования и снижает
вероятность совершения
ошибки.

27.

• Возможность использования шаблонов.
Разработчику не нужно собственноручно
создавать большинство взаимодействий, так
как он может воспользоваться общими
шаблонами, которые необходимо лишь
немного изменить.
• Важнейший недостаток объектно-ориентированного
программирования заключается в том, что данный подход
довольно сложно освоить. Начинающий разработчик может
написать свою первую программу по функциональной
парадигме, но у него вряд ли получится сделать это в рамках
ООП. Сначала потребуется освоить структуры, принципы, а
также виды функций объектно-ориентированного
программирования.

28.

• Еще одним минусом является громоздкость кода. В
функциональном программировании зачастую нужно прописать
лишь одну функцию, а для выполнения аналогичной задачи в
ООП придется сформировать полноценную структуру, которая
будет содержать все классы, методы, атрибуты и объекты. С
одной стороны, это упрощает восприятие информации, но с
другой – усложняет сам код. Он становится более громоздким.
• Третий недостаток ООП – низкая производительность. Это
является следствием предыдущего пункта. Объектноориентированное программирование потребляет больше
энергии и требует больших мощностей. В результате падает
скорость компиляции.

29.

Языки в ООП
Объектно-ориентированный язык программирования
представляет собой набор формальных правил написания
программы, который выстроен согласно принципам ООП. На
сегодняшний день такие языки являются наиболее
распространенными. Перечислим некоторые из них: Python, C#,
C++, Cyclone, D, Delphi, Swift, Groovy, Io, Java, JavaScript, JScript
.NET, Objective-C, Perl, Lua, Ruby, Scala, PHP, . При этом
большинство из этих языков универсальны и могут использоваться
в других парадигмах.

30.

ООП Python
Python может использоваться в разных парадигмах. Однако его
основу составляет именно ООП. Рассмотрим пример создания
класса со свойствами в этом языке:
class Employee:
name
age
phone number

31.

Для добавления методов разработчику потребуется задействовать
def:
def ИмяМетода(self, …):
# код метода
Сформируем объект:
obj1 = Employee()
obj2 = Employee()

32.

Чтобы определить тип сформированных объектов, можно
воспользоваться методом type. Нужно будет передать ему
названия этих объектов:
print(type(obj1))
Ответ будет следующим:
<class ‘__main__.Employee’>
При обозначении модификаторов доступа в Python ООП, как
правило, применяется символ подчеркивания:
protected – «_» перед элементом данных этого класса;
private – «__» перед членом данных этого класса (двойной символ
подчеркивания).

33.

Язык C не относится к объектно-ориентированным. В рамках этого
языка можно реализовать принципы ООП, однако код в этом
случае получится очень странным. Таким образом, разработчикам,
которые используют язык С, потребуется изучить другой ЯП. В
противном случае применять парадигму ООП будет довольно
сложно.

34.

Часто задаваемые вопросы об объектноориентированном программировании
• Чем ООП отличается от функционального программирования?
Функциональная парадигма больше сосредоточена на
моделировании динамических сущностей и процессов. В рамках
ООП проще моделировать статические объекты. Однако обе эти
парадигмы дают разработчику возможность решать практически
все существующие программные задачи.

35.

• Где применяется объектно-ориентированное
программирование?
Чаще всего ООП применяется в процессе написания ОС, СУБД,
компиляторов, драйверов и различных прикладных программ. К
примеру, на основе этой парадигмы разработаны практически все
популярные браузеры, Microsoft Office, Adobe Photoshop и
Illustrator.

36.

• Какой язык больше подходит для ООП?
Оптимальным вариантом для работы в этой парадигме является
С++. Однако в первую очередь программисту нужно изучить
концепции и принципы ООП. Только после этого следует
переходить к практике реализации в рамках конкретного языка.
English     Русский Rules