ООП. Общие понятия, синтаксис. Flashcards

(8 cards)

1
Q

Абстракция

A
  • Абстракция — это когда мы выделяем только значимые для решения задачи характеристики объекта и игнорируем всё остальное. Чем меньше характеристик, тем лучше абстракция, но ключевые характеристики убирать нельзя.
  • Класс в ООП — это абстракция, благодаря которой вы можете объявлять объекты внутри программы, не описывая их подробно.
  • Для работы с абстракциями используются интерфейсы.
  • Абстракция делает процесс моделирования объектов более простым и менее трудоёмким, ведь разработчику не нужно учитывать все свойства объектов.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Интерфейс

A
  • Интерфейс класса — это функциональная часть класса. В ООП интерфейсами называют свойства и методы класса, используя которые можно взаимодействовать с объектом этого класса из любого места в программе.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

super()

A
  • super() в основном используется для расширения методов родительского класса в классах наследниках.
  • Чтобы объявить свойство класса-родителя в классе-наследнике, используется функция super():

class Axe(MeleeWeapon):

# В классе-наследнике определяется конструктор
# с собственным параметром material.
def \_\_init\_\_(self, name, material):
    # Вызываем конструктор класса-родителя.
    super().\_\_init\_\_(name)
    # Передаём значение параметра в новое свойство.
    self.material = material

Теперь при создании объекта класса Axe
# нужно обязательно указывать два параметра:
# название и материал.
brodex = Axe(‘Верный’, “железо”)

  • Функцию super() можно также использовать для того, чтобы в дочернем классе вызывать методы из класса-родителя:

class Axe(MeleeWeapon):

def \_\_init\_\_(self, name, material):
    super().\_\_init\_\_(name)
    self.material = material
   
# Объявляем собственный для класса Axe метод.
def slashing_blow(self):
    # Описываем логику работы метода дочернего класса.
    print('СОКРУШИТЕЛЬНЫЙ УДАР!')
    # Возвращаем результат выполнения метода slashing_blow() в родительском классе.
    return super().slashing_blow()  

brodex = Axe(‘Верный’, ‘железо’)

print(brodex.slashing_blow())

Вывод в терминал:
# СОКРУШИТЕЛЬНЫЙ УДАР!
# Нанесён рубящий удар оружием Верный.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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

A
  • Инкапсуляция — объединение и скрытие методов и свойств, и предоставление доступа к ним через простой внешний интерфейс.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ассоциация

A
  • Традиционно в полях объекта могут храниться не только обычные переменные стандартных типов, но и другие объекты. А эти объекты могут в свою очередь хранить какие-то другие объекты и так далее, образуя дерево (иногда граф) объектов. Это отношение называется ассоциацией.
  • Когда один объект стал составной частью другого это и есть ассоциация. Она бывает двух типов:
  1. Композиция — случай, когда на фабрике трансформеров, собирая Оптимуса, обе пушки ему намертво приколачивают к рукам гвоздями, и после смерти Оптимуса, пушки умирают вместе с ним. Другими словами, жизненный цикл дочернего объекта совпадает с жизненным циклом родительского.
  2. Агрегация — случай, когда пушка выдается как пистолет в руку, и после смерти Оптимуса этот пистолет может подобрать его боевой товарищ Олег, а затем взять в свою руку, либо сдать в ломбард. То бишь жизненный цикл дочернего объекта не зависит от жизненного цикла родительского, и может использоваться другими объектами.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Утиная типизация

A

Неявная типизация, латентная типизация или утиная типизация (англ. Duck typing) в ООП-языках — определение факта реализации определённого интерфейса объектом без явного указания или наследования этого интерфейса, а просто по реализации полного набора его методов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Полиморфизм

A
  • Полиморфизм — возможность взаимодействовать с объектами разных классов через одинаковые интерфейсы, обращаться к свойствам и методам, общим для всех объектов.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly