На данный момент мне кажется, что всем больше всего нравится вопрос:

«Вы знаете, что такое объектно-ориентированное программирование?»

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

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

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

  • Инкапсуляция
  • Наследование
  • Абстракция
  • Полиморфизм

ООП немного отличается для разных языков, например, в Ruby, C #, JavaScript и Python, но общая концепция остается той же.

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

ООП сосредотачивается вокруг «объектов», распространенные примеры - представить кошку, собаку или человека. Каждый из этих объектов будет иметь свои собственные индивидуальные атрибуты и свои собственные индивидуальные методы / поведение, такие как ходьба, разговор, мяуканье, лай и т. Д. Чтобы эти объекты не взаимодействовали друг с другом, когда они не должны этого делать, их необходимо инкапсулировать.

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

Имена классов - это способ инкапсуляции и создания похожих объектов. Кошек и собак можно относить к классу «Животные», но нельзя хранить человека. Если бы у вас был класс под названием «Language», вы могли бы создавать объекты под названием Ruby, Python и JavaScript!

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

class Language
 def initialize(name, creator)
    @name = name
    @creator = creator
 end

 def description
    puts "I'm #{@name} and I was created by #{@creator}!"
 end
end
ruby = Language.new("Ruby", "Yukihiro Matsumoto")
python = Language.new("Python", "Guido van Rossum")
javascript = Language.new("JavaScript", "Brendan Eich")

ruby.description
python.description
javascript.description

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

def - это метод (функция), доступ к которому будет иметь каждый объект, который мы создаем в разделе Language.

Строки, относящиеся к Language.new(), заполняют параметры для имени и создателя, например «Python» был создан «Гвидо ван Россум» - вот вам интересный факт на день. Поэтому, когда мы вызываем javascript.description , мы вызываем метод, определенный выше, и получаем на выходе

«Я JavaScript, и меня создал Брендан Эйх!»

вместо «Я # {@ name}, и меня создал # {@ creator}!»

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

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

Абстракция

Абстракция чем-то похожа на покрывало. Он скрывает то, что не имеет отношения к использованию других объектов, и предоставляет только публичные методы высокого уровня. Когда вы включаете телефон, это делается одним нажатием кнопки, и нажатие кнопки - это все, что мы видим на поверхности, но внутри вашего телефона гораздо больше, чем то, что происходило под капотом, особенно для мобильных телефонов, у которых есть пальцы. Я БЫ. Абстракция скрывает все детали и технические детали. Это также мера защиты от разглашения личных данных.

Полиморфизм

Полиморфизм - это то, на что это похоже. Морфинг, разные формы, разные формы. При необходимости объекты могут "трансформироваться" и принимать различные формы в родительско-дочерних отношениях. Есть два типа полиморфизма: статический и динамический. Но это объяснение для второй части.

Удачного кодирования !!!