📖

Informatik Definitionen

Alle wichtigen Begriffe auf einen Blick

🎯

Objektorientierte Programmierung (OOP)

Klasse OOP

Ein Bauplan für Objekte. Definiert Attribute (Eigenschaften) und Methoden (Verhaltensweisen), die alle Objekte dieser Klasse haben werden.

class Auto {
  String farbe;
  void fahren() { ... }
}
Objekt / Instanz OOP

Eine konkrete Ausprägung (Exemplar) einer Klasse. Wird mit new erzeugt und hat eigene Attributwerte.

Auto meinAuto = new Auto();
meinAuto.farbe = "rot";
Attribut OOP

Eine Eigenschaft/Variable innerhalb einer Klasse. Beschreibt den Zustand eines Objekts.

private String name;
private int alter;
Methode OOP

Eine Funktion innerhalb einer Klasse. Definiert das Verhalten eines Objekts und kann auf Attribute zugreifen.

public void setName(String n) {
  this.name = n;
}
Konstruktor OOP

Spezielle Methode, die beim Erstellen eines Objekts automatisch aufgerufen wird. Hat denselben Namen wie die Klasse und keinen Rückgabetyp.

public Auto(String farbe) {
  this.farbe = farbe;
}
Vererbung OOP

Eine Klasse (Unterklasse) übernimmt Attribute und Methoden von einer anderen Klasse (Oberklasse). Ermöglicht Code-Wiederverwendung.

class Elektroauto extends Auto {
  int akkuKapazitaet;
}
Kapselung OOP

Verstecken von Implementierungsdetails. Attribute werden private gesetzt und nur über Getter/Setter-Methoden zugänglich gemacht.

private int kontostand;
public int getKontostand() { return kontostand; }
Polymorphie OOP

"Vielgestaltigkeit" - Objekte verschiedener Klassen können unterschiedlich auf dieselbe Methode reagieren. Ermöglicht durch Überschreiben von Methoden.

// Tier hat methode gibLaut()
hund.gibLaut(); // "Wuff"
katze.gibLaut(); // "Miau"
Abstrakte Klasse OOP

Eine Klasse, von der keine Objekte erzeugt werden können. Dient als Vorlage für Unterklassen und kann abstrakte Methoden enthalten.

abstract class Fahrzeug {
  abstract void fahren();
}
Interface (Schnittstelle) OOP

Ein "Vertrag" der festlegt, welche Methoden eine Klasse implementieren muss. Enthält nur Methodensignaturen, keine Implementierung.

interface Fahrbar {
  void fahren();
  void bremsen();
}
this OOP

Schlüsselwort, das auf das aktuelle Objekt verweist. Wird verwendet um zwischen Attributen und Parametern mit gleichem Namen zu unterscheiden.

public void setName(String name) {
  this.name = name; // this.name = Attribut
}
super OOP

Schlüsselwort für den Zugriff auf die Oberklasse. Kann Konstruktor oder Methoden der Oberklasse aufrufen.

super(); // Konstruktor der Oberklasse
super.methode(); // Methode der Oberklasse
📐

UML (Unified Modeling Language)

UML UML

Unified Modeling Language - Standardisierte grafische Sprache zur Modellierung von Software-Systemen. Unabhängig von Programmiersprachen.

Diagrammtypen: Klassendiagramm, Sequenzdiagramm, Aktivitätsdiagramm, Use-Case-Diagramm
Assoziation UML

Eine allgemeine Beziehung zwischen zwei Klassen. Zeigt, dass Objekte der Klassen miteinander in Verbindung stehen.

Student ————— Kurs
(Student besucht Kurs)
Multiplizität / Kardinalität UML

Gibt an, wie viele Objekte einer Klasse mit Objekten einer anderen Klasse in Beziehung stehen können.

1 = genau eins
0..1 = null oder eins
* = beliebig viele (0 bis unendlich)
1..* = mindestens eins
Aggregation UML

"Hat-ein" Beziehung mit loser Kopplung. Das Teil kann ohne das Ganze existieren. Dargestellt durch leere Raute (◇).

Bibliothek ◇———— Buch
(Bücher existieren auch ohne Bibliothek)
Komposition UML

"Besteht-aus" Beziehung mit starker Kopplung. Das Teil kann NICHT ohne das Ganze existieren. Dargestellt durch gefüllte Raute (◆).

Haus ◆———— Raum
(Räume existieren nur im Haus)
Generalisierung (UML) UML

