Sem II (Program I) - N6 Flashcards

1
Q

Was unterscheidet eine abstrakte Klasse von einer konkreten Klasse?

A

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

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

Was passiert, wenn eine Subklasse nicht alle abstrakten Methoden der Basisklasse implementiert?

A

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

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

Wie wird Polymorphie in Verbindung mit abstrakten Klassen realisiert?

A

Полиморфизм реализуется через использование абстрактных классов, где вызовы методов определяются в абстрактном классе и могут быть по-разному реализованы в подклассах.

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

Приведите пример абстрактного метода.

A
public abstract double berechneFlaeche();
// Этот метод является абстрактным и должен быть реализован в каждом подклассе.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Warum verwendet man abstrakte Klassen statt Schnittstellen?

A

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

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

Was ist der Unterschied zwischen Up-Casting und Down-Casting in Bezug auf Polymorphie?

A

Повышающее приведение: Неявное приведение от подкласса к его суперклассу, при котором ограничивается видимость.
Up-Casting: Like saying “a dog is an animal.” Everyone agrees, no fuss, no risk.

class Animal {
    void makeSound() {
        System.out.println("Some generic animal sound");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Bark");
    }

    void wagTail() {
        System.out.println("Wagging tail");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog(); // Dog instance
        Animal animal = dog; // Up-casting (implicit)

        animal.makeSound(); // Output: Bark (Polymorphism in action)
        // animal.wagTail(); // Error: wagTail() is not visible to Animal reference
    }
}

Понижающее приведение: Явное приведение от суперкласса к подклассу, которое работает только если объект действительно является экземпляром подкласса.
Down-Casting: Like saying “this animal is definitely a dog.” You’d better check before assuming,

