Sem II (Program I) - N6 Flashcards

(50 cards)

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
**Welche Sichtbarkeitsregeln gelten für Konstanten und Methoden in Schnittstellen?**
**Константы** в интерфейсах неявно являются **public, static и final, и должны быть всегда инициализированы**. Вы не можете определять частные или защищенные константы. **Методы** в интерфейсах по умолчанию являются **public**. Начиная с Java 8, они также **могут быть default или static**, причем все заголовки методов должны быть либо абстрактными, либо полностью реализованными.
26
**Почему интерфейсы полезны для параллельных, независимых реализаций в команде разработчиков?**
Интерфейсы **служат контрактом между компонентами системы.** Они **определяют необходимые методы и их сигнатуры, не предписывая внутреннюю реализацию.** Это **позволяет командам одновременно работать над различными классами или модулями**, реализующими один и тот же интерфейс, не создавая взаимных зависимостей.
27
**Warum bleiben Änderungen in einer Methode einer Schnittstelle stabil und beeinflussen andere Klassen nicht?**
**Интерфейс определяет только сигнатуру (заголовок метода), но не реализацию метода.** Изменения в теле метода в реализующем классе **не влияют** на другие классы, так как они **продолжают работать с неизменной сигнатурой.**
28
**Какие существуют сходства между абстрактными классами и интерфейсами?**
**1.** Оба служат для абстракции и могут использоваться как базовый тип для других классов. **2.** Они могут содержать методы, которые должны быть переопределены в производных классах.
29
**Какие существуют различия между абстрактными классами и интерфейсами?**
**1.** Абстрактные классы могут содержать переменные, конструкторы и как абстрактные, так и реализованные методы. **2.** Класс может наследовать только один абстрактный класс, но реализовывать несколько интерфейсов.
30
**Was ist das Konzept der Mehrfachvererbung in Java, und wie bieten Schnittstellen eine sichere Alternative dazu?**
**Множественное наследование позволяет классу наследоваться от нескольких базовых классов, что может привести к конфликтам, например, из-за одинаковых имен методов (проблема ромба).** **Интерфейсы** в Java предоставляют **безопасную альтернативу,** так как: **---** Класс может реализовывать несколько интерфейсов без конфликтов в реализации методов. **---** Интерфейсы не определяют состояния (переменные экземпляра), которые могли бы привести к конфликтам.
31
**Как визуализируется интерфейс в UML, и какие компоненты при этом учитываются?**
В UML интерфейс представляется прямоугольным символом с именем, написанным курсивом, часто со стереотипом <>.
32
**Was ist der Hauptunterschied zwischen einer abstrakten Klasse und einer Schnittstelle in Bezug auf die Vererbungshierarchie?**
**Абстрактный класс должен быть корнем дерева классов и принуждает все производные классы к отношениям родства. Интерфейсы независимы от иерархии наследования и могут гибко реализовываться там, где они необходимы.**
33
**Was passiert, wenn eine Klasse sowohl von einer abstrakten Basisklasse erbt als auch Schnittstellen implementiert?**
**Класс может перенимать свойства и методы базового класса и получать дополнительную функциональность через реализуемые интерфейсы.**
34
**Какая связь существует между объектом и типами классов и интерфейсов, которые он наследует или реализует?**
**Объект всегда является также типом всех классов и интерфейсов, от которых он наследуется или которые реализует.**
35
**Welche Vorteile bieten Schnittstellen gegenüber abstrakten Klassen in Bezug auf Flexibilität?**
**Интерфейсы не привязаны к иерархии наследования, класс может реализовывать любое их количество, и они позволяют глобально определять константы.**
36
**Wie unterstützt eine Schnittstelle die Kapselung?**
**Вызывающей стороне нужно знать только интерфейс класса, чтобы использовать его функциональность. Реализация остается скрытой.**
37
**Was ist der Unterschied zwischen Programmieren im Großen und im Kleinen?**
**Программирование в большом масштабе относится к проектированию системы (например, через пакеты), в то время как программирование в малом масштабе включает реализацию отдельных компонентов.**
38
**Wofür werden Pakete in Java verwendet?**
**Пакеты служат для группировки классов и интерфейсов, обеспечивают защиту доступа и собственное пространство имён для избежания конфликтов имён.**
39
**Wie definiert man ein Paket in Java?**
**Mit der Anweisung package am Anfang der Datei, z. B. package geometrie;.**
40
**Welche Zugriffsrechte gelten innerhalb und außerhalb eines Pakets?**
**Innerhalb eines Pakets sind alle Klassen sichtbar, außerhalb nur die als public deklarierten Komponenten.**
41
**Wie werden Pakete hierarchisch organisiert?**
**Pakete können Unterpakete enthalten, die mit einem Punkt getrennt definiert werden, z. B. package geometrie.rundefigur.**
42
**Was ist der Zweck des Imports in Java?**
**Команда import используется, чтобы избежать необходимости полностью квалифицированных имён, например, import kreispaket.Kreis;.**
43
**Was passiert, wenn ein Paket importiert wird? Werden Unterpakete auch importiert?**
**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
**Wie kann man gezielt einzelne Klassen oder Schnittstellen importieren?**
**С помощью синтаксиса import paket.Klasse; можно импортировать определённые компоненты пакета.**
45
**Какие существуют примеры стандартных пакетов Java и что они содержат?**
**java.lang:** Классы такие как System (например, System.out.println) и Math. **java.io:** Классы для ввода-вывода. **java.net:** Классы для сетевых приложений. **java.awt:** Классы для графических интерфейсов.
46
**Was sind die Konventionen bei der Benennung von Paketen?**
**Имена пакетов должны писаться в нижнем регистре и отражать структуру проекта.**
47
**Wozu dienen Pakete in Java?**
**Пакеты служат для организации классов и интерфейсов, чтобы избежать конфликтов имен и улучшить читаемость кода.**
48
**Können Klassen zu mehreren Paketen gehören?**
**Nein, eine Klasse kann nur zu einem Paket gehören.**
49
**Was kann ein Paket enthalten?**
**Пакет может содержать классы, интерфейсы, перечисления и подпакеты.**
50
**Какой самый верхний пакет в Java и как он импортируется?**
**Самый верхний пакет в Java - это java.lang. Он импортируется автоматически и содержит часто используемые классы, такие как String и Math.**