Рубрики
Без рубрики

Оставайтесь в L(ООП) с основами объектно-ориентированного программирования

“Объектно-ориентированное программирование – исключительно плохая идея, которая могла возникнуть только в… С тегами computer science, java, ооп, начинающие.

“Объектно-ориентированное программирование – исключительно плохая идея, которая могла возникнуть только в Калифорнии”. – Эдсгер Дейкстра

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

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

В этом блоге я кратко опишу ООП и в общих чертах объясню его 4 основные концепции: абстракция, инкапсуляция, наследование и полиморфизм. Я родом из Java-фона, поэтому я добавлю немного Java, чтобы расширить некоторые моменты.

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

Что такое Объектно-ориентированное программирование?

ООП – это модель компьютерного программирования, которая организует разработку программного обеспечения с помощью объектов и классов .

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

Данные объекта реализуются с использованием полей , а поведение реализуется с использованием методов .

Классы – это просто чертежи объекта. Они определяют состояние и поведение, которые могут вызывать объекты.

Объекты являются экземплярами классов

Вот краткий пример, чтобы показать эти отношения:

1. Абстракция

Процесс абстрагирования скрывает ненужные детали от объекта и показывает только существенные атрибуты. Таким образом, пользователю предоставляется ограниченный объем информации для взаимодействия.

Например, когда вы ведете автомобиль, вы не беспокоитесь о внутренней работе двигателя или о том, как шины управляют вашим автомобилем. Все это находится за кулисами.

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

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

Абстракция достигается за счет использования абстрактных классов и интерфейсов в Java.

Скрытие абстракции

2. Инкапсуляция

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

Например, если у вас есть объект таблицы с открытыми полями, вы сможете задавать поля в любое удобное для вас время. Вы можете подумать, что это не имеет значения, но что, если вы установите стол.ноги где-то случайно? Это может привести к поломке всего объекта и приложения (потому что это больше не таблица).

Однако, если вы инкапсулируете это поле в сеттер ( settlers(null) ), вы можете добавить проверку, которая игнорирует установку “ножек” в значение null, тем самым усложняя приложение.

Инкапсуляция достигается за счет использования модификаторов доступа (т. Е. общедоступных, частных, защищенных) и геттеров/сеттеров в Java.

Скрытие инкапсуляции

3. Наследование

Наследование позволяет одному классу извлекать данные и поведение из другого класса. Основное преимущество этого заключается в возможности повторного использования, что позволяет экономить время и усилия, делая код более читабельным.

Например, класс учащихся и класс учителей могут быть детьми класса Person. Ученик и Учитель наследуют поля ( имя , Фамилия , дата Рождения ) и методы ( работать () , ходить в школу() ) из класса Person.

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

В Java наследование достигается путем “расширения” родительского класса.

4. Полиморфизм

Поли-что?? Честно говоря, это звучит круче, чем есть на самом деле.

Полиморфизм – это состояние, возникающее в нескольких различных формах.

В ООП полиморфизм позволяет данным или методам с одним и тем же именем означать разные вещи в разных контекстах. Но что это вообще значит?

Взгляните еще раз на пример наследования. Поскольку и Ученик, и Учитель наследуют DoWork() от класса Person, они оба могут его вызывать. Мы также можем попросить их реализовать свой собственный способ “делать работу”.

  • Учитель может оценивать работы
  • Студент может учиться

Это известно как переопределение метода из родительского класса. Теперь всякий раз, когда создается объект Учителя и вызывается функция DoWork() , Учитель будет “оценивать работы”. И если бы объект Person был создан и вызывал do Work() , он бы просто “прочитал книгу”.

Другой случай, когда вы увидите полиморфизм на работе, – это метод перегрузки . Перегрузка достигается путем изменения количества аргументов и/или изменения типа аргументов в методе.

Например, в классе с именем House у вас могут быть следующие методы:

  • краска()
  • краска (цвет строки)
  • краска (Цвет строки 1, цвет строки 2)
  • краска (логическая грунтовка)

Вывод

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

Если вы хотите получить более глубокое представление о том, как эти идеи реализуются программно, ознакомьтесь с этими ссылками в “GeeksforGeeks”.:

Спасибо за чтение! Если вам нужны дополнительные технические советы, программное обеспечение и блоги, вы можете написать мне в Твиттере 🔥 🤘🏽 🐶

Оригинал: “https://dev.to/jburroughs/stay-in-the-l-oop-with-object-oriented-programming-basics-1dn”