Sem I (Program I) - N7 Flashcards

1
Q

Brauchen die elementaren Sortierverfahren genauso viele Schritte, wenn sie ein bereits sortiertes Array als Eingabeparameter bekommen?

A

Besser: Bubble Sort, Insertion Sort , Quick Sort

Gleich: Selection Sort, Merge Sort

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

Kann ein Objekt auf Datenfelder eines anderen Objektes direkt zugreifen?

A

In Java können Objekte grundsätzlich nicht direkt auf die Datenfelder (Instanzvariablen) anderer Objekte zugreifen, es sei denn, diese Felder sind öffentlich (public) oder es gibt entsprechende Zugriffsmethoden (getter und setter). Das Prinzip der Kapselung (Encapsulation) in der objektorientierten Programmierung besagt, dass die inneren Details eines Objekts vor direktem Zugriff von außen geschützt werden sollten.

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

Sind alle Methoden eines Objektes seine Schnittstellen?

A

Eine Schnittstelle in Java definiert eine Sammlung von Methoden, die von Klassen implementiert werden können. Eine Klasse kann mehrere Schnittstellen implementieren, was bedeutet, dass sie alle Methoden der Schnittstelle(en) implementieren muss.

In Java ist nicht jede Methode eines Objektes automatisch eine Schnittstelle

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

Kann eine ganze Klasse private sein?

A

Nein

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

Ist die Implementierung einer public-Methode einer Klasse nach außen (d.h. für andere Klassen) sichtbar?

A

In Java ist die Implementierung einer public-Methode einer Klasse nach außen nicht sichtbar. Was nach außen sichtbar ist, sind die Signaturen der Methoden, also die Deklaration der Methode mit ihrem Rückgabetyp, ihrem Namen und ihren Parametern.

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

Was ist Kapselung?

A

Verbergen der internen Zustände und Implementierungsdetails eines Objekts und das Bereitstellen einer klar definierten Schnittstelle für den Zugriff und die Manipulation dieser Zustände.

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

Was sind die Vorteile von Information Hiding?

A

Bekannt als Informationsverbergen, ist ein Konzept in der Softwareentwicklung, bei dem bestimmte Details einer Implementierung vor den Benutzern der Klasse oder des Moduls verborgen werden. Dies bedeutet, dass nur notwendige Informationen und Funktionalitäten nach außen offengelegt werden

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

compareTo(String anotherString)

A

Verwendet, um zwei Zeichenfolgen lexikographisch zu vergleichen.

Ein negativer Wert bedeutet, dass der erste String lexikographisch vor dem zweiten kommt.
Null bedeutet, dass die beiden Strings gleich sind.
Ein positiver Wert bedeutet, dass der erste String lexikographisch nach dem zweiten kommt.

