OOP Flashcards

(22 cards)

1
Q

Что такое ООП (объектно-ориентированное программирование)?

A

ООП — это парадигма программирования, основанная на использовании объектов и классов.
Она помогает организовать код так, чтобы он был более понятным, масштабируемым и повторно используемым.

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

Назовите 4 принципа ООП.

A

Абстракция, Инкапсуляция, Наследование, Полиморфизм.

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

Что такое абстракция?

A

Это принцип, позволяющий скрыть детали реализации и показать только необходимый функционал.
Пример: интерфейс List скрывает, как работает ArrayList внутри.

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

Что такое инкапсуляция?

A

Это объединение данных и методов в одном классе с ограничением прямого доступа к ним.Пример: приватные поля name и age, доступные только через геттеры/сеттеры.

public class Student {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}

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

Что такое наследование?

A

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

public class Student {}
public class Wizard extends Student {}

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

Что такое полиморфизм?

A

Это способность использовать объекты подклассов как объекты суперкласса.
Student s = new Wizard();
s.printInfo();

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

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

Это особенно полезно, когда у нескольких классов есть общие характеристики. Вместо того чтобы дублировать код, мы выносим его в родительский класс и наследуем.

В Java мы используем ключевое слово extends, чтобы указать, что один класс наследует другой.

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

Как обозначается наследование в Java?

A

С помощью ключевого слова extends.
public class Wizard extends Student { … }

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

Пример кода наследование в Java:

A

public class Student {
protected String name;

public Student(String name) {
    this.name = name;
}

public void printInfo() {
    System.out.println("Student: " + name);
} }

// Наследуемый класс
public class Wizard extends Student {
private String house;

public Wizard(String name, String house) {
    super(name); // Вызов конструктора родителя
    this.house = house;
}

@Override
public void printInfo() {
    System.out.println("Wizard: " + name + ", House: " + house);
} }
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
12
Q

Пример кода полиморфизм в Java:

A

class Student {
public void sayHello() {
System.out.println(“Hello from Student”);
}
}

class Wizard extends Student {
@Override
public void sayHello() {
System.out.println(“Hello from Wizard”);
}
}

public class Main {
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Wizard(); // полиморфизм

    s1.sayHello(); // Hello from Student
    s2.sayHello(); // Hello from Wizard (используется метод подкласса)
} }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Дайте определение принципа абстракции в ООП.

A

Абстракция в ООП — это принцип, позволяющий скрыть сложные детали реализации объекта и показывать только нужный функционал для внешнего использования.

Это как пульт от телевизора: ты нажимаешь кнопку, и пульт передаёт сигнал — ты не знаешь, как он работает внутри, тебе это и не нужно.

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

Как реализуется абстракция в Java? Приведи пример.

A

Абстракция реализуется через абстрактные классы и интерфейсы, которые скрывают реализацию и определяют только внешний контракт.

// Абстрактный класс
abstract class Animal {
abstract void makeSound();
}

class Dog extends Animal {
void makeSound() {
System.out.println(“Woof!”);
}
}

// Интерфейс
interface Flyable {
void fly();
}

class Bird implements Flyable {
public void fly() {
System.out.println(“Flies with wings”);
}
}

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

Какие элементы языка отвечают за инкапсуляцию?

A

В Java за инкапсуляцию отвечают модификаторы доступа (private, public, protected, default), а также геттеры и сеттеры.

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

Что делает инкапсуляция?

A

Объединяет данные и поведение в одном классе и ограничивает доступ к внутренним данным извне.

17
Q

Как выглядит пример инкапсуляции в коде?

A

public class Student {
private String name; // скрытое поле

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
} }
18
Q

В чём разница между инкапсуляцией и абстракцией?

A

Инкапсуляция скрывает реализацию на уровне кода (например, через private), а абстракция скрывает детали системы и показывает только нужный интерфейс.

19
Q

Какие элементы языка отвечают за наследование?

A

extends — используется при объявлении класса-наследника:

public class Wizard extends Student { … }

@Override — аннотация, помогающая явно указать, что метод переопределяется из родительского класса:

@Override
public void printInfo() {

}

Родительский класс — это суперкласс (superclass), дочерний класс — это подкласс (subclass).

20
Q

Что делает ключевое слово super в Java?

A

Вызывает конструктор родительского класса:

public Wizard(String name, String house) {
super(name); // вызывает конструктор Student(String name)
this.house = house;
}

Обращается к методу родителя:

@Override
public void printInfo() {
super.printInfo(); // вызывает метод из родителя
System.out.println(“House: “ + house);
}

Важно помнить:

super() должно быть первой строкой в конструкторе.

super можно использовать и для обращения к полям, если они не переопределены.

21
Q

Какие элементы языка отвечают за полиморфизм?

A

Полиморфизм в Java обеспечивается рядом языковых элементов. Во-первых, это наследование с помощью ключевого слова extends, которое позволяет одному классу быть подтипом другого. Во-вторых, это переопределение методов с использованием аннотации @Override. Наконец, это возможность создавать переменные суперкласса, которые указывают на объекты подклассов.
Например:

Student s = new Wizard(“Harry”, “Gryffindor”);
s.printInfo();

Хотя переменная типа Student, вызывается метод из Wizard, что демонстрирует полиморфизм во время выполнения.

22
Q

Какая связь между 4 принципами ООП?

A

Абстракция — показывает только нужный функционал.

Инкапсуляция — ограничивает доступ к данным.

Наследование — повторно использует код.

Полиморфизм — обрабатывает разные типы объектов единым способом.