```
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // Up-casting
Dog dog = (Dog) animal; // Down-casting (explicit)
dog.makeSound(); // Output: Bark
dog.wagTail(); // Output: Wagging tail
}
}

~~~

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

Wie wird sichergestellt, dass eine Methode in allen Subklassen implementiert wird?

A

Путем объявления его как абстрактного метода в абстрактном классе.

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

Wann macht die Verwendung abstrakter Klassen Sinn?

A

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

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

Was passiert, wenn eine abstrakte Klasse polymorphe Methoden enthält?

A

Эти методы могут быть непосредственно использованы или переопределены подклассами для определения специфического поведения

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

Was ist eine abstrakte Methode und wo wird sie implementiert?

A

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

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

Kann eine abstrakte Klasse „normale” (nicht abstrakte) Methoden enthalten?

A

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

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

Wozu werden abstrakte Methoden benötigt?

A

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

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

Muss eine Subklasse einer abstrakten Klasse alle abstrakten Methoden implementieren?

A

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

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

Warum gibt es in Java keine Mehrfachvererbung?

A

Множественное наследование в Java избегается, чтобы предотвратить неоднозначности, которые могут возникнуть в “diamond-структуре”. Например, водный самолет может наследовать различные методы move() от Корабль и Самолет, что может привести к конфликтам.

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

Was ist ein Interface und wie wird es deklariert?

A

Интерфейс - это полностью абстрактный класс, который не содержит реализаций, а только определяет заголовки методов и константы. Он объявляется с ключевым словом interface:

public interface Spielfigur {
    void zeichne();
    void loesche();
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Welche Vorteile hat die Verwendung von Interfaces gegenüber abstrakten Klassen?

A

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

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

Was passiert, wenn man Methoden in abstrakten Klassen implementiert, die für Subklassen irrelevant sind?

A

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

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

Wie implementiert man ein Interface in einer Klasse?

A

Класс реализует интерфейс с ключевым словом implements и должен переопределить все абстрактные методы интерфейса:

public class Kreis implements Spielfigur {
    @Override
    public void zeichne() {
        // Implementierung
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist eine Schnittstelle in Java, und wie wird sie deklariert?

A

Интерфейс в Java объявляется с помощью ключевого слова interface. Он состоит из:

Констант (автоматически public static final и инициализированных).
Сигнатур методов экземпляра (автоматически public abstract).

public interface Tier {
    int ALTER = 5;

    // Methodensignaturen (ohne Implementierung)
    void fressen();
    void schlafen();
}

public class Hund implements Tier {

    @Override
    public void fressen() {
        System.out.println("Der Hund frisst.");
    }

    @Override
    public void schlafen() {
        System.out.println("Der Hund schläft.");
    }

    public void bellen() {
        System.out.println("Der Hund bellt.");
    }

    public static void main(String[] args) {
        Hund meinHund = new Hund();
        meinHund.fressen();  // Ausgabe: Der Hund frisst.
        meinHund.schlafen(); // Ausgabe: Der Hund schläft.
        meinHund.bellen();   // Ausgabe: Der Hund bellt.
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was bedeutet es, wenn eine Klasse ein Interface implementiert?

A

Класс наследует все константы и абстрактные методы интерфейса и должен их реализовать.

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

Was ist das Ziel von Schnittstellenhierarchien?

A

1. Schnittstellen können von anderen Schnittstellen erben (z. B. public interface S extends S1).
2. Mehrfachvererbung ist bei Schnittstellen erlaubt, bei Klassen jedoch nicht.

22
Q

Was ist ein Beispiel für eine konkrete Schnittstelle und deren Implementierung?

A
public interface Gleichseitig {
    public static final int DREIECKIG = 3;
    public abstract int getSeitenanzahl();
}

public class Quadrat implements Gleichseitig {
    public int getSeitenanzahl() {
        return 4; 
    }
}
23
Q

Wie funktioniert Mehrfachvererbung bei Schnittstellen?

A
public interface S extends S1, S2 {...}
24
Q

Welche Beziehung besteht zwischen Klassen, Schnittstellen und Objekten?

A

1. Ein Objekt kann Typen seiner Klassenhierarchie und aller implementierten Schnittstellen annehmen.
2. Beispiel: Spielfigur spiel = q1; (wobei q1 ein Quadrat ist).

25
Q

Welche Sichtbarkeitsregeln gelten für Konstanten und Methoden in Schnittstellen?

A

Константы в интерфейсах неявно являются public, static и final, и должны быть всегда инициализированы. Вы не можете определять частные или защищенные константы.

Методы в интерфейсах по умолчанию являются public. Начиная с Java 8, они также могут быть default или static, причем все заголовки методов должны быть либо абстрактными, либо полностью реализованными.

26
Q

Почему интерфейсы полезны для параллельных, независимых реализаций в команде разработчиков?

A

Интерфейсы служат контрактом между компонентами системы. Они определяют необходимые методы и их сигнатуры, не предписывая внутреннюю реализацию.

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

27
Q

Warum bleiben Änderungen in einer Methode einer Schnittstelle stabil und beeinflussen andere Klassen nicht?

A

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

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

28
Q

Какие существуют сходства между абстрактными классами и интерфейсами?

A

1. Оба служат для абстракции и могут использоваться как базовый тип для других классов.
2. Они могут содержать методы, которые должны быть переопределены в производных классах.

29
Q

Какие существуют различия между абстрактными классами и интерфейсами?

A

1. Абстрактные классы могут содержать переменные, конструкторы и как абстрактные, так и реализованные методы.
2. Класс может наследовать только один абстрактный класс, но реализовывать несколько интерфейсов.

30
Q

Was ist das Konzept der Mehrfachvererbung in Java, und wie bieten Schnittstellen eine sichere Alternative dazu?

A

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

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

31
Q

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

A

В UML интерфейс представляется прямоугольным символом с именем, написанным курсивом, часто со стереотипом «interface».

32
Q

Was ist der Hauptunterschied zwischen einer abstrakten Klasse und einer Schnittstelle in Bezug auf die Vererbungshierarchie?

A

Абстрактный класс должен быть корнем дерева классов и принуждает все производные классы к отношениям родства. Интерфейсы независимы от иерархии наследования и могут гибко реализовываться там, где они необходимы.

33
Q

Was passiert, wenn eine Klasse sowohl von einer abstrakten Basisklasse erbt als auch Schnittstellen implementiert?

A

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

34
Q

Какая связь существует между объектом и типами классов и интерфейсов, которые он наследует или реализует?

A

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

35
Q

Welche Vorteile bieten Schnittstellen gegenüber abstrakten Klassen in Bezug auf Flexibilität?

A

Интерфейсы не привязаны к иерархии наследования, класс может реализовывать любое их количество, и они позволяют глобально определять константы.

36
Q

Wie unterstützt eine Schnittstelle die Kapselung?

A

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

37
Q

Was ist der Unterschied zwischen Programmieren im Großen und im Kleinen?

A

Программирование в большом масштабе относится к проектированию системы (например, через пакеты), в то время как программирование в малом масштабе включает реализацию отдельных компонентов.

38
Q

Wofür werden Pakete in Java verwendet?

A

Пакеты служат для группировки классов и интерфейсов, обеспечивают защиту доступа и собственное пространство имён для избежания конфликтов имён.

39
Q

Wie definiert man ein Paket in Java?

A

Mit der Anweisung package am Anfang der Datei, z. B. package geometrie;.

40
Q

Welche Zugriffsrechte gelten innerhalb und außerhalb eines Pakets?

A

Innerhalb eines Pakets sind alle Klassen sichtbar, außerhalb nur die als public deklarierten Komponenten.

41
Q

Wie werden Pakete hierarchisch organisiert?

A

Pakete können Unterpakete enthalten, die mit einem Punkt getrennt definiert werden, z. B. package geometrie.rundefigur.

42
Q

Was ist der Zweck des Imports in Java?

A

Команда import используется, чтобы избежать необходимости полностью квалифицированных имён, например, import kreispaket.Kreis;.

43
Q

Was passiert, wenn ein Paket importiert wird? Werden Unterpakete auch importiert?

A

Nein, Unterpakete müssen separat importiert werden, z. B. import paket.unterpaket.;.Nein, Unterpakete müssen separat importiert werden, z. B. import paket.unterpaket.;.

44
Q

Wie kann man gezielt einzelne Klassen oder Schnittstellen importieren?

A

С помощью синтаксиса import paket.Klasse; можно импортировать определённые компоненты пакета.

45
Q

Какие существуют примеры стандартных пакетов Java и что они содержат?

A

java.lang: Классы такие как System (например, System.out.println) и Math.
java.io: Классы для ввода-вывода.
java.net: Классы для сетевых приложений.
java.awt: Классы для графических интерфейсов.

46
Q

Was sind die Konventionen bei der Benennung von Paketen?

A

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

47
Q

Wozu dienen Pakete in Java?

A

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

48
Q

Können Klassen zu mehreren Paketen gehören?

A

Nein, eine Klasse kann nur zu einem Paket gehören.

49
Q

Was kann ein Paket enthalten?

A

Пакет может содержать классы, интерфейсы, перечисления и подпакеты.

50
Q

Какой самый верхний пакет в Java и как он импортируется?

A

Самый верхний пакет в Java - это java.lang. Он импортируется автоматически и содержит часто используемые классы, такие как String и Math.