Die UML-Darstellung von Vererbung. Ein leerer Pfeil zeigt von der Unterklasse zur Oberklasse.

    Fahrzeug
       △
       |
Auto ——— Motorrad
Sequenzdiagramm UML

Zeigt den zeitlichen Ablauf von Nachrichten/Methodenaufrufen zwischen Objekten. Zeit verläuft von oben nach unten.

Kunde → ATM: pinEingeben()
ATM → Bank: pruefePIN()
Bank ---> ATM: pinOK
Aktivitätsdiagramm UML

Zeigt den Ablauf von Aktivitäten in einem Prozess. Ähnlich wie ein Flussdiagramm mit Start, Ende, Entscheidungen und Parallelität.

● → [Wasser kochen] → ◇ Entscheidung
◇ → [Tee aufgießen] → ◉
Use-Case-Diagramm UML

Zeigt Anwendungsfälle aus Sicht der Benutzer (Akteure). Beschreibt WAS ein System tut, nicht WIE.

🧑 Kunde → (Produkt kaufen)
🧑‍💼 Admin → (Produkt verwalten)
Sichtbarkeit (UML-Notation) UML

Symbole in UML-Klassendiagrammen für Zugriffsmodifikatoren.

+ public (überall sichtbar)
- private (nur in eigener Klasse)
# protected (Klasse + Unterklassen)
~ package (im selben Paket)
🔣

Aussagenlogik

Konjunktion (UND) Logik

Logisches UND. Ergebnis ist nur wahr, wenn beide Aussagen wahr sind.

Symbol: ∧ oder &&
A ∧ B = true nur wenn A=true UND B=true
1 ∧ 1 = 1, sonst 0
Disjunktion (ODER) Logik

Logisches ODER. Ergebnis ist wahr, wenn mindestens eine Aussage wahr ist.

Symbol: ∨ oder ||
A ∨ B = true wenn A=true ODER B=true
0 ∨ 0 = 0, sonst 1
Negation (NICHT) Logik

Logisches NICHT. Kehrt den Wahrheitswert um.

Symbol: ¬ oder !
¬A = true wenn A=false
¬1 = 0, ¬0 = 1
Implikation (WENN-DANN) Logik

Logische Folgerung. "Wenn A, dann B". Nur falsch wenn A wahr und B falsch ist.

Symbol: → oder ⇒
A → B = false nur wenn A=true und B=false
"Wenn es regnet → Straße nass"
Äquivalenz (GENAU DANN) Logik

Logische Gleichwertigkeit. Wahr, wenn beide Aussagen denselben Wahrheitswert haben.

Symbol: ↔ oder ⇔
A ↔ B = true wenn (A=B)
1 ↔ 1 = 1, 0 ↔ 0 = 1, sonst 0
XOR (Exklusiv-ODER) Logik

Entweder-oder. Wahr, wenn genau eine der beiden Aussagen wahr ist (nicht beide).

Symbol: ⊕ oder ^
A ⊕ B = true wenn A ≠ B
1 ⊕ 0 = 1, 0 ⊕ 1 = 1, sonst 0
NAND (NICHT-UND) Logik

Negiertes UND. Ergebnis ist falsch, nur wenn beide Aussagen wahr sind.

A NAND B = ¬(A ∧ B)
1 NAND 1 = 0, sonst 1
(Universelles Gatter!)
NOR (NICHT-ODER) Logik

Negiertes ODER. Ergebnis ist nur wahr, wenn beide Aussagen falsch sind.

A NOR B = ¬(A ∨ B)
0 NOR 0 = 1, sonst 0
Logik-Gatter (Schaltzeichen) Logik

Elektronische Schaltungen für logische Operationen. Symbole: & = AND, ≥1 = OR, =1 = XOR, = Negation am Ausgang.

NOT: [1]○─ (negiert)
AND: [&]─ (beide 1)
OR: [≥1]─ (mind. einer 1)
NAND: [&]○─ (negiertes AND)
Wahrheitstabelle Logik

Tabelle die alle möglichen Eingabekombinationen und deren Ergebnisse für einen logischen Ausdruck zeigt.

A | B | A∧B
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
De Morgan'sche Gesetze Logik

Regeln zur Umformung von negierten UND/ODER-Ausdrücken.

¬(A ∧ B) = ¬A ∨ ¬B
¬(A ∨ B) = ¬A ∧ ¬B
"Negation dreht ∧ und ∨ um"
DNF (Disjunktive Normalform) Logik

ODER-Verknüpfung von UND-Termen (Mintermen). Jeder Minterm enthält jede Variable genau einmal (normal oder negiert).

