ООП Flashcards

1
Q

SOLID - S

A

Single responsibility principles

у каждого класса 1 зона ответственности по 1му актору

(Модуль должен отвечать за реализацию требований одного актора - группы, состоящей из одного или нескольких лиц, желающих одного и того же изменения)

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

SOLID - O

A

Классы (компоненты, модули) открыты для расширения, но закрыты для модификации

Чем полезен:
1) нет необходимости в регрессии
2) меньше вероятность ошибок

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

SOLID - L

A

Liskov Substitution Principle
Прицип подстановки Барбары Лисков

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

то есть если у нас есть метод eat() в базовом классе, все его дочерние классы также должны реализовывать этот метод (не возвращать null или выбрасывать exception)

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

SOLID - I

A

Interface Segregation Principle (принцип разделения интерфейсов).

Программные сущности не должны зависеть от методов, которые они не используют.

То есть НЕЛЬЗЯ заставлять клиента реализовывать интерфейс, которым он не пользуется. Принцип тесно связан с 3им приципом.
То есть, для каждого клиента (код, который исполняет какую-то функцию => админка, юзер) нужен свой интерфейс, не общий со всеми методами, а только с теми, что он использует.

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

SOLID - D

A

Dependency inversion principle (принцип инверсии зависимостей).

Модули верхних уровней не должны зависеть от модулей нижних уровней, и оба типа модулей должны зависеть от абстракций.
Абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций.

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

Принципы ООП

A
  1. Наследование
  2. Абстракция
  3. Инкапсуляция
  4. Полиморфизм
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A

Использование уже существующих классов для создания новых

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
9
Q

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

A

Принцип, при котором атрибуты и поведение объекта объединяется в одном классе, внутрення реализация объекта скрывается от пользователя, а для работы с объектом предоставляется открытый интерфейс (геттеры, сеттеры)

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

Полиморфизм

A

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

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

class Figure {
constructor(width, height) {
this.width = width;
this.height = height;
}

getFigureName() {
console.log(Hi, I am figure);
}
}

class Triangle extends Figure {
constructor(width, height, color) {
super(width, height);
this.color = color;
}

getFigureName() {
console.log(Hi, I am Triangle);
}
}

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