oop Flashcards

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

Принципы ООП

A
  • Инкапсуляция
  • Наследование
  • Полиморфизм
  • Абстракция
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

Свойство, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствованной функциональностью.
Класс наследника является классом предка, но класс предка не является классом наследника.
Виды наследования:
- множественное( недостаток - ромбовидное наследование)
- одиночное
Запрет наследования - final
Наследование в Java - extends

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

Полиморфизм

A

Свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Полиморфная переменная - это переменная, которая может принимать значения разных типов.
Полиморфная функция - функция, у которой хотя бы один аргумент является полиморфной переменной.
Виды полиморфных функций :
- ad hoc - поведение разное для разных типов аргументов
- параметрический - поведение одинаковое для разных типов аргументов

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

Ассоциация - связь между объектами. Композиция и агрегация - частные случаи ассоциации «часть-целое».
Агрегация предполагает, что объекты связанны взаимоотношением «part-of”(экземпляр части может входить в несколько целых). Композиция более строгий вариант «part-of “(экземпляр части может входить в одно целое).

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

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

Связывание

A

Присоединение вызова метода к телу метода.
Виды:
- раннее (статическое) - проводится компилятором перед запусти программы ( перегрузка методов, приватные, статические, final методы)
- позднее (динамическое) - непосредственно во время выполнения программы (runtime), в зависимости от типа объекта (переопределение методов).

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

SOLID

A

Single Responsibility Principle(Принцип единой ответсвенности) - класс должен отвечать за одну какую-то логику.

Open Closed Principle(Принцип открытости/закрытости) - программные сущности должны быть открыты для расширения, но закрыты для изменения. Расширение с помощью наследников (не меняя сущности родителя).

Liskov’s Substitution Principle( Принцип подстановки Барбары Лисков) - объекты в программе можно заменить их наследниками без изменения свойств программы.

Interface Segregation Principle (Принцип разделения интерфейса) - клиенты не должны быть вынуждены реализовывать интерфейсы, в которых они не будут использовать.

Dependency Inversion Principle( Принцип инверсии зависимостей) - зависимости внутри системы строятся на основе абстракций.

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