public class CompareToExample {
    public static void main(String[] args) {
        String str1 = "apple";
        String str2 = "banana";
        String str3 = "apple";
        String str4 = "Apple";

        // str1 < str2
        System.out.println(str1.compareTo(str2)); // Gibt einen negativen Wert zurück

        // str1 == str3
        System.out.println(str1.compareTo(str3)); // Gibt 0 zurück

        // str2 > str1
        System.out.println(str2.compareTo(str1)); // Gibt einen positiven Wert zurück

        // Berücksichtigung der Groß- und Kleinschreibung
        System.out.println(str1.compareTo(str4)); // Gibt einen positiven Wert zurück
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Zwei Zeichenfolgen lexikographisch zu vergleichen (JAVA)

A

compareTo(String anotherString)

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

substring(int beginIndex, int endIndex)

A

Verwendet, um einen Teilstring aus einem vorhandenen String zu extrahieren.

public class SubstringExample {
    public static void main(String[] args) {
        String str = "Hello, world!";

        // Extrahieren der Teilstrings
        String subStr1 = str.substring(0, 5);  // "Hello"
        String subStr2 = str.substring(7, 12); // "world"
        String subStr3 = str.substring(7);     // "world!"

        System.out.println(subStr1); // Ausgabe: Hello
        System.out.println(subStr2); // Ausgabe: world
        System.out.println(subStr3); // Ausgabe: world!
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Teilstring aus einem vorhandenen String zu extrahieren (JAVA).

A

substring(int beginIndex, int endIndex)

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

toLowerCase()

A

Verwendet, um alle Zeichen in einem String in Kleinbuchstaben umzuwandeln.

public class ToLowerCaseExample {
    public static void main(String[] args) {
        String str1 = "Hello, World!";
        String str2 = "JAVA PROGRAMMING";
        String str3 = "1234 ABCD!";

        // Konvertieren in Kleinbuchstaben
        String lowerStr1 = str1.toLowerCase();
        String lowerStr2 = str2.toLowerCase();
        String lowerStr3 = str3.toLowerCase();

        System.out.println(lowerStr1); // Ausgabe: hello, world!
        System.out.println(lowerStr2); // Ausgabe: java programming
        System.out.println(lowerStr3); // Ausgabe: 1234 abcd!
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Alle Zeichen in einem String in Kleinbuchstaben umzuwandeln. (JAVA)

A

toLowerCase()

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

toUpperCase()

A

Verwendet, um alle Zeichen in einem String in Großbuchstaben umzuwandeln.

public class ToUpperCaseExample {
    public static void main(String[] args) {
        String str1 = "Hello, World!";
        String str2 = "java programming";
        String str3 = "1234 abcd!";

        // Konvertieren in Großbuchstaben
        String upperStr1 = str1.toUpperCase();
        String upperStr2 = str2.toUpperCase();
        String upperStr3 = str3.toUpperCase();

        System.out.println(upperStr1); // Ausgabe: HELLO, WORLD!
        System.out.println(upperStr2); // Ausgabe: JAVA PROGRAMMING
        System.out.println(upperStr3); // Ausgabe: 1234 ABCD!
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Alle Zeichen in einem String in Großbuchstaben umzuwandeln. (JAVA)

A

toUpperCase()

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

trim()

A

Verwendet, um alle führenden und nachfolgenden Leerzeichen eines Strings zu entfernen. Sie gibt einen neuen String zurück, der keine Leerzeichen am Anfang und am Ende enthält, jedoch bleiben die Leerzeichen innerhalb des Strings unverändert.

public class TrimExample {
    public static void main(String[] args) {
        String str1 = "   Hello, World!   ";
        String str2 = "Java programming   ";
        String str3 = "   1234 abcd!";

        // Leerzeichen am Anfang und Ende entfernen
        String trimmedStr1 = str1.trim();
        String trimmedStr2 = str2.trim();
        String trimmedStr3 = str3.trim();

        System.out.println("Original: '" + str1 + "'");  // Ausgabe: '   Hello, World!   '
        System.out.println("Getrimmt: '" + trimmedStr1 + "'"); // Ausgabe: 'Hello, World!'

        System.out.println("Original: '" + str2 + "'");  // Ausgabe: 'Java programming   '
        System.out.println("Getrimmt: '" + trimmedStr2 + "'"); // Ausgabe: 'Java programming'

        System.out.println("Original: '" + str3 + "'");  // Ausgabe: '   1234 abcd!'
        System.out.println("Getrimmt: '" + trimmedStr3 + "'"); // Ausgabe: '1234 abcd!'
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Alle führenden und nachfolgenden Leerzeichen eines Strings zu entfernen. (JAVA)

A

trim()

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

toString()

A

Verwendeten Methoden, um eine String-Darstellung eines Objekts zu liefern

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(numbers)); // Ausgabe: [1, 2, 3, 4, 5]

        String[] names = {"Alice", "Bob", "Charlie"};
        System.out.println(Arrays.toString(names)); // Ausgabe: [Alice, Bob, Charlie]
    }
}
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }

    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println(person.toString()); // Ausgabe: Person{name='Alice', age=30}
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Methoden, um eine String-Darstellung eines Objekts zu liefern. (JAVA)

A

toString()

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

The value of the expression 0.0 / 0.0? (Java)

A

NaN

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

A class declares a String s variable but has not yet assigned a value to it, Datatype? (JAVA)

A

null

22
Q

If a class doesn’t inherit another class then it inherits from?

A

Object

23
Q

Wann ist der Einsatz eines Debuggers sinnvoll?

A

Ein Debugger wird eingesetzt, wenn man verstehen will, warum eine Software nicht korrekt funktioniert und wo genau der Fehler im Programm liegt. Dies ist besonders nützlich, wenn Tests Fehler aufdecken, deren Ursache aber nicht sofort ersichtlich ist.

24
Q

Welche grundlegenden Funktionen bietet ein Debugger?

A

das Programm anhalten (Breakpoints setzen),
die Belegung von Variablen anzeigen und verändern,
die Programmausführung fortsetzen (in verschiedenen Modi).

25
Q

Was is den Debugging-Aktionen “Step Into”?

A

Tritt in eine Methode ein und hält die Ausführung in der ersten Zeile an.

26
Q

Was is den Debugging-Aktionen “Step Over”?

A

Führt die aktuelle Programmzeile aus, überspringt aber den Methodencode, falls ein Methodenaufruf enthalten ist.

27
Q

Was is den Debugging-Aktionen “Step Return”?

A

Führt die aktuelle Methode bis zum Ende aus und kehrt danach zur aufrufenden Stelle zurück.

28
Q

Welche Optionen gibt es nach dem Debuggen?

A

Nach dem Debuggen kehrt man in die normale Programm-Ansicht zurück und löscht ggf. gesetzte Breakpoints, wenn diese nicht mehr benötigt werden.

29
Q

Was versteht man unter “Run to Line”?

A

Run to Line” bedeutet, dass das Programm bis zu der Zeile ausgeführt wird, in der sich der Cursor befindet, und dort anhält.

30
Q

Was is Teste Debuggen?

A

Beim Debuggen hingegen versucht man zu verstehen, warum die Software nicht korrekt ist und wo genau der Fehler liegt, um ihn zu beheben.

31
Q

Was ist Testen?

A

Beim Testen wird geprüft, ob die Software korrekt funktioniert, indem man Tests ausführt, um Fehler zu finden

32
Q

Was passiert, wenn man die “Terminate”-Funktion im Debugger verwendet?

A

Die “Terminate”-Funktion beendet die Ausführung des Programms sofort, unabhängig davon, wo es sich aktuell im Code befindet.

33
Q

Welche Schritte sollte man nach dem Debuggen unternehmen, um den Code weiterzuentwickeln?

A

Nach dem Debuggen sollte man zur regulären Programm-Ansicht zurückkehren und gegebenenfalls alle gesetzten Breakpoints löschen, die nicht mehr benötigt werden, um die Ausführung nicht unnötig zu unterbrechen.

34
Q

Warum ist das Setzen von Breakpoints eine hilfreiche Technik beim Debuggen?

A

Breakpoints ermöglichen es, das Programm an bestimmten Stellen anzuhalten, um den aktuellen Zustand des Programms zu untersuchen, insbesondere die Werte von Variablen und die Programmflusssteuerung. Dies hilft dabei, Fehlerquellen gezielt zu identifizieren.

35
Q

Was bedeutet die Aussage „Program testing can be used to show the presence of bugs, but never show their absence“?

A

Diese Aussage bedeutet, dass das Testen von Software Fehler aufdecken kann, aber niemals die vollständige Fehlerfreiheit der Software garantieren kann.

36
Q

Was sind die verschiedenen Phasen im Software-Entwicklungsprozess?

A

Anforderungsanalyse, Design, Implementierung, Integration und Test sowie.

37
Q

Was ist ein Komponententest (Unit Test)?

A

Ein Komponententest testet eine kleine, klar umrissene Funktionalität eines Programms, meist eine Methode. Er wird vom Entwickler durchgeführt und prüft, ob die Methode korrekt funktioniert.

38
Q

Nenne ein Beispiel für einen Komponententest.

A

Gibt es Vorbedingungen, die erfüllt sein müssen?
Welche Eingabewerte sind erforderlich?
Was ist das Testszenario?
Welche Ausgabewerte werden erwartet?

39
Q

Was ist manuelle Test?

A

Manuelle Tests werden vom Programmierer ausgeführt und ausgewertet, typischerweise durch das Verwenden von Ausgaben im Code

40
Q

Was ist automatisierte Test?

A

Automatisierte Tests werden hingegen durch ein Testwerkzeug ausgeführt und ausgewertet, was eine effizientere und weniger fehleranfällige Testdurchführung ermöglicht.

41
Q

Welche Anforderungen sollte ein Testframework erfüllen?

A

Testspezifikation sollte in der Programmiersprache erfolgen.
Trennung von Anwendungs- und Testcode.
Unabhängige Ausführung einzelner Testfälle.
Sammlung zusammengehöriger Testfälle in einer Testsuite.
Klar ersichtliche Reports über Testergebnisse.

42
Q

Was ist JUnit und warum ist es populär?

A

JUnit ist ein Testframework für Java. Es ist ein Quasistandard für Java-Entwicklertests, da es Open-Source ist und in Entwicklungsumgebungen wie Eclipse, NetBeans und IntelliJ integriert ist.

43
Q

Was sind die Grenzen der Prüfbarkeit von Software?

A

Die Grenzen der Prüfbarkeit liegen darin, dass es praktisch unmöglich ist, alle möglichen Eingabewerte in allen Kombinationen zu testen. Aufgrund begrenzter Ressourcen (wie Zeit und Speicher) kann durch Tests niemals vollständige Fehlerfreiheit nachgewiesen werden.

44
Q

Wann sind die Kosten zur Behebung von Software-Fehlern am höchsten?

A

Die Kosten zur Behebung von Software-Fehlern sind am höchsten, wenn die Fehler erst in späteren Phasen des Software-Lebenszyklus entdeckt werden, insbesondere während des Betriebs.

45
Q

Was ist Systemdesign im Software-Entwicklungsprozess?

A

Системное проектирование — это черновой проект программного обеспечения, в котором определяется базовая архитектура.

46
Q

Was ist Komponentendesign im Software-Entwicklungsprozess?

A

Проектирование компонентов — это детализированный проект, в котором подробно описываются отдельные компоненты и их взаимодействия.

47
Q

Was ist eine Testsuite und warum ist sie nützlich?

A

Eine Testsuite ist eine Sammlung von zusammengehörigen Testfällen, die gemeinsam behandelt und typischerweise automatisch ausgeführt werden. Sie ermöglicht eine strukturierte und umfassende Testabdeckung sowie eine effiziente Auswertung der Testergebnisse.

48
Q

Welche Vorteile bietet die Verwendung eines Automatisierungstest-Frameworks?

A

Automatisierungstest-Frameworks ermöglichen die unabhängige Ausführung von Tests, Trennung von Anwendungscode und Testcode, sowie die schnelle Auswertung und Berichterstattung über den Erfolg oder Misserfolg von Tests. Dies führt zu einer effizienteren Testdurchführung und schnelleren Fehlererkennung.

49
Q

Was sind typische Bestandteile eines Unit Tests in der Praxis?

A

Vorbedingungen (z.B. Initialisierung von Datenstrukturen).
Eingabewerte für die zu testende Funktionalität.
Ein Testablauf, der die Funktion aufruft.
Die erwarteten Ausgabewerte, gegen die das Testergebnis verglichen wird.

50
Q

Warum ist die Reihenfolge der Testausführung in einem Testframework nicht entscheidend?

A

In einem gut strukturierten Testframework sollten Tests unabhängig voneinander ausführbar sein, sodass ein Test keine Auswirkungen auf andere Tests hat. Dadurch kann die Reihenfolge beliebig sein, was eine flexible Testausführung ermöglicht.