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

Моя цель

Когда у меня появилась возможность вести блог и поделиться им с коллегами, я подумал: «Какой лучший способ закончить эти блоги и помочь себе и другим в том, что должно быть известно для технического интервью, чем говорить о концепциях, которые я должен был бы использовать?» переучиваться снова, когда я буду готов вернуться к процессу собеседования, чтобы меня наняли». Я поставил перед собой цель снова изучить эти концепции, чтобы я мог подготовиться, а также немного рассказать о процессе собеседования, чтобы мои коллеги могли знать, что их ждет, когда мы все будем готовы приступить к процессу поиска работы. .

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

В ООП наследование позволяет нам создавать «родительские» классы, которые мы можем использовать для передачи методов и свойств, которые может использовать «дочерний» класс. Возьмем, к примеру, родительский класс «Баскетболист», у которого есть подклассы, такие как «Разыгрывающий», «Атакующий защитник», «Легкий форвард», «Мощный форвард» и «Центр».

У всех баскетболистов есть имя, рост, они могут бросать или воровать и т. д., но, возможно, каждая позиция лучше в чем-то, чем другая (центральный игрок может лучше блокировать удар соперника, чем разыгрывающий). С помощью наследования мы можем передавать все эти атрибуты и методы (например, «Стрелять», «Блокировать» или «Воруть»), поэтому нам не нужно создавать методы 5 раз (для 5 позиций).

class BasketballPlayer
def initialize(name, height)
//change Basketball Player name and height
end
def shoot
//shoot ball with a default probability
end
def block
//block ball with a default probability
end
def steal
//steal ball with a default probability
end
end
class ShootingGuard<BasketballPlayer
end
DwayneWade=BasketballPlayer.new(DwayneWade,"6,4")
DwayneWade.shoot   #shoots ball

Супер

мы можем использовать ключевое слово «super» для вызова метода из родительского класса. В приведенном ниже фрагменте класс ShootingGuard вызывает метод стрельбы с супер, который будет делать все, что находится в методе стрельбы BasketballPlayer, а ShootingGuard может делать что-то еще.

class ShootingGuard<BasketballPlayer
def shoot
super +10
end
end

класс ShootingGuard вызвал метод стрельбы, но добавил дополнительное значение 10, поскольку ShootingGuard может лучше стрелять, чем средний BasketballPlayer.

Переопределить

Мы также можем переопределить методы для моделирования на основе подкласса. Если мы возьмем пример того, как центровой может блокировать лучше, чем атакующий защитник, мы можем переопределить метод «блок» и увеличить вероятность того, что центровой заблокирует удар соперника (возможно, вместо того, чтобы добавлять вероятность к «блоку» баскетболиста). ”, мы полностью меняем вероятность, чтобы смоделировать вероятность блокирования Центра).

Множественное наследование

Возможно иметь несколько уровней наследования, когда у вас есть суперкласс, некоторые подклассы (1-й уровень) суперкласса и подклассы 1-го уровня подклассов. Возьмем, к примеру, животное и то, что оно/она ест.

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

Дополнительные ресурсы/процитированные работы



Далее: Абстракция