1. Überschreibung von Methoden
2. Dynamische Datenstrukturen
2.1. Bäume
2.1.1. BinaryTree
2.1.1.1. AKA Binärbaum
2.1.1.2. Hat immer exakt zwei Zweige
2.1.1.2.1. Es ist ein Knoten wenn zwei von den Zweigen voll sind
2.1.1.2.2. Es ist ein Halbblatt wenn nur einer der Zweige belegt ist
2.1.1.2.3. Es ist ein Blatt wenn beide Zweige leer sind
2.1.1.3. Beherbergt Elemente vom Typ ContentType (Seit Abi2017)
2.1.1.4. Wenn man ein bestimmtes Objekt sucht muss man den Binärbaum traversieren, da kein Index o.ä. vorhanden ist
2.1.1.5. Der Ursprungsbinärbaum wird Wurzel genannt
2.1.1.6. Dokumentation irgendwo hier: "https://www.standardsicherung.schulministerium.nrw.de/cms/zentralabitur-wbk/faecher/getfile.php?file=2149"
2.1.1.7. Methoden
2.1.1.7.1. getLeftTree()
2.1.1.7.2. getRightTree()
2.1.1.7.3. Hat zwei Konstruktoren
2.1.1.7.4. setLeftTree()
2.1.1.7.5. setRightTree()
2.1.1.7.6. getContent()
2.1.1.7.7. setContent()
2.1.1.7.8. isEmpty()
2.1.2. Tree
2.1.2.1. AKA Baum
2.1.2.1.1. Führt zu Holz(https://www.youtube.com/watch?v=wjXUBG15eZ8)
2.1.2.2. Hat so viele Zweige wie man möchte
2.1.2.3. Keine konkrete Dokumentation vorhanden
2.1.2.3.1. Aber implementieren müssen wir es trotzdem können, am besten man speichert die Kindsbäume in einer List<Tree>.
2.1.2.4. Der Ursprungsbaum wird Wurzel genannt
2.1.2.5. Wenn man ein bestimmtes Objekt sucht muss man den Baum traversieren, da kein Index o.ä. vorhanden ist
2.1.2.6. Beherbergt Elemente vom Typ ContentType
2.1.3. Es gibt drei Arten von Zweigen
2.1.3.1. Bäume mit Kindsbäumen werden Knoten genannt
2.1.3.2. Bäume ohne Kindsknoten werden Blätter genannt
2.1.3.3. Bäume mit einem Kindsknoten werden Halbblätter genannt
2.1.4. BinarySearchTree (Ben & Timo)
2.1.4.1. Ordnungskriterium
2.1.4.1.1. Implementation
2.1.4.2. Binär
2.1.5. Struktur
2.1.5.1. Knoten
2.1.5.1.1. Wurzel
2.1.5.1.2. Kindsknoten
2.1.5.1.3. Blätter
2.2. Graphen (Jonas & Max)
2.2.1. Modellierung
2.2.1.1. Adjazenzliste
2.2.1.2. Adjazenzmatrix
2.2.1.3. Adjazenzgraph
2.2.1.4. Kanten
2.2.1.5. Knoten
2.2.2. Algorithmen
2.2.2.1. kürzester Weg "Dijkstra"
2.2.2.2. minimaler Spannbaum
2.2.3. Durchsuchen
2.2.3.1. Tiefensuche
2.2.3.2. Breitensuche
2.3. Lineare Datenstrukturen
2.3.1. Queue
2.3.1.1. Erklärung
2.3.1.1.1. generische Klasse Queue<ContentType>
2.3.1.1.2. Datenstruktur, welche eine beliebige Menge von Objekten aufnimmt und diese in der Reihenfolge ihres Einfügens zurückgibt
2.3.1.1.3. Elemente können nur in der Reihenfolge ihres Einfügens gelesen oder gelöscht werden
2.3.1.2. First-In-First-Out-Prinzip
2.3.1.2.1. das zuerst abgelegte Objekt wird als erstes wieder entnommen
2.3.1.3. Aufbau
2.3.1.3.1. Konstruktor
2.3.1.3.2. Methoden
2.3.1.3.3. private innere Klasse QueueNode
2.3.1.4. Aufgabe (-> edmodo)
2.3.2. Stack
2.3.2.1. Erklärung
2.3.2.1.1. generische Klasse Stack<ContentType>
2.3.2.1.2. Datenstruktur, welche eine beliebige Menge von Objekten aufnimmt und diese in der entgegengesetzten Reihenfolge ihres Einfügens wieder zurückgibt
2.3.2.1.3. Elemente können nur in umgekehrter Reihenfolge des Einfügens gelesen oder gelöscht werden
2.3.2.2. Last-In-First-Out-Prinzip
2.3.2.2.1. das zuletzt abgelegte Objekt wird als erstes wieder entnommen
2.3.2.3. Aufbau
2.3.2.3.1. K on st r uk to r
2.3.2.3.2. Methoden
2.3.2.3.3. private innere Klasse StackNode
2.3.2.4. Aufgabe (-> edmodo)
2.3.3. List
2.3.3.1. Erklärung
2.3.3.1.1. generische Klasse List<ContentType>
2.3.3.1.2. verwaltet beliebig viele linear angeordnete Objekte vom Typ ContentType
2.3.3.1.3. Die Listenelemente können beliebig an jeder Stelle der Liste eingefügt oder gelöscht werden
2.3.3.1.4. Die Anzahl der Listenelemente ist nicht beschränkt oder vorher festgelegt
2.3.3.1.5. ein Listenelement besteht aus einem Inhaltsobjekt und einem Verweis auf das nächste Listenelement
2.3.3.1.6. Nach dem letzten Objekt einer Liste kann ein Listenobjekt oder eine andere Liste angehängt werden
2.3.3.1.7. Wozu benötigt die Liste zusätzliche Methoden?
2.3.3.1.8. Das aktuelle Objekt
2.3.3.2. Aufbau
2.3.3.2.1. Konstruktor
2.3.3.2.2. Methoden (public)
2.3.3.2.3. private innere Klasse ListNode
2.3.3.3. Aufgabe (-> edmodo)
3. Grundlagen der Programmiersprache Java (Ben & Timo)
3.1. Schleifen
3.1.1. "For"-Schleife
3.1.1.1. Verwendung bei vorheriger Kenntnis über Anzahl d. gewünschten Durchläufe
3.1.2. "While"-Schleife
3.1.2.1. Verwendung bei gewünschtem Schleifendurchlauf ausschließlich während speziellem Zustand
3.1.3. "Do-While"-Schleife
3.1.3.1. Verwendung bei gewünschtem Schleifendurchlauf während speziellem Zustand mit garantiertem Erstdurchlauf
3.2. Bedingte Anweisungen
3.2.1. Verzweigung mit "if-else"
3.2.1.1. Verwendung wenn bei Erfüllung einer Bedingung Ausführung bestimmter Kommandozeilen gewünscht ist und ansonsten festgelegte weitere Befehle ausgeführt werden sollen
3.2.2. "if-else-if"
3.2.2.1. Verwendung wenn bei Erfüllung einer Bedingung Ausführung bestimmter Kommandozeilen gewünscht ist und ansonsten festgelegte weitere Befehle unter weiterer Bedingung ausgeführt werden sollen
3.2.3. Verzweigung mit "switch-Case"
3.2.3.1. Verwendung wenn zu erwartende Zustände einer Variable vorauszusehen sind und auf diese entsprechend stets, in Abhängigkeit des Zustandes, zu reagieren ist
3.3. Arrays
3.3.1. Erstellung
3.3.1.1. Verwendung wenn bekannte Anzahl an Werten zentriert gespeichert werden soll
3.3.2. Manipulation
3.3.2.1. Aktualisieren bestimmter Werte in bestimmten Array
3.4. Logische Ausdrücke
3.4.1. '&&'
3.4.1.1. True wenn alle genannten booleschen Ausrücke true sind
3.4.2. '||'
3.4.2.1. True wenn einer der genannten booleschen Ausdrücke true ist
3.4.3. '=='
3.4.3.1. True wenn beide Ausdrücke identisch sind
3.4.4. '>='
3.4.4.1. True wenn erster Ausdruck entweder größer (je nach Zeichen kleiner) oder gleich dem zweitem ist
3.4.5. '!='
3.4.5.1. True wenn erster Ausdruck ungleich dem ersten ist
3.4.6. '^'
3.4.6.1. True wenn beide booleschen Ausdrücke ungleich (eins true, eins false) sind
3.5. Variablen
3.5.1. Integer (int)
3.5.2. Double (double)
3.5.3. Character (char)
3.5.4. String (String)
3.5.5. Boolean (boolean)
4. Abiturklausur 2014 (Daniel & Robert R.)
5. Abiturklausur 2015 (Lea + Marie)
6. Operatoren-Liste (Lea + Marie)
7. Polymorphie (Tim)
7.1. Beispiel in Java
7.1.1. Die Node-Klassen, der uns bekannten dynamischen Datenstrukturen, nutzen Polymorphie.
7.1.2. Der Datentyp, der in Node gespeichert werden soll, ist nicht festgelegt.
7.1.3. Die Objekte, die z.B. in den Objekten der Klasse Tree gespeichert werden sollen müssen das Interface ComparableContent implementieren.
7.1.4. Dabei muss durch, überschreiben der drei Vergleichsmethoden isLess, isEqual, isGreater eine eindeutige Ordnungsrelation festgelegt sein.
7.2. Was ist Polymorphie?
7.2.1. Polymorphie ist griechisch für „Vielgestaltigkeit“.
7.2.2. Zweck: Bezeichner soll unterschiedliche Datentypen akzeptieren.
7.2.3. Bei der objektorientierten Programmierung tritt Polymorphie im folgenden Auf: Vererbung, z.B. Vererbung abstrakter Klassen Interface, z.B. Node-Klasse
8. Suchen (Robert K. + Tim)
8.1. lineare Suche
8.1.1. Anzahl der Vergleiche
8.1.1.1. Worst Case
8.1.1.1.1. O(n)= n
8.1.1.2. Best Case
8.1.1.2.1. O(n) = 1
8.1.1.3. Average Case
8.1.1.3.1. O(n) = n/2
8.2. Binäre Suche
8.2.1. Anzahl der Vergleiche
8.2.1.1. Worst Case
8.2.1.1.1. O(n) = O(n/2) = log2(n)
8.2.1.2. Best Case
8.2.1.2.1. O(n) = 1
8.2.1.3. Average Case
8.2.1.3.1. O(n) = log2(n)
8.2.2. Vergleich des gesuchten Wertes mit dem mittleren Wert im Suchbereich
8.2.2.1. Zu suchender Wert < mittleres Element
8.2.2.1.1. Begrenzung des Suchbereiches auf dessen linke Hälfte
8.2.2.2. Zu suchender Wert > mittleres Element
8.2.2.2.1. Begrenzung des Suchbereiches auf dessen rechte Hälfte
9. Abiklausur 2016 (Edris + Dennis)
9.1. Alt
9.1.1. "http://deadraya.lima-city.de/IF16_j_L_HT_GG.pdf"
9.1.2. "http://deadraya.lima-city.de/Info2016zuBearbeiten_Origin.docx"
9.2. Neu
9.2.1. "http://deadraya.lima-city.de/Info2016zuBearbeiten_bearbeitet.docx"
10. Vererbung (Luis, Emre)
10.1. extends
10.2. Vererbung von Methoden und Variabeln
10.3. Abstrakte Methoden & Klassen
10.3.1. super-Methode
10.4. Klassen
10.4.1. Objekte
10.5. Attribute
10.5.1. protected
10.5.2. private
10.5.3. public
11. Backtracking (Luis, Emre)
11.1. Rekursion
11.2. N Damen Problem
11.2.1. Zwei- und eindimensionales Array
12. Rekursion (Robert K.)
12.1. Iteration [das Gegenstück zur Rekursion]
12.1.1. Wiederholen ein und desselben Prozesses
12.1.1.1. z.B. durch gewöhnliche Schleifen
12.2. Abbruchbedingung
12.3. Selbstaufruf
12.3.1. Die Anfrage gibt "sich selbst" mit veränderten Parametern zurück
12.4. Beispiele
12.4.1. Mathematik
12.4.1.1. Fibonacci-Folge
12.4.1.2. Summenbildung / Summenformel
12.4.1.3. Pascal'sches Dreieck
12.4.1.3.1. n über k
12.4.1.4. n hoch k
12.4.2. Rekursive Grafiken
12.4.2.1. Fraktale
12.4.2.1.1. Pythagoras-Baum
12.4.2.1.2. Mandelbrot-Menge / Julia-Menge
12.4.2.1.3. Koch-Kurve
12.4.2.1.4. Sierpinksi-Dreieck
12.4.2.1.5. Menger-Schwamm
12.5. Zweck
12.5.1. "Zerpflücken" eines Problems
12.5.1.1. Zerlegen in atomare, autonom lösbare Probleme
12.5.2. Zurückverfolgen eines Problems zu seinem Ursprung
13. Legende/Farben
13.1. Edris & Dennis
13.1.1. Edris & Dennis
13.2. Emre+Luis
13.3. RobertK+Tim
13.4. Ben+Timo
13.5. Jonas+Max
13.6. Alex+Martin
14. Entwurfs- und Implementationsdiagramme (Ben & Timo)
14.1. Entwurfsdiagramme
14.2. Vererbung
14.3. Assoziation
14.3.1. Multiplizitäten
14.4. Implementationsdiagramme
14.4.1. Objektkarte
14.4.2. Klassenkarte
15. Mensch-Computer-Interaktion (Robert R. & Daniel)
15.1. erforscht Schnittstelle zwischen Mensch (Anwender) & Computer
15.1.1. Design
15.1.2. Umsetzung
15.1.3. Auswertung
15.1.4. Ziel: benutzergerechtes, intuitives Display
15.2. 13 Prinzipien des Display Design
15.2.1. Wahrnehmungsprinzipien
15.2.1.1. Displays sollen lesbar sein
15.2.1.2. Unterschiede sollen deutlich erkennbar sein
15.2.1.3. Ähnlichkeit führt zu Verwirrung
15.2.1.4. Top-down processing
15.2.1.5. Redundanz
15.2.2. Grundsätze auf der Grundlage der Aufmerksamkeit
15.2.2.1. Minimiere den Aufwand an Informationen zu gelangen
15.2.2.2. Prinzip der verschiedenen Ressourcen
15.2.2.3. Prinzip der Kompatibilität naher Objekte
15.2.3. Prinzipien basierend auf dem Gedächnis
15.2.3.1. Prinzip der Konsistenz
15.2.3.2. Prinzip der Proaktivität
15.2.3.3. Visuelle Informationen anstelle des Gedächnis des Benutzers
15.2.4. Mentale Modellprinzipien
15.2.4.1. Prinzip des bildlichen Realismus
15.2.4.2. Prinzip der bewegenden Teile
16. Automatentheorie (Edris & Dennis)
16.1. Funktion
16.2. Formale Sprache
16.3. Komplementärautomat
16.4. Reguläre Ausdrücke
16.5. Potenzmengenkonstruktion
16.6. Schneller Markierungsalgorithmus
16.7. Determinismus
16.8. Grammatiken
16.9. Kellerautomat
16.9.1. Hilfreiches Video
17. Datenbanken (Jonas + Max)
17.1. ER-Diagramm
17.1.1. Entitäten
17.1.2. Attribute
17.1.3. Relationen
17.2. Tabelle
17.2.1. Tabellenname
17.2.2. Attribute
17.2.2.1. Schlüssel
17.2.2.1.1. Primärschlüssel
17.2.2.1.2. Fremdschlüssel
18. Sortieralgorithmen
18.1. Bubblesort (Lea + Marie)
18.2. Insertionsort (Lea + Marie)
18.3. Mergesort (Luis, Emre)
18.4. Quicksort (Luis, Emre)
19. Kryptographie (Daniel & Robert R.)
19.1. Hybride Kryptosysteme
19.1.1. Kombination aus symmetrischen & asymmetrischen Kryptosystemen
19.2. Asymmetrische Kryptosysteme/ Public-Key-Verfahren
19.2.1. Protokolle
19.2.1.1. SSH
19.2.1.2. TLS
19.2.2. Anwendung
19.2.2.1. E-Mail
19.2.2.2. Online Banking
19.2.3. Verfahren
19.2.3.1. Public Key zum Verschlüsseln
19.2.3.2. Private Key zum Entschlüsseln
19.2.3.3. Algorithmen
19.2.3.3.1. RSA
19.2.3.3.2. AES
19.2.3.3.3. Camellia
19.2.4. hoher Rechenaufwand -> langsamer
19.3. Symmetrische Kryptosysteme
19.3.1. Private Key zum Ver & Entschlüsseln
19.3.2. Transposition
19.3.2.1. Gartenzaun
19.3.2.2. Skytale
19.3.3. Substitution
19.3.3.1. monoalphabetische Substitution
19.3.3.1.1. Caesar-Verschlüsselung
19.3.3.2. polyalphabetische Substitution
19.3.3.2.1. Vigenère-Verschlüsselung
19.4. Geschichte
19.4.1. Kryptographie im Zweiten Weltkrieg
19.4.1.1. Enigma
19.4.2. klassische Kryptographie
19.4.2.1. Caesar-Verschlüsselung
19.4.3. moderne Kryptographie (Computergestützt)