(A ∧ B ∧ C) ∨ (A ∧ ¬B ∧ C) ∨ (¬A ∧ B ∧ C)
Ablesen: Zeilen mit Y=1 in Wahrheitstabelle
"ODER von UND-Termen"
KNF (Konjunktive Normalform) Logik

UND-Verknüpfung von ODER-Termen (Maxtermen). Jeder Maxterm enthält jede Variable genau einmal (normal oder negiert).

(A ∨ B ∨ C) ∧ (A ∨ ¬B ∨ C) ∧ (¬A ∨ B ∨ C)
Ablesen: Zeilen mit Y=0, Variablen negieren!
"UND von ODER-Termen"
Minterm (Produktterm) Logik

UND-Verknüpfung aller Variablen. Variable normal wenn 1, negiert wenn 0. Liefert nur für eine Kombination den Wert 1.

A=1, B=0, C=1 → Minterm: A ∧ ¬B ∧ C
Für DNF: Minterme aller Y=1 Zeilen ODER-verknüpfen
Maxterm (Summenterm) Logik

ODER-Verknüpfung aller Variablen. Variable negiert wenn 1, normal wenn 0! Liefert nur für eine Kombination den Wert 0.

A=1, B=0, C=1 → Maxterm: ¬A ∨ B ∨ ¬C
Für KNF: Maxterme aller Y=0 Zeilen UND-verknüpfen
KV-Diagramm Logik

Karnaugh-Veitch-Diagramm zur Minimierung von Booleschen Funktionen. Benachbarte Felder unterscheiden sich nur in einer Variable.

Gruppen: 2ⁿ Einsen (1, 2, 4, 8...)
Aus DNF → minimierte Form
Aus KNF → minimierte Form
🔢

Zahlensysteme

Binärsystem (Dualsystem) Zahlen

Zahlensystem zur Basis 2. Verwendet nur die Ziffern 0 und 1. Grundlage der digitalen Datenverarbeitung.

1011₂ = 1×8 + 0×4 + 1×2 + 1×1 = 11₁₀
Stellenwerte: 8, 4, 2, 1 (2³, 2², 2¹, 2⁰)
Dezimalsystem Zahlen

Das alltägliche Zahlensystem zur Basis 10. Verwendet Ziffern 0-9.

253₁₀ = 2×100 + 5×10 + 3×1
Stellenwerte: 100, 10, 1 (10², 10¹, 10⁰)
Hexadezimalsystem Zahlen

Zahlensystem zur Basis 16. Verwendet 0-9 und A-F (A=10, B=11, ..., F=15). Kompakte Darstellung von Binärzahlen.

2F₁₆ = 2×16 + 15×1 = 47₁₀
A=10, B=11, C=12, D=13, E=14, F=15
Oktalsystem Zahlen

Zahlensystem zur Basis 8. Verwendet Ziffern 0-7.

37₈ = 3×8 + 7×1 = 31₁₀
Stellenwerte: 64, 8, 1 (8², 8¹, 8⁰)
Zweierkomplement Zahlen

Methode zur Darstellung negativer Zahlen im Binärsystem. Das höchstwertige Bit (MSB) gibt das Vorzeichen an.

Für -5 (4 Bit):
1. +5 = 0101
2. Invertieren: 1010
3. +1 addieren: 1011 = -5
Bit Zahlen

Binary Digit - Kleinste Informationseinheit. Kann nur zwei Zustände haben: 0 oder 1.

8 Bit = 1 Byte
1 Bit: 2 Werte (0, 1)
8 Bit: 256 Werte (0-255)
Byte Zahlen

Eine Gruppe von 8 Bits. Standard-Einheit für Datenspeicherung.

1 Byte = 8 Bit = 256 mögliche Werte
1 KB = 1024 Byte
1 MB = 1024 KB
MSB (Most Significant Bit) Zahlen

Das höchstwertige Bit - ganz links. Bei vorzeichenbehafteten Zahlen das Vorzeichen-Bit.

1011₂ → MSB = 1 (links)
Bei signed: 1 = negativ, 0 = positiv
LSB (Least Significant Bit) Zahlen

Das niedrigstwertige Bit - ganz rechts. Hat den Stellenwert 2⁰ = 1.

1011₂ → LSB = 1 (rechts)
Bestimmt ob Zahl gerade (0) oder ungerade (1)
Überlauf (Overflow) Zahlen

Tritt auf wenn das Ergebnis einer Berechnung größer ist als darstellbar. Das Ergebnis "wickelt sich um".

