На данный момент мне кажется, что всем больше всего нравится вопрос:
«Вы знаете, что такое объектно-ориентированное программирование?»
Когда меня впервые спросили, я не знала. Во второй раз, когда меня спросили, я немного поняла, но для меня этого было недостаточно. Следующий, кто спросит меня, получит подробный ответ, даже эссе. Так что приготовьтесь к моему официальному ответу ...
кто-то: Что такое объектно-ориентированное программирование?
я: Какой отличный вопрос! Объектно-ориентированное программирование (ООП) - это парадигма программирования, которая упрощает разработку больших проектов и включает четыре основных концепции:
- Инкапсуляция
- Наследование
- Абстракция
- Полиморфизм
ООП немного отличается для разных языков, например, в 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, вместо того, чтобы вводить все это снова для каждого объекта, который у вас есть, который может отправлять электронное письмо.
Абстракция
Абстракция чем-то похожа на покрывало. Он скрывает то, что не имеет отношения к использованию других объектов, и предоставляет только публичные методы высокого уровня. Когда вы включаете телефон, это делается одним нажатием кнопки, и нажатие кнопки - это все, что мы видим на поверхности, но внутри вашего телефона гораздо больше, чем то, что происходило под капотом, особенно для мобильных телефонов, у которых есть пальцы. Я БЫ. Абстракция скрывает все детали и технические детали. Это также мера защиты от разглашения личных данных.
Полиморфизм
Полиморфизм - это то, на что это похоже. Морфинг, разные формы, разные формы. При необходимости объекты могут "трансформироваться" и принимать различные формы в родительско-дочерних отношениях. Есть два типа полиморфизма: статический и динамический. Но это объяснение для второй части.
Удачного кодирования !!!