Bei 4 Bit unsigned (max 15):
1111 + 0001 = 10000 → 0000 (Überlauf!)
15 + 1 = 0 (statt 16)

Java Grundlagen

Variable Java

Ein benannter Speicherplatz für Daten. Hat einen Datentyp, Namen und Wert.

int alter = 17;
String name = "Max";
boolean istStudent = true;
Primitive Datentypen Java

Die grundlegenden Datentypen in Java. Speichern einfache Werte direkt.

int (Ganzzahl): -2³¹ bis 2³¹-1
double (Dezimal): 1.5, 3.14
boolean: true/false
char: 'A', 'B'
String Java

Zeichenkette - eine Folge von Zeichen. In Java ein Objekt (kein primitiver Typ). Wird mit Anführungszeichen definiert.

String text = "Hallo Welt";
text.length() // 10
text.charAt(0) // 'H'
Array Java

Eine geordnete Sammlung von Elementen gleichen Typs. Feste Größe nach Erstellung. Index beginnt bei 0.

int[] zahlen = {1, 2, 3, 4, 5};
zahlen[0] // 1 (erstes Element)
zahlen.length // 5
Schleife (Loop) Java

Kontrollstruktur zur Wiederholung von Anweisungen. Arten: for, while, do-while.

for (int i = 0; i < 5; i++) {
  System.out.println(i);
}
Bedingte Anweisung (if-else) Java

Verzweigung im Programmablauf basierend auf einer Bedingung.

if (alter >= 18) {
  System.out.println("Erwachsen");
} else {
  System.out.println("Minderjährig");
}
return Java

Schlüsselwort das eine Methode beendet und einen Wert zurückgibt. Der Typ muss zum Rückgabetyp der Methode passen.

public int verdoppeln(int x) {
  return x * 2;
}
void Java

Kennzeichnet eine Methode die keinen Wert zurückgibt.

public void grüßen() {
  System.out.println("Hallo!");
  // kein return nötig
}
static Java

Kennzeichnet Attribute/Methoden die zur Klasse gehören, nicht zu einzelnen Objekten. Können ohne Objekt aufgerufen werden.

public static void main(String[] args)
Math.sqrt(16) // statische Methode
Klasse.methode() // ohne new
null Java

Spezieller Wert der anzeigt, dass eine Referenzvariable auf kein Objekt verweist.

String text = null; // zeigt auf nichts
if (text != null) {
  text.length(); // sicher
}
📚

Allgemeine Begriffe

Algorithmus Allgemein

Eine eindeutige Handlungsvorschrift zur Lösung eines Problems. Besteht aus endlich vielen, wohldefinierten Einzelschritten.

Eigenschaften: endlich, eindeutig,
ausführbar, terminierend
Beispiel: Sortieralgorithmen, Suchverfahren
Compiler Allgemein

Ein Programm das Quellcode in Maschinencode übersetzt. Bei Java: Übersetzung in Bytecode.

Programm.java → javac → Programm.class
(Quellcode → Compiler → Bytecode)
IDE Allgemein

Integrated Development Environment - Software die Programmierer beim Entwickeln unterstützt mit Editor, Compiler, Debugger.

Beispiele: Eclipse, IntelliJ IDEA,
Visual Studio Code, BlueJ
Syntax Allgemein

Die Grammatik/Regeln einer Programmiersprache. Bestimmt wie Code geschrieben werden muss.

Syntaxfehler: fehlendes Semikolon,
falsche Klammern, Tippfehler
int x = 5 // Fehler: ; fehlt
Semantik Allgemein

Die Bedeutung von Code. Syntaktisch korrekter Code kann semantisch falsch sein.

Semantikfehler: Division durch 0,
falsche Logik, falsches Ergebnis
// Syntax OK, aber logisch falsch
Debugging Allgemein

Der Prozess des Findens und Behebens von Fehlern (Bugs) in einem Programm.

Methoden: Breakpoints setzen,
Variablen inspizieren,
Schritt-für-Schritt ausführen
Rekursion Allgemein

Eine Methode/Funktion die sich selbst aufruft. Benötigt Abbruchbedingung um nicht endlos zu laufen.

int fakultaet(int n) {
  if (n <= 1) return 1; // Abbruch
  return n * fakultaet(n-1);
}
Parameter / Argument Allgemein

Parameter: Variable in der Methodendefinition.
Argument: Konkreter Wert beim Aufruf.

void grüßen(String name) // Parameter
grüßen("Max"); // "Max" ist Argument