[{"data":1,"prerenderedAt":3286},["ShallowReactive",2],{"book-hierarchy":3,"content-query-zqK6UD2jOG":1073},[4,262,999],{"key":5,"slug":5,"title":6,"cleanTitle":6,"numberedTitle":7,"description":8,"path":9,"basePath":10,"filePath":11,"pageType":12,"hidden":13,"effectiveHidden":13,"order":14,"depth":14,"number":15,"ownAudience":16,"audiences":17,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":22},"01_programmierung","Programmierung","I Programmierung","Grundlagen der Programmierung.","/01_programmierung/de","/01_programmierung","content/01_Programmierung/de.md","chapter",false,1,"I","Sek I",[16],"cover-de-light.png","cover-en-light.png","cover-de-dark.png","cover-en-dark.png",[23,37,250],{"key":24,"slug":25,"title":26,"cleanTitle":26,"numberedTitle":27,"description":28,"path":29,"basePath":30,"filePath":31,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":33,"number":34,"ownAudience":16,"audiences":35,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":36},"01_programmierung/01_python","01_python","Python","I.1 Python","Einführung in die Programmiersprache Python.","/01_programmierung/01_python/de","/01_programmierung/01_python","content/01_Programmierung/01_Python/de.md","content",2,"I.1",[16],[],{"key":38,"slug":39,"title":40,"cleanTitle":40,"numberedTitle":41,"description":42,"path":43,"basePath":44,"filePath":45,"pageType":12,"hidden":13,"effectiveHidden":13,"order":33,"depth":33,"number":46,"ownAudience":16,"audiences":47,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":48},"01_programmierung/02_java","02_java","Java","I.2 Java","Objektorientierte Programmierung mit Java: von OOP-Grundlagen bis zu Projekten.","/01_programmierung/02_java/de","/01_programmierung/02_java","content/01_Programmierung/02_Java/de.md","I.2",[16],[49,139,190,202,214],{"key":50,"slug":51,"title":52,"cleanTitle":52,"numberedTitle":53,"description":54,"path":55,"basePath":56,"filePath":57,"pageType":58,"hidden":13,"effectiveHidden":13,"order":14,"depth":59,"number":60,"ownAudience":16,"audiences":61,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":63},"01_programmierung/02_java/01_oop_teil_i","01_oop_teil_i","OOP Teil I","I.2.1 OOP Teil I","Grundlagen der objektorientierten Programmierung mit Java.","/01_programmierung/02_java/01_oop_teil_i/de","/01_programmierung/02_java/01_oop_teil_i","content/01_Programmierung/02_Java/01_OOP_Teil_I/de.md","overview",3,"I.2.1",[16],"",[64,78,90,102,114,126],{"key":65,"slug":66,"title":67,"cleanTitle":67,"numberedTitle":68,"description":69,"path":70,"basePath":71,"filePath":72,"pageType":32,"hidden":13,"effectiveHidden":13,"order":73,"depth":74,"number":75,"ownAudience":16,"audiences":76,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":77},"01_programmierung/02_java/01_oop_teil_i/00_uebersicht_installation","00_uebersicht_installation","Uebersicht und Installation","I.2.1.1 Uebersicht und Installation","Programmierparadigmen, Java-Grundidee und Einrichtung der Entwicklungsumgebung.","/01_programmierung/02_java/01_oop_teil_i/00_uebersicht_installation/de","/01_programmierung/02_java/01_oop_teil_i/00_uebersicht_installation","content/01_Programmierung/02_Java/01_OOP_Teil_I/00_Uebersicht_Installation/de.md",0,4,"I.2.1.1",[16],[],{"key":79,"slug":80,"title":81,"cleanTitle":81,"numberedTitle":82,"description":83,"path":84,"basePath":85,"filePath":86,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":87,"ownAudience":16,"audiences":88,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":89},"01_programmierung/02_java/01_oop_teil_i/01_klassen_und_objekte","01_klassen_und_objekte","Klassen und Objekte","I.2.1.2 Klassen und Objekte","Modellierung mit Klassen, Attribute, Methoden und erste Objektinstanzen.","/01_programmierung/02_java/01_oop_teil_i/01_klassen_und_objekte/de","/01_programmierung/02_java/01_oop_teil_i/01_klassen_und_objekte","content/01_Programmierung/02_Java/01_OOP_Teil_I/01_Klassen_und_Objekte/de.md","I.2.1.2",[16],[],{"key":91,"slug":92,"title":93,"cleanTitle":93,"numberedTitle":94,"description":95,"path":96,"basePath":97,"filePath":98,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":74,"number":99,"ownAudience":16,"audiences":100,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":101},"01_programmierung/02_java/01_oop_teil_i/02_datentypen_methoden_parameter","02_datentypen_methoden_parameter","Datentypen, Methoden und Parameter","I.2.1.3 Datentypen, Methoden und Parameter","Primitive Typen, lokale Variablen, Methodensignaturen und Rueckgabewerte.","/01_programmierung/02_java/01_oop_teil_i/02_datentypen_methoden_parameter/de","/01_programmierung/02_java/01_oop_teil_i/02_datentypen_methoden_parameter","content/01_Programmierung/02_Java/01_OOP_Teil_I/02_Datentypen_Methoden_Parameter/de.md","I.2.1.3",[16],[],{"key":103,"slug":104,"title":105,"cleanTitle":105,"numberedTitle":106,"description":107,"path":108,"basePath":109,"filePath":110,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":74,"number":111,"ownAudience":16,"audiences":112,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":113},"01_programmierung/02_java/01_oop_teil_i/03_attribute_kapselung_setter_getter","03_attribute_kapselung_setter_getter","Attribute, Kapselung, Setter und Getter","I.2.1.4 Attribute, Kapselung, Setter und Getter","Saubere Objektzustaende durch Zugriffskontrolle und kontrollierte Schnittstellen.","/01_programmierung/02_java/01_oop_teil_i/03_attribute_kapselung_setter_getter/de","/01_programmierung/02_java/01_oop_teil_i/03_attribute_kapselung_setter_getter","content/01_Programmierung/02_Java/01_OOP_Teil_I/03_Attribute_Kapselung_Setter_Getter/de.md","I.2.1.4",[16],[],{"key":115,"slug":116,"title":117,"cleanTitle":117,"numberedTitle":118,"description":119,"path":120,"basePath":121,"filePath":122,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":74,"number":123,"ownAudience":16,"audiences":124,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":125},"01_programmierung/02_java/01_oop_teil_i/04_new_konstruktoren_ueberladen","04_new_konstruktoren_ueberladen","new, Konstruktoren und Ueberladen","I.2.1.5 new, Konstruktoren und Ueberladen","Objekte gezielt erzeugen und flexible Schnittstellen durch Ueberladen entwerfen.","/01_programmierung/02_java/01_oop_teil_i/04_new_konstruktoren_ueberladen/de","/01_programmierung/02_java/01_oop_teil_i/04_new_konstruktoren_ueberladen","content/01_Programmierung/02_Java/01_OOP_Teil_I/04_New_Konstruktoren_Ueberladen/de.md","I.2.1.5",[16],[],{"key":127,"slug":128,"title":129,"cleanTitle":129,"numberedTitle":130,"description":131,"path":132,"basePath":133,"filePath":134,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":74,"number":136,"ownAudience":16,"audiences":137,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":138},"01_programmierung/02_java/01_oop_teil_i/05_vererbung_abstrakte_klassen","05_vererbung_abstrakte_klassen","Vererbung und abstrakte Klassen","I.2.1.6 Vererbung und abstrakte Klassen","Code wiederverwenden, Spezialisierungen bilden und gemeinsame Schnittstellen sichern.","/01_programmierung/02_java/01_oop_teil_i/05_vererbung_abstrakte_klassen/de","/01_programmierung/02_java/01_oop_teil_i/05_vererbung_abstrakte_klassen","content/01_Programmierung/02_Java/01_OOP_Teil_I/05_Vererbung_Abstrakte_Klassen/de.md",5,"I.2.1.6",[16],[],{"key":140,"slug":141,"title":142,"cleanTitle":142,"numberedTitle":143,"description":144,"path":145,"basePath":146,"filePath":147,"pageType":58,"hidden":13,"effectiveHidden":13,"order":33,"depth":59,"number":148,"ownAudience":16,"audiences":149,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":150},"01_programmierung/02_java/02_schleifen_arrays_statischemethoden","02_schleifen_arrays_statischemethoden","Schleifen, Arrays und statische Methoden","I.2.2 Schleifen, Arrays und statische Methoden","Kontrollstrukturen, Array-Datenstrukturen und der Einsatz von static.","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/de","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden","content/01_Programmierung/02_Java/02_Schleifen_Arrays_StatischeMethoden/de.md","I.2.2",[16],[151,164,177],{"key":152,"slug":153,"title":154,"cleanTitle":154,"numberedTitle":155,"description":156,"path":157,"basePath":158,"filePath":159,"pageType":32,"hidden":13,"effectiveHidden":13,"order":160,"depth":74,"number":161,"ownAudience":16,"audiences":162,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":163},"01_programmierung/02_java/02_schleifen_arrays_statischemethoden/06_statische_variablen_und_methoden","06_statische_variablen_und_methoden","Statische Variablen und Methoden","I.2.2.1 Statische Variablen und Methoden","Unterschied zwischen Instanz- und Klassenebene in Java.","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/06_statische_variablen_und_methoden/de","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/06_statische_variablen_und_methoden","content/01_Programmierung/02_Java/02_Schleifen_Arrays_StatischeMethoden/06_Statische_Variablen_und_Methoden/de.md",6,"I.2.2.1",[16],[],{"key":165,"slug":166,"title":167,"cleanTitle":167,"numberedTitle":168,"description":169,"path":170,"basePath":171,"filePath":172,"pageType":32,"hidden":13,"effectiveHidden":13,"order":173,"depth":74,"number":174,"ownAudience":16,"audiences":175,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":176},"01_programmierung/02_java/02_schleifen_arrays_statischemethoden/07_arrays","07_arrays","Arrays","I.2.2.2 Arrays","Ein- und mehrdimensionale Arrays, Initialisierung und typische Fehlerquellen.","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/07_arrays/de","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/07_arrays","content/01_Programmierung/02_Java/02_Schleifen_Arrays_StatischeMethoden/07_Arrays/de.md",7,"I.2.2.2",[16],[],{"key":178,"slug":179,"title":180,"cleanTitle":180,"numberedTitle":181,"description":182,"path":183,"basePath":184,"filePath":185,"pageType":32,"hidden":13,"effectiveHidden":13,"order":186,"depth":74,"number":187,"ownAudience":16,"audiences":188,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":189},"01_programmierung/02_java/02_schleifen_arrays_statischemethoden/08_schleifen_und_uebungen","08_schleifen_und_uebungen","Schleifen und Uebungen","I.2.2.3 Schleifen und Uebungen","for- und while-Schleifen, Summenformeln, Suche und verschachtelte Iteration.","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/08_schleifen_und_uebungen/de","/01_programmierung/02_java/02_schleifen_arrays_statischemethoden/08_schleifen_und_uebungen","content/01_Programmierung/02_Java/02_Schleifen_Arrays_StatischeMethoden/08_Schleifen_und_Uebungen/de.md",8,"I.2.2.3",[16],[],{"key":191,"slug":192,"title":193,"cleanTitle":193,"numberedTitle":194,"description":195,"path":196,"basePath":197,"filePath":198,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":59,"number":199,"ownAudience":16,"audiences":200,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":201},"01_programmierung/02_java/03_strukturierenmitmethoden","03_strukturierenmitmethoden","Strukturieren mit Methoden","I.2.3 Strukturieren mit Methoden","Lange Methoden in klar abgegrenzte Teilmethoden zerlegen.","/01_programmierung/02_java/03_strukturierenmitmethoden/de","/01_programmierung/02_java/03_strukturierenmitmethoden","content/01_Programmierung/02_Java/03_StrukturierenMitMethoden/de.md","I.2.3",[16],[],{"key":203,"slug":204,"title":205,"cleanTitle":205,"numberedTitle":206,"description":207,"path":208,"basePath":209,"filePath":210,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":59,"number":211,"ownAudience":16,"audiences":212,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":213},"01_programmierung/02_java/04_gueltigkeitundsichtbarkeit","04_gueltigkeitundsichtbarkeit","Gueltigkeit und Sichtbarkeit","I.2.4 Gueltigkeit und Sichtbarkeit","Scope, Lebensdauer und Zugriffsregeln von Variablen und Attributen.","/01_programmierung/02_java/04_gueltigkeitundsichtbarkeit/de","/01_programmierung/02_java/04_gueltigkeitundsichtbarkeit","content/01_Programmierung/02_Java/04_GueltigkeitUndSichtbarkeit/de.md","I.2.4",[16],[],{"key":215,"slug":216,"title":217,"cleanTitle":217,"numberedTitle":218,"description":219,"path":220,"basePath":221,"filePath":222,"pageType":58,"hidden":13,"effectiveHidden":13,"order":74,"depth":59,"number":223,"ownAudience":16,"audiences":224,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":225},"01_programmierung/02_java/04_oop_teil_ii","04_oop_teil_ii","OOP Teil II","I.2.5 OOP Teil II","Vertiefung zu Polymorphie, Typisierung, Interfaces und Modellierungsfragen.","/01_programmierung/02_java/04_oop_teil_ii/de","/01_programmierung/02_java/04_oop_teil_ii","content/01_Programmierung/02_Java/04_OOP_Teil_II/de.md","I.2.5",[16],[226,238],{"key":227,"slug":228,"title":229,"cleanTitle":229,"numberedTitle":230,"description":231,"path":232,"basePath":233,"filePath":234,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":235,"ownAudience":16,"audiences":236,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":237},"01_programmierung/02_java/04_oop_teil_ii/01_uebungen","01_uebungen","Uebungen und Vertiefung","I.2.5.1 Uebungen und Vertiefung","Kovarianz, Polymorphie, statische Typisierung und erlaubte Zuweisungen.","/01_programmierung/02_java/04_oop_teil_ii/01_uebungen/de","/01_programmierung/02_java/04_oop_teil_ii/01_uebungen","content/01_Programmierung/02_Java/04_OOP_Teil_II/01_Uebungen/de.md","I.2.5.1",[16],[],{"key":239,"slug":240,"title":241,"cleanTitle":241,"numberedTitle":242,"description":243,"path":244,"basePath":245,"filePath":246,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":74,"number":247,"ownAudience":16,"audiences":248,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":249},"01_programmierung/02_java/04_oop_teil_ii/02_projekt_zahlen","02_projekt_zahlen","Projekt Zahlen","I.2.5.2 Projekt Zahlen","Natuerliche, ganze und rationale Zahlen mit Interfaces und sauberem Klassendesign.","/01_programmierung/02_java/04_oop_teil_ii/02_projekt_zahlen/de","/01_programmierung/02_java/04_oop_teil_ii/02_projekt_zahlen","content/01_Programmierung/02_Java/04_OOP_Teil_II/02_Projekt_Zahlen/de.md","I.2.5.2",[16],[],{"key":251,"slug":252,"title":253,"cleanTitle":253,"numberedTitle":254,"description":255,"path":256,"basePath":257,"filePath":258,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":33,"number":259,"ownAudience":16,"audiences":260,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":261},"01_programmierung/03_cleancode","03_cleancode","Clean Code","I.3 Clean Code","Grundlagen für sauberen und lesbaren Code.","/01_programmierung/03_cleancode/de","/01_programmierung/03_cleancode","content/01_Programmierung/03_CleanCode/de.md","I.3",[16],[],{"key":263,"slug":263,"title":264,"cleanTitle":264,"numberedTitle":265,"description":266,"path":267,"basePath":268,"filePath":269,"pageType":12,"hidden":13,"effectiveHidden":13,"order":186,"depth":14,"number":270,"ownAudience":62,"audiences":271,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":272},"08_kuenstlicheintelligenz","Künstliche Intelligenz","II Künstliche Intelligenz","Maschinelles Lernen und intelligente Systeme.","/08_kuenstlicheintelligenz/de","/08_kuenstlicheintelligenz","content/08_KuenstlicheIntelligenz/de.md","II",[16],[273,359,407,827,949],{"key":274,"slug":275,"title":276,"cleanTitle":276,"numberedTitle":277,"description":278,"path":279,"basePath":280,"filePath":281,"pageType":58,"hidden":13,"effectiveHidden":13,"order":14,"depth":33,"number":282,"ownAudience":62,"audiences":283,"coverDeLight":284,"coverEnLight":285,"coverDeDark":286,"coverEnDark":287,"children":288},"08_kuenstlicheintelligenz/01_was_ist_ki","01_was_ist_ki","Einführung in das Maschinelle Lernen","II.1 Einführung in das Maschinelle Lernen","Ein Überblick über die fundamentalen Konzepte des Maschinellen Lernens.","/08_kuenstlicheintelligenz/01_was_ist_ki/de","/08_kuenstlicheintelligenz/01_was_ist_ki","content/08_KuenstlicheIntelligenz/01_was_ist_ki/de.md","II.1",[16],"cover-de-light.webp","cover-en-light.webp","cover-de-dark.webp","cover-en-dark.webp",[289,300,312,323,335,347],{"key":290,"slug":291,"title":264,"cleanTitle":264,"numberedTitle":292,"description":293,"path":294,"basePath":295,"filePath":296,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":59,"number":297,"ownAudience":16,"audiences":298,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":299},"08_kuenstlicheintelligenz/01_was_ist_ki/01-kuenstliche-intelligenz","01-kuenstliche-intelligenz","II.1.1 Künstliche Intelligenz","Unterseite zu Künstliche Intelligenz","/08_kuenstlicheintelligenz/01_was_ist_ki/01-kuenstliche-intelligenz/de","/08_kuenstlicheintelligenz/01_was_ist_ki/01-kuenstliche-intelligenz","content/08_KuenstlicheIntelligenz/01_was_ist_ki/01-kuenstliche-intelligenz/de.md","II.1.1",[16],[],{"key":301,"slug":302,"title":303,"cleanTitle":303,"numberedTitle":304,"description":305,"path":306,"basePath":307,"filePath":308,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":59,"number":309,"ownAudience":16,"audiences":310,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":311},"08_kuenstlicheintelligenz/01_was_ist_ki/02-was-ist-ml","02-was-ist-ml","Was ist ML","II.1.2 Was ist ML","Eine Einführung in die Grundlagen des Maschinellen Lernens.","/08_kuenstlicheintelligenz/01_was_ist_ki/02-was-ist-ml/de","/08_kuenstlicheintelligenz/01_was_ist_ki/02-was-ist-ml","content/08_KuenstlicheIntelligenz/01_was_ist_ki/02-was-ist-ml/de.md","II.1.2",[16],[],{"key":313,"slug":314,"title":315,"cleanTitle":315,"numberedTitle":316,"description":62,"path":317,"basePath":318,"filePath":319,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":59,"number":320,"ownAudience":16,"audiences":321,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":322},"08_kuenstlicheintelligenz/01_was_ist_ki/03-datascience_und_datenarten","03-datascience_und_datenarten","Qualitative und quantitative Merkmale","II.1.3 Qualitative und quantitative Merkmale","/08_kuenstlicheintelligenz/01_was_ist_ki/03-datascience_und_datenarten/de","/08_kuenstlicheintelligenz/01_was_ist_ki/03-datascience_und_datenarten","content/08_KuenstlicheIntelligenz/01_was_ist_ki/03-DataScience_und_Datenarten/de.md","II.1.3",[16],[],{"key":324,"slug":325,"title":326,"cleanTitle":326,"numberedTitle":327,"description":328,"path":329,"basePath":330,"filePath":331,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":59,"number":332,"ownAudience":16,"audiences":333,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":334},"08_kuenstlicheintelligenz/01_was_ist_ki/04_featureextraction","04_featureextraction","Feature Extraction","II.1.4 Feature Extraction","Von Rohdaten wie Audioaufnahmen zu Merkmalen und Datensätzen.","/08_kuenstlicheintelligenz/01_was_ist_ki/04_featureextraction/de","/08_kuenstlicheintelligenz/01_was_ist_ki/04_featureextraction","content/08_KuenstlicheIntelligenz/01_was_ist_ki/04_featureextraction/de.md","II.1.4",[16],[],{"key":336,"slug":337,"title":338,"cleanTitle":338,"numberedTitle":339,"description":340,"path":341,"basePath":342,"filePath":343,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":59,"number":344,"ownAudience":16,"audiences":345,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":346},"08_kuenstlicheintelligenz/01_was_ist_ki/05-lernparadigmen_von_ml","05-lernparadigmen_von_ml","Arten von ML","II.1.5 Arten von ML","Ueberblick ueber Ueberwachtes, Unueberwachtes und Verstaerkendes Lernen.","/08_kuenstlicheintelligenz/01_was_ist_ki/05-lernparadigmen_von_ml/de","/08_kuenstlicheintelligenz/01_was_ist_ki/05-lernparadigmen_von_ml","content/08_KuenstlicheIntelligenz/01_was_ist_ki/05-lernparadigmen_von_ml/de.md","II.1.5",[16],[],{"key":348,"slug":349,"title":350,"cleanTitle":350,"numberedTitle":351,"description":352,"path":353,"basePath":354,"filePath":355,"pageType":32,"hidden":13,"effectiveHidden":13,"order":160,"depth":59,"number":356,"ownAudience":16,"audiences":357,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":358},"08_kuenstlicheintelligenz/01_was_ist_ki/06-ueberblick","06-ueberblick","Ueberblick","II.1.6 Ueberblick","Zusammenfassung der wichtigsten Begriffe aus dem Unterkapitel Was ist KI.","/08_kuenstlicheintelligenz/01_was_ist_ki/06-ueberblick/de","/08_kuenstlicheintelligenz/01_was_ist_ki/06-ueberblick","content/08_KuenstlicheIntelligenz/01_was_ist_ki/06-ueberblick/de.md","II.1.6",[16],[],{"key":360,"slug":361,"title":362,"cleanTitle":362,"numberedTitle":363,"description":364,"path":365,"basePath":366,"filePath":367,"pageType":12,"hidden":13,"effectiveHidden":13,"order":33,"depth":33,"number":368,"ownAudience":62,"audiences":369,"coverDeLight":284,"coverEnLight":285,"coverDeDark":286,"coverEnDark":287,"children":370},"08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele","grundlagen-und-datenbeispiele","Grundlagen und Datensatzbeispiele","II.2 Grundlagen und Datensatzbeispiele","Unterseite zu Grundlagen und Datensatzbeispiele","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/de","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele","content/08_KuenstlicheIntelligenz/grundlagen-und-datenbeispiele/de.md","II.2",[],[371,383,395],{"key":372,"slug":373,"title":374,"cleanTitle":374,"numberedTitle":375,"description":376,"path":377,"basePath":378,"filePath":379,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":59,"number":380,"ownAudience":62,"audiences":381,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":382},"08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/datensatzbeispiele","datensatzbeispiele","Datenarten und Datensatzbeispiele","II.2.1 Datenarten und Datensatzbeispiele","Unterseite zu Datensatzbeispiele","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/datensatzbeispiele/de","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/datensatzbeispiele","content/08_KuenstlicheIntelligenz/grundlagen-und-datenbeispiele/datensatzbeispiele/de.md","II.2.1",[],[],{"key":384,"slug":385,"title":386,"cleanTitle":386,"numberedTitle":387,"description":388,"path":389,"basePath":390,"filePath":391,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":59,"number":392,"ownAudience":62,"audiences":393,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":394},"08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/dinstanzm","dinstanzm","Distanzmaße","II.2.2 Distanzmaße","Unterseite zu Distanzmaße","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/dinstanzm/de","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/dinstanzm","content/08_KuenstlicheIntelligenz/grundlagen-und-datenbeispiele/dinstanzm/de.md","II.2.2",[],[],{"key":396,"slug":397,"title":398,"cleanTitle":398,"numberedTitle":399,"description":400,"path":401,"basePath":402,"filePath":403,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":59,"number":404,"ownAudience":62,"audiences":405,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":406},"08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/suche","suche","Suche, Precision und Recall","II.2.3 Suche, Precision und Recall","Unterseite zu Suche, Precision und Recall","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/suche/de","/08_kuenstlicheintelligenz/grundlagen-und-datenbeispiele/suche","content/08_KuenstlicheIntelligenz/grundlagen-und-datenbeispiele/suche/de.md","II.2.3",[],[],{"key":408,"slug":409,"title":410,"cleanTitle":410,"numberedTitle":411,"description":412,"path":413,"basePath":414,"filePath":415,"pageType":12,"hidden":13,"effectiveHidden":13,"order":59,"depth":33,"number":416,"ownAudience":62,"audiences":417,"coverDeLight":284,"coverEnLight":285,"coverDeDark":286,"coverEnDark":287,"children":418},"08_kuenstlicheintelligenz/02_supervisedlearning","02_supervisedlearning","Überwachtes Lernen","II.3 Überwachtes Lernen","Unterseite zu 02_supervisedlearning","/08_kuenstlicheintelligenz/02_supervisedlearning/de","/08_kuenstlicheintelligenz/02_supervisedlearning","content/08_KuenstlicheIntelligenz/02_supervisedlearning/de.md","II.3",[16],[419,515,527,563,575,815],{"key":420,"slug":421,"title":422,"cleanTitle":422,"numberedTitle":423,"description":424,"path":425,"basePath":426,"filePath":427,"pageType":58,"hidden":13,"effectiveHidden":13,"order":14,"depth":59,"number":428,"ownAudience":62,"audiences":429,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":430},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl","01_grundlagen_des_sl","Grundlagen des Supervised Learnings","II.3.1 Grundlagen des Supervised Learnings","Unterseite zu Grundlagen des Supervised Learnings","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/de.md","II.3.1",[16],[431,443,455,467,479,491,503],{"key":432,"slug":433,"title":434,"cleanTitle":434,"numberedTitle":435,"description":436,"path":437,"basePath":438,"filePath":439,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":440,"ownAudience":62,"audiences":441,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":442},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/02_klassifikation_mit_entscheidungsbaumen","02_klassifikation_mit_entscheidungsbaumen","Klassifikation mit Entscheidungsbäumen","II.3.1.1 Klassifikation mit Entscheidungsbäumen","Unterseite zu Klassifikation mit Entscheidungsbäumen","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/02_klassifikation_mit_entscheidungsbaumen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/02_klassifikation_mit_entscheidungsbaumen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/02_klassifikation_mit_entscheidungsbaumen/de.md","II.3.1.1",[],[],{"key":444,"slug":445,"title":446,"cleanTitle":446,"numberedTitle":447,"description":448,"path":449,"basePath":450,"filePath":451,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":74,"number":452,"ownAudience":62,"audiences":453,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":454},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/03_regression_mit_entscheidungsbaemen","03_regression_mit_entscheidungsbaemen","Regression mit Entscheidungsbäumen","II.3.1.2 Regression mit Entscheidungsbäumen","Unterseite zu Regression mit Entscheidungsbäumen","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/03_regression_mit_entscheidungsbaemen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/03_regression_mit_entscheidungsbaemen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/03_regression_mit_entscheidungsbaemen/de.md","II.3.1.2",[],[],{"key":456,"slug":457,"title":458,"cleanTitle":458,"numberedTitle":459,"description":460,"path":461,"basePath":462,"filePath":463,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":74,"number":464,"ownAudience":62,"audiences":465,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":466},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01_problemstellungen_des_sl","01_problemstellungen_des_sl","Aufgabenstellungen des Überwachten Lernens","II.3.1.3 Aufgabenstellungen des Überwachten Lernens","Unterseite zu Aufgabenstellungen des Überwachten Lernens","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01_problemstellungen_des_sl/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01_problemstellungen_des_sl","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/01_problemstellungen_des_sl/de.md","II.3.1.3",[],[],{"key":468,"slug":469,"title":470,"cleanTitle":470,"numberedTitle":471,"description":472,"path":473,"basePath":474,"filePath":475,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":74,"number":476,"ownAudience":62,"audiences":477,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":478},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/04_beurteilung_von_klassifikatoren","04_beurteilung_von_klassifikatoren","Beurteilung von Klassifikatoren","II.3.1.4 Beurteilung von Klassifikatoren","Unterseite zu 04_beurteilung_von_klassifikatoren","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/04_beurteilung_von_klassifikatoren/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/04_beurteilung_von_klassifikatoren","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/04_beurteilung_von_klassifikatoren/de.md","II.3.1.4",[],[],{"key":480,"slug":481,"title":482,"cleanTitle":482,"numberedTitle":483,"description":484,"path":485,"basePath":486,"filePath":487,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":74,"number":488,"ownAudience":62,"audiences":489,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":490},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/05_beurteilung_von_regressionsmodellen","05_beurteilung_von_regressionsmodellen","Beurteilung von Modellen der Regression","II.3.1.5 Beurteilung von Modellen der Regression","Unterseite zu Beurteilung von Modellen der Regression","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/05_beurteilung_von_regressionsmodellen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/05_beurteilung_von_regressionsmodellen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/05_beurteilung_von_regressionsmodellen/de.md","II.3.1.5",[],[],{"key":492,"slug":493,"title":494,"cleanTitle":494,"numberedTitle":495,"description":496,"path":497,"basePath":498,"filePath":499,"pageType":32,"hidden":13,"effectiveHidden":13,"order":160,"depth":74,"number":500,"ownAudience":16,"audiences":501,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":502},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01-lineare-regression","01-lineare-regression","Lineare Regression","II.3.1.6 Lineare Regression","Grundlagen der linearen Regression im überwachten Lernen.","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01-lineare-regression/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/01-lineare-regression","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/01-lineare-regression/de.md","II.3.1.6",[16],[],{"key":504,"slug":505,"title":506,"cleanTitle":506,"numberedTitle":507,"description":508,"path":509,"basePath":510,"filePath":511,"pageType":32,"hidden":13,"effectiveHidden":13,"order":173,"depth":74,"number":512,"ownAudience":62,"audiences":513,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":514},"08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/06_diskriminative_vs_generative_modellederklassifikation","06_diskriminative_vs_generative_modellederklassifikation","Diskriminative und Generative Modelle der Klassifikation","II.3.1.7 Diskriminative und Generative Modelle der Klassifikation","Unterseite zu Diskriminative und Generative Modelle der Klassifikation","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/06_diskriminative_vs_generative_modellederklassifikation/de","/08_kuenstlicheintelligenz/02_supervisedlearning/01_grundlagen_des_sl/06_diskriminative_vs_generative_modellederklassifikation","content/08_KuenstlicheIntelligenz/02_supervisedlearning/01_grundlagen_des_sl/06_diskriminative_vs_generative_modellederklassifikation/de.md","II.3.1.7",[],[],{"key":516,"slug":517,"title":518,"cleanTitle":518,"numberedTitle":519,"description":520,"path":521,"basePath":522,"filePath":523,"pageType":12,"hidden":13,"effectiveHidden":13,"order":33,"depth":59,"number":524,"ownAudience":62,"audiences":525,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":526},"08_kuenstlicheintelligenz/02_supervisedlearning/03_knn","03_knn","KNN","II.3.2 KNN","Unterseite zu KNN","/08_kuenstlicheintelligenz/02_supervisedlearning/03_knn/de","/08_kuenstlicheintelligenz/02_supervisedlearning/03_knn","content/08_KuenstlicheIntelligenz/02_supervisedlearning/03_knn/de.md","II.3.2",[],[],{"key":528,"slug":529,"title":530,"cleanTitle":530,"numberedTitle":531,"description":532,"path":533,"basePath":534,"filePath":535,"pageType":12,"hidden":13,"effectiveHidden":13,"order":59,"depth":59,"number":536,"ownAudience":62,"audiences":537,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":538},"08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn","02_fnn","FNNs","II.3.3 FNNs","Unterseite zu FNNs","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/de","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn","content/08_KuenstlicheIntelligenz/02_supervisedlearning/02_fnn/de.md","II.3.3",[16],[539,551],{"key":540,"slug":541,"title":542,"cleanTitle":542,"numberedTitle":543,"description":544,"path":545,"basePath":546,"filePath":547,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":548,"ownAudience":16,"audiences":549,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":550},"08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/aktivierungsfunktionen","aktivierungsfunktionen","Aktivierungsfunktionen","II.3.3.1 Aktivierungsfunktionen","Unterseite zu Aktivierungsfunktionen","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/aktivierungsfunktionen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/aktivierungsfunktionen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/02_fnn/aktivierungsfunktionen/de.md","II.3.3.1",[16],[],{"key":552,"slug":553,"title":554,"cleanTitle":554,"numberedTitle":555,"description":556,"path":557,"basePath":558,"filePath":559,"pageType":32,"hidden":13,"effectiveHidden":13,"order":-4,"depth":74,"number":560,"ownAudience":62,"audiences":561,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":562},"08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/kunstliche-neuronen","kunstliche-neuronen","Künstliche Neuronen","II.3.3.2 Künstliche Neuronen","Unterseite zu Künstliche Neuronen","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/kunstliche-neuronen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/02_fnn/kunstliche-neuronen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/02_fnn/kunstliche-neuronen/de.md","II.3.3.2",[],[],{"key":564,"slug":565,"title":566,"cleanTitle":566,"numberedTitle":567,"description":568,"path":569,"basePath":570,"filePath":571,"pageType":58,"hidden":13,"effectiveHidden":13,"order":74,"depth":59,"number":572,"ownAudience":62,"audiences":573,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":574},"08_kuenstlicheintelligenz/02_supervisedlearning/04_svms","04_svms","SVMs","II.3.4 SVMs","Unterseite zu SVMs","/08_kuenstlicheintelligenz/02_supervisedlearning/04_svms/de","/08_kuenstlicheintelligenz/02_supervisedlearning/04_svms","content/08_KuenstlicheIntelligenz/02_supervisedlearning/04_svms/de.md","II.3.4",[],[],{"key":576,"slug":577,"title":578,"cleanTitle":578,"numberedTitle":579,"description":580,"path":581,"basePath":582,"filePath":583,"pageType":12,"hidden":13,"effectiveHidden":13,"order":160,"depth":59,"number":584,"ownAudience":62,"audiences":585,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":586},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung","05_verfahren_zur_modellanpassung","Verfahren zur Modellanpassung","II.3.5 Verfahren zur Modellanpassung","Wie Modelle ihre Parameter an Trainingsdaten anpassen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/de.md","II.3.5",[],[587,671,743],{"key":588,"slug":589,"title":590,"cleanTitle":590,"numberedTitle":591,"description":592,"path":593,"basePath":594,"filePath":595,"pageType":58,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":596,"ownAudience":62,"audiences":597,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":598},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung","01_gradientenbasierte_optimierung","Gradientenbasierte Optimierung beim Training von FNNs","II.3.5.1 Gradientenbasierte Optimierung beim Training von FNNs","Parameter schrittweise mit Hilfe von Gradienten verbessern","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/de.md","II.3.5.1",[],[599,611,623,635,647,659],{"key":600,"slug":601,"title":602,"cleanTitle":602,"numberedTitle":603,"description":604,"path":605,"basePath":606,"filePath":607,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":135,"number":608,"ownAudience":62,"audiences":609,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":610},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/funktionenbeimfnn-training","funktionenbeimfnn-training","Optimierungsproblem: Training von FNNs","II.3.5.1.1 Optimierungsproblem: Training von FNNs","Wie lassen sich die Parameter eines FNNs zur Vorhersage eines Trainingsdatensatzes anpassen?","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/funktionenbeimfnn-training/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/funktionenbeimfnn-training","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/funktionenbeimfnn-training/de.md","II.3.5.1.1",[],[],{"key":612,"slug":613,"title":614,"cleanTitle":614,"numberedTitle":615,"description":616,"path":617,"basePath":618,"filePath":619,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":135,"number":620,"ownAudience":62,"audiences":621,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":622},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/01_gradientenabstieg","01_gradientenabstieg","Gradientenabstiegsverfahren","II.3.5.1.2 Gradientenabstiegsverfahren","Ein grundlegendes Verfahren zum Minimieren einer Verlustfunktion","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/01_gradientenabstieg/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/01_gradientenabstieg","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/01_gradientenabstieg/de.md","II.3.5.1.2",[],[],{"key":624,"slug":625,"title":626,"cleanTitle":626,"numberedTitle":627,"description":628,"path":629,"basePath":630,"filePath":631,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":135,"number":632,"ownAudience":62,"audiences":633,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":634},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/02_stochastischer_gradientenabstieg","02_stochastischer_gradientenabstieg","Verfahrensüberblick und Alternativen","II.3.5.1.3 Verfahrensüberblick und Alternativen","Gegenüberstellung, Verfahren höherer Ordnung","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/02_stochastischer_gradientenabstieg/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/02_stochastischer_gradientenabstieg","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/02_stochastischer_gradientenabstieg/de.md","II.3.5.1.3",[],[],{"key":636,"slug":637,"title":638,"cleanTitle":638,"numberedTitle":639,"description":640,"path":641,"basePath":642,"filePath":643,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":135,"number":644,"ownAudience":62,"audiences":645,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":646},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/03_mini_batch_verfahren","03_mini_batch_verfahren","Mini-Batch-Verfahren und Optimizer","II.3.5.1.4 Mini-Batch-Verfahren und Optimizer","Gradienten aus kleinen Gruppen von Trainingsbeispielen berechnen, Verschiedene Verwendungsansätze des Gradienten","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/03_mini_batch_verfahren/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/03_mini_batch_verfahren","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/03_mini_batch_verfahren/de.md","II.3.5.1.4",[],[],{"key":648,"slug":649,"title":650,"cleanTitle":650,"numberedTitle":651,"description":652,"path":653,"basePath":654,"filePath":655,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":135,"number":656,"ownAudience":62,"audiences":657,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":658},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/04_backpropagation","04_backpropagation","Backpropagation","II.3.5.1.5 Backpropagation","Gradienten in neuronalen Netzen effizient berechnen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/04_backpropagation/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/04_backpropagation","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/04_backpropagation/de.md","II.3.5.1.5",[],[],{"key":660,"slug":661,"title":662,"cleanTitle":662,"numberedTitle":663,"description":664,"path":665,"basePath":666,"filePath":667,"pageType":32,"hidden":13,"effectiveHidden":13,"order":-4,"depth":135,"number":668,"ownAudience":62,"audiences":669,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":670},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/mathematischeranhang_diffrechnung","mathematischeranhang_diffrechnung","Mathematischer Anhang: Differentialrechnung","II.3.5.1.6 Mathematischer Anhang: Differentialrechnung","Unterseite zu Mathematischer Anhang: Differentialrechnung","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/mathematischeranhang_diffrechnung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/mathematischeranhang_diffrechnung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/01_gradientenbasierte_optimierung/mathematischeranhang_diffrechnung/de.md","II.3.5.1.6",[],[],{"key":672,"slug":673,"title":674,"cleanTitle":674,"numberedTitle":675,"description":676,"path":677,"basePath":678,"filePath":679,"pageType":58,"hidden":13,"effectiveHidden":13,"order":33,"depth":74,"number":680,"ownAudience":62,"audiences":681,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":682},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung","02_lineare_ausgleichsrechnung","Lineare Ausgleichsrechnung","II.3.5.2 Lineare Ausgleichsrechnung","Lineare Modelle so anpassen, dass Fehlerquadrate klein werden","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/de.md","II.3.5.2",[],[683,695,707,719,731],{"key":684,"slug":685,"title":686,"cleanTitle":686,"numberedTitle":687,"description":688,"path":689,"basePath":690,"filePath":691,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":135,"number":692,"ownAudience":62,"audiences":693,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":694},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/01_methode_der_kleinsten_quadrate","01_methode_der_kleinsten_quadrate","Methode der kleinsten Quadrate","II.3.5.2.1 Methode der kleinsten Quadrate","Eine Gerade oder Funktion möglichst passend an Daten legen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/01_methode_der_kleinsten_quadrate/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/01_methode_der_kleinsten_quadrate","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/01_methode_der_kleinsten_quadrate/de.md","II.3.5.2.1",[],[],{"key":696,"slug":697,"title":698,"cleanTitle":698,"numberedTitle":699,"description":700,"path":701,"basePath":702,"filePath":703,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":135,"number":704,"ownAudience":62,"audiences":705,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":706},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/02_normalengleichungen","02_normalengleichungen","Normalengleichungen","II.3.5.2.2 Normalengleichungen","Least-Squares-Probleme als lineares Gleichungssystem lösen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/02_normalengleichungen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/02_normalengleichungen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/02_normalengleichungen/de.md","II.3.5.2.2",[],[],{"key":708,"slug":709,"title":710,"cleanTitle":710,"numberedTitle":711,"description":712,"path":713,"basePath":714,"filePath":715,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":135,"number":716,"ownAudience":62,"audiences":717,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":718},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/03_qr_zerlegung","03_qr_zerlegung","QR-Zerlegung","II.3.5.2.3 QR-Zerlegung","Least-Squares-Probleme stabil mit orthogonalen Matrizen lösen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/03_qr_zerlegung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/03_qr_zerlegung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/03_qr_zerlegung/de.md","II.3.5.2.3",[],[],{"key":720,"slug":721,"title":722,"cleanTitle":722,"numberedTitle":723,"description":724,"path":725,"basePath":726,"filePath":727,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":135,"number":728,"ownAudience":62,"audiences":729,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":730},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/04_householder_transformationen","04_householder_transformationen","Householder-Transformationen","II.3.5.2.4 Householder-Transformationen","Spiegelungen als Bausteine stabiler Matrixzerlegungen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/04_householder_transformationen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/04_householder_transformationen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/04_householder_transformationen/de.md","II.3.5.2.4",[],[],{"key":732,"slug":733,"title":734,"cleanTitle":734,"numberedTitle":735,"description":736,"path":737,"basePath":738,"filePath":739,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":135,"number":740,"ownAudience":62,"audiences":741,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":742},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/05_regularisierung_ridge_lasso","05_regularisierung_ridge_lasso","Regularisierung: Ridge und Lasso","II.3.5.2.5 Regularisierung: Ridge und Lasso","Wie Ridge- und Lasso-Regression Least Squares erweitern","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/05_regularisierung_ridge_lasso/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/05_regularisierung_ridge_lasso","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/02_lineare_ausgleichsrechnung/05_regularisierung_ridge_lasso/de.md","II.3.5.2.5",[],[],{"key":744,"slug":745,"title":746,"cleanTitle":746,"numberedTitle":747,"description":748,"path":749,"basePath":750,"filePath":751,"pageType":58,"hidden":13,"effectiveHidden":13,"order":59,"depth":74,"number":752,"ownAudience":62,"audiences":753,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":754},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung","03_statistische_parameterschaetzung","Statistische Parameterschätzung","II.3.5.3 Statistische Parameterschätzung","Parameter als Erklärung für beobachtete Daten bestimmen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/de.md","II.3.5.3",[],[755,767,779,791,803],{"key":756,"slug":757,"title":758,"cleanTitle":758,"numberedTitle":759,"description":760,"path":761,"basePath":762,"filePath":763,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":135,"number":764,"ownAudience":62,"audiences":765,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":766},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/01_maximum_likelihood_schaetzung","01_maximum_likelihood_schaetzung","Maximum-Likelihood-Schätzung","II.3.5.3.1 Maximum-Likelihood-Schätzung","Parameter wählen, unter denen die beobachteten Daten möglichst wahrscheinlich sind","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/01_maximum_likelihood_schaetzung/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/01_maximum_likelihood_schaetzung","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/01_maximum_likelihood_schaetzung/de.md","II.3.5.3.1",[],[],{"key":768,"slug":769,"title":770,"cleanTitle":770,"numberedTitle":771,"description":772,"path":773,"basePath":774,"filePath":775,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":135,"number":776,"ownAudience":62,"audiences":777,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":778},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/02_latente_variablen","02_latente_variablen","Latente Variablen","II.3.5.3.2 Latente Variablen","Verborgene Größen in statistischen Modellen berücksichtigen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/02_latente_variablen/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/02_latente_variablen","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/02_latente_variablen/de.md","II.3.5.3.2",[],[],{"key":780,"slug":781,"title":782,"cleanTitle":782,"numberedTitle":783,"description":784,"path":785,"basePath":786,"filePath":787,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":135,"number":788,"ownAudience":62,"audiences":789,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":790},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/03_e_schritt","03_e_schritt","E-Schritt","II.3.5.3.3 E-Schritt","Erwartungen über verborgene Variablen berechnen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/03_e_schritt/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/03_e_schritt","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/03_e_schritt/de.md","II.3.5.3.3",[],[],{"key":792,"slug":793,"title":794,"cleanTitle":794,"numberedTitle":795,"description":796,"path":797,"basePath":798,"filePath":799,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":135,"number":800,"ownAudience":62,"audiences":801,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":802},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/04_m_schritt","04_m_schritt","M-Schritt","II.3.5.3.4 M-Schritt","Parameter anhand der erwarteten verborgenen Informationen verbessern","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/04_m_schritt/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/04_m_schritt","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/04_m_schritt/de.md","II.3.5.3.4",[],[],{"key":804,"slug":805,"title":806,"cleanTitle":806,"numberedTitle":807,"description":808,"path":809,"basePath":810,"filePath":811,"pageType":32,"hidden":13,"effectiveHidden":13,"order":135,"depth":135,"number":812,"ownAudience":62,"audiences":813,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":814},"08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/05_em_algorithmus","05_em_algorithmus","EM-Algorithmus","II.3.5.3.5 EM-Algorithmus","Abwechselnd verborgene Informationen und Parameter schätzen","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/05_em_algorithmus/de","/08_kuenstlicheintelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/05_em_algorithmus","content/08_KuenstlicheIntelligenz/02_supervisedlearning/05_verfahren_zur_modellanpassung/03_statistische_parameterschaetzung/05_em_algorithmus/de.md","II.3.5.3.5",[],[],{"key":816,"slug":817,"title":818,"cleanTitle":818,"numberedTitle":819,"description":820,"path":821,"basePath":822,"filePath":823,"pageType":32,"hidden":13,"effectiveHidden":13,"order":173,"depth":59,"number":824,"ownAudience":62,"audiences":825,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":826},"08_kuenstlicheintelligenz/02_supervisedlearning/modelzoo","modelzoo","Modell Zoo","II.3.6 Modell Zoo","Unterseite zu Modell Zoo","/08_kuenstlicheintelligenz/02_supervisedlearning/modelzoo/de","/08_kuenstlicheintelligenz/02_supervisedlearning/modelzoo","content/08_KuenstlicheIntelligenz/02_supervisedlearning/modelzoo/de.md","II.3.6",[],[],{"key":828,"slug":829,"title":830,"cleanTitle":830,"numberedTitle":831,"description":832,"path":833,"basePath":834,"filePath":835,"pageType":12,"hidden":13,"effectiveHidden":13,"order":74,"depth":33,"number":836,"ownAudience":62,"audiences":837,"coverDeLight":284,"coverEnLight":285,"coverDeDark":286,"coverEnDark":287,"children":838},"08_kuenstlicheintelligenz/05_unsupervisedlearning","05_unsupervisedlearning","Unüberwachtes Lernen","II.4 Unüberwachtes Lernen","Unterseite zu Unüberwachtem Lernen","/08_kuenstlicheintelligenz/05_unsupervisedlearning/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/de.md","II.4",[16],[839,851,863,875,937],{"key":840,"slug":841,"title":842,"cleanTitle":842,"numberedTitle":843,"description":844,"path":845,"basePath":846,"filePath":847,"pageType":58,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":848,"ownAudience":62,"audiences":849,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":850},"08_kuenstlicheintelligenz/05_unsupervisedlearning/anomalydetection","anomalydetection","Anomalieerkennung","II.4.1 Anomalieerkennung","Unterseite zu Anomalieerkennung","/08_kuenstlicheintelligenz/05_unsupervisedlearning/anomalydetection/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/anomalydetection","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/anomalydetection/de.md","II.4.1",[],[],{"key":852,"slug":853,"title":854,"cleanTitle":854,"numberedTitle":855,"description":856,"path":857,"basePath":858,"filePath":859,"pageType":58,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":860,"ownAudience":62,"audiences":861,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":862},"08_kuenstlicheintelligenz/05_unsupervisedlearning/associationrulelearning","associationrulelearning","Assoziationsregel-Lernen","II.4.2 Assoziationsregel-Lernen","Unterseite zu Assoziationsregel-Lernen","/08_kuenstlicheintelligenz/05_unsupervisedlearning/associationrulelearning/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/associationrulelearning","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/associationrulelearning/de.md","II.4.2",[],[],{"key":864,"slug":865,"title":866,"cleanTitle":866,"numberedTitle":867,"description":868,"path":869,"basePath":870,"filePath":871,"pageType":32,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":872,"ownAudience":62,"audiences":873,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":874},"08_kuenstlicheintelligenz/05_unsupervisedlearning/aufgabendesul","aufgabendesul","Aufgaben im Unsupervised Learning","II.4.3 Aufgaben im Unsupervised Learning","Unterseite zu Aufgaben im Unsupervised Learning","/08_kuenstlicheintelligenz/05_unsupervisedlearning/aufgabendesul/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/aufgabendesul","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/aufgabendesul/de.md","II.4.3",[],[],{"key":876,"slug":877,"title":878,"cleanTitle":878,"numberedTitle":879,"description":880,"path":881,"basePath":882,"filePath":883,"pageType":58,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":884,"ownAudience":62,"audiences":885,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":886},"08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering","clustering","Clustering","II.4.4 Clustering","Unterseite zu Clustering","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/clustering/de.md","II.4.4",[16],[887,899,911,924],{"key":888,"slug":889,"title":890,"cleanTitle":890,"numberedTitle":891,"description":892,"path":893,"basePath":894,"filePath":895,"pageType":32,"hidden":13,"effectiveHidden":13,"order":14,"depth":74,"number":896,"ownAudience":62,"audiences":897,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":898},"08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/dbscan","dbscan","DBSCAN","II.4.4.1 DBSCAN","Unterseite zu DBSCAN","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/dbscan/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/dbscan","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/clustering/dbscan/de.md","II.4.4.1",[],[],{"key":900,"slug":901,"title":902,"cleanTitle":902,"numberedTitle":903,"description":904,"path":905,"basePath":906,"filePath":907,"pageType":32,"hidden":13,"effectiveHidden":13,"order":33,"depth":74,"number":908,"ownAudience":62,"audiences":909,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":910},"08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/kmeans","kmeans","Das k-Means Verfahren","II.4.4.2 Das k-Means Verfahren","Unterseite zu Das k-Means Verfahren","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/kmeans/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/kmeans","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/clustering/kmeans/de.md","II.4.4.2",[],[],{"key":912,"slug":913,"title":914,"cleanTitle":915,"numberedTitle":916,"description":917,"path":918,"basePath":919,"filePath":920,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":74,"number":921,"ownAudience":16,"audiences":922,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":923},"08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/01-einfuehrung-kmeans","01-einfuehrung-kmeans","01-Einführung in K-Means Clustering","Einführung in K-Means Clustering","II.4.4.3 Einführung in K-Means Clustering","Grundlagen und interaktive Visualisierung des K-Means Algorithmus.","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/01-einfuehrung-kmeans/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/01-einfuehrung-kmeans","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/clustering/01-einfuehrung-kmeans/de.md","II.4.4.3",[16],[],{"key":925,"slug":926,"title":927,"cleanTitle":928,"numberedTitle":929,"description":930,"path":931,"basePath":932,"filePath":933,"pageType":32,"hidden":13,"effectiveHidden":13,"order":74,"depth":74,"number":934,"ownAudience":16,"audiences":935,"coverDeLight":18,"coverEnLight":19,"coverDeDark":20,"coverEnDark":21,"children":936},"08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/02-einfuehrung-dbscan","02-einfuehrung-dbscan","02-Einführung in DBSCAN Clustering","Einführung in DBSCAN Clustering","II.4.4.4 Einführung in DBSCAN Clustering","Grundlagen und interaktive Visualisierung des DBSCAN Algorithmus.","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/02-einfuehrung-dbscan/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/clustering/02-einfuehrung-dbscan","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/clustering/02-einfuehrung-dbscan/de.md","II.4.4.4",[16],[],{"key":938,"slug":939,"title":940,"cleanTitle":940,"numberedTitle":941,"description":942,"path":943,"basePath":944,"filePath":945,"pageType":58,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":946,"ownAudience":62,"audiences":947,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":948},"08_kuenstlicheintelligenz/05_unsupervisedlearning/dimensionalityreduction","dimensionalityreduction","Dimensionsreduktion","II.4.5 Dimensionsreduktion","Unterseite zu Dimensionsreduktion","/08_kuenstlicheintelligenz/05_unsupervisedlearning/dimensionalityreduction/de","/08_kuenstlicheintelligenz/05_unsupervisedlearning/dimensionalityreduction","content/08_KuenstlicheIntelligenz/05_unsupervisedlearning/dimensionalityreduction/de.md","II.4.5",[],[],{"key":950,"slug":951,"title":952,"cleanTitle":952,"numberedTitle":953,"description":954,"path":955,"basePath":956,"filePath":957,"pageType":12,"hidden":13,"effectiveHidden":13,"order":135,"depth":33,"number":958,"ownAudience":62,"audiences":959,"coverDeLight":284,"coverEnLight":285,"coverDeDark":286,"coverEnDark":287,"children":960},"08_kuenstlicheintelligenz/06_reinforcementlearning","06_reinforcementlearning","Verstärkendes Lernen","II.5 Verstärkendes Lernen","Unterseite zu Verstärkendes Lernen","/08_kuenstlicheintelligenz/06_reinforcementlearning/de","/08_kuenstlicheintelligenz/06_reinforcementlearning","content/08_KuenstlicheIntelligenz/06_reinforcementlearning/de.md","II.5",[16],[961,973,986],{"key":962,"slug":963,"title":964,"cleanTitle":964,"numberedTitle":965,"description":966,"path":967,"basePath":968,"filePath":969,"pageType":58,"hidden":13,"effectiveHidden":13,"order":14,"depth":59,"number":970,"ownAudience":62,"audiences":971,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":972},"08_kuenstlicheintelligenz/06_reinforcementlearning/rlfoundations","rlfoundations","Grundlagen des Reinforcement Learnings","II.5.1 Grundlagen des Reinforcement Learnings","Unterseite zu Grundlagen des Reinforcement Learnings","/08_kuenstlicheintelligenz/06_reinforcementlearning/rlfoundations/de","/08_kuenstlicheintelligenz/06_reinforcementlearning/rlfoundations","content/08_KuenstlicheIntelligenz/06_reinforcementlearning/rlfoundations/de.md","II.5.1",[],[],{"key":974,"slug":975,"title":976,"cleanTitle":977,"numberedTitle":978,"description":979,"path":980,"basePath":981,"filePath":982,"pageType":58,"hidden":13,"effectiveHidden":13,"order":33,"depth":59,"number":983,"ownAudience":16,"audiences":984,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":985},"08_kuenstlicheintelligenz/06_reinforcementlearning/02-werte-lernen","02-werte-lernen","02-Einführung in value-based Reinforcement Learning","Einführung in value-based Reinforcement Learning","II.5.2 Einführung in value-based Reinforcement Learning","Grundlagen und interaktive Visualisierung von Q-Learning für das NIM-Spiel.","/08_kuenstlicheintelligenz/06_reinforcementlearning/02-werte-lernen/de","/08_kuenstlicheintelligenz/06_reinforcementlearning/02-werte-lernen","content/08_KuenstlicheIntelligenz/06_reinforcementlearning/02-werte-lernen/de.md","II.5.2",[16],[],{"key":987,"slug":988,"title":989,"cleanTitle":990,"numberedTitle":991,"description":992,"path":993,"basePath":994,"filePath":995,"pageType":32,"hidden":13,"effectiveHidden":13,"order":59,"depth":59,"number":996,"ownAudience":16,"audiences":997,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":998},"08_kuenstlicheintelligenz/06_reinforcementlearning/01-strategien-lernen","01-strategien-lernen","01-Einführung in policy-based Reinforcement Learning","Einführung in policy-based Reinforcement Learning","II.5.3 Einführung in policy-based Reinforcement Learning","Grundlagen und interaktive Visualisierung einer Adaption von MENACE für das NIM-Spiel.","/08_kuenstlicheintelligenz/06_reinforcementlearning/01-strategien-lernen/de","/08_kuenstlicheintelligenz/06_reinforcementlearning/01-strategien-lernen","content/08_KuenstlicheIntelligenz/06_reinforcementlearning/01-strategien-lernen/de.md","II.5.3",[16],[],{"key":1000,"slug":1000,"title":1001,"cleanTitle":1001,"numberedTitle":1001,"description":62,"path":62,"basePath":1002,"filePath":62,"pageType":62,"hidden":13,"effectiveHidden":13,"order":-4,"depth":14,"number":62,"ownAudience":62,"audiences":1003,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1004},"_info","Info","/_info",[16],[1005,1016,1027,1038],{"key":1006,"slug":1007,"title":1008,"cleanTitle":1008,"numberedTitle":1008,"description":1009,"path":1010,"basePath":1011,"filePath":1012,"pageType":32,"hidden":13,"effectiveHidden":13,"order":1013,"depth":33,"number":62,"ownAudience":16,"audiences":1014,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1015},"_info/10_datenschutz","10_datenschutz","Datenschutzerklärung","Informationen zum Datenschutz und zur Verarbeitung personenbezogener Daten.","/_info/10_datenschutz/de","/_info/10_datenschutz","content/_Info/10_Datenschutz/de.md",10,[16],[],{"key":1017,"slug":1018,"title":1019,"cleanTitle":1019,"numberedTitle":1019,"description":1020,"path":1021,"basePath":1022,"filePath":1023,"pageType":32,"hidden":13,"effectiveHidden":13,"order":1024,"depth":33,"number":62,"ownAudience":16,"audiences":1025,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1026},"_info/11_impressum","11_impressum","Impressum","Impressum fuer das interaktive Buch.","/_info/11_impressum/de","/_info/11_impressum","content/_Info/11_Impressum/de.md",11,[16],[],{"key":1028,"slug":1029,"title":1030,"cleanTitle":1030,"numberedTitle":1030,"description":1031,"path":1032,"basePath":1033,"filePath":1034,"pageType":32,"hidden":13,"effectiveHidden":13,"order":1035,"depth":33,"number":62,"ownAudience":16,"audiences":1036,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1037},"_info/12_lizenzenunddrittanbieter","12_lizenzenunddrittanbieter","Lizenzen & Drittanbieter","Übersicht der verwendeten Open-Source-Komponenten, Lizenzen und Datenschutz-Hinweise.","/_info/12_lizenzenunddrittanbieter/de","/_info/12_lizenzenunddrittanbieter","content/_Info/12_LizenzenUndDrittanbieter/de.md",12,[16],[],{"key":1039,"slug":1040,"title":1041,"cleanTitle":1041,"numberedTitle":1041,"description":1042,"path":1043,"basePath":1044,"filePath":1045,"pageType":58,"hidden":13,"effectiveHidden":13,"order":1046,"depth":33,"number":62,"ownAudience":16,"audiences":1047,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1048},"_info/13_mailinglisteundnewsletter","13_mailinglisteundnewsletter","Mailingliste und Newsletter","Benachrichtigung über Neuigkeiten","/_info/13_mailinglisteundnewsletter/de","/_info/13_mailinglisteundnewsletter","content/_Info/13_MailingListeUndNewsLetter/de.md",13,[16],[1049,1061],{"key":1050,"slug":1051,"title":1052,"cleanTitle":1052,"numberedTitle":1053,"description":1054,"path":1055,"basePath":1056,"filePath":1057,"pageType":32,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":1058,"ownAudience":16,"audiences":1059,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1060},"_info/13_mailinglisteundnewsletter/ifk","ifk","Mailingliste Informatiklehrer Köln und Umgebung","1 Mailingliste Informatiklehrer Köln und Umgebung","Diskussion und Austausch in der weiteren Kölner Region","/_info/13_mailinglisteundnewsletter/ifk/de","/_info/13_mailinglisteundnewsletter/ifk","content/_Info/13_MailingListeUndNewsLetter/ifk/de.md","1",[16],[],{"key":1062,"slug":1063,"title":1064,"cleanTitle":1064,"numberedTitle":1065,"description":1066,"path":1067,"basePath":1068,"filePath":1069,"pageType":32,"hidden":13,"effectiveHidden":13,"order":-4,"depth":59,"number":1070,"ownAudience":16,"audiences":1071,"coverDeLight":62,"coverEnLight":62,"coverDeDark":62,"coverEnDark":62,"children":1072},"_info/13_mailinglisteundnewsletter/newsletter","newsletter","Newsletter","2 Newsletter","Anmeldung zum Newsletter","/_info/13_mailinglisteundnewsletter/newsletter/de","/_info/13_mailinglisteundnewsletter/newsletter","content/_Info/13_MailingListeUndNewsLetter/newsletter/de.md","2",[16],[],{"_path":232,"_dir":228,"_draft":13,"_partial":13,"_locale":62,"title":229,"description":231,"navigation":1074,"author":1075,"audience":16,"pageType":32,"order":14,"body":1076,"_type":3281,"_id":3282,"_source":32,"_file":3283,"_stem":3284,"_extension":3285},true,"HM_JDS",{"type":1077,"children":1078,"toc":3238},"root",[1079,1087,1093,1140,1147,1160,1166,1175,1183,1188,1310,1315,1375,1380,1386,1393,1427,1440,1445,1572,1577,1583,1588,1614,1619,1637,1643,1677,1682,1700,1706,1713,1720,1728,1736,1744,1752,1786,1831,1836,1854,1860,1867,1872,1878,1883,1938,1989,2000,2011,2029,2034,2106,2119,2124,2147,2152,2180,2186,2214,2219,2225,2294,2300,2343,2349,2354,2372,2377,2383,2388,2406,2411,2417,2422,2463,2468,2493,2498,2504,2510,2558,2564,2616,2622,2652,2657,2663,2682,2702,2707,2727,2732,2743,2753,2757,2802,2822,2834,2839,2871,2876,2882,2918,2923,2929,2934,2954,2959,2965,2993,2999,3004,3022,3027,3033,3038,3044,3049,3054,3077,3082,3090,3095,3101,3124,3129,3135,3140,3145,3167,3186,3192,3197,3203,3216,3222,3227,3232],{"type":1080,"tag":1081,"props":1082,"children":1084},"element","h1",{"id":1083},"uebungen-und-vertiefung",[1085],{"type":1086,"value":229},"text",{"type":1080,"tag":1088,"props":1089,"children":1090},"p",{},[1091],{"type":1086,"value":1092},"Dieses Kapitel basiert auf dem umfangreichen OOP-Uebungsblatt. Es ist als Trainingssammlung angelegt und verbindet mehrere fortgeschrittene Themen in einem Paket:",{"type":1080,"tag":1094,"props":1095,"children":1096},"ol",{},[1097,1103,1108,1113,1118],{"type":1080,"tag":1098,"props":1099,"children":1100},"li",{},[1101],{"type":1086,"value":1102},"Kovarianz von Arrays",{"type":1080,"tag":1098,"props":1104,"children":1105},{},[1106],{"type":1086,"value":1107},"Polymorphe Zuweisungen",{"type":1080,"tag":1098,"props":1109,"children":1110},{},[1111],{"type":1086,"value":1112},"Casts und Laufzeitfehler",{"type":1080,"tag":1098,"props":1114,"children":1115},{},[1116],{"type":1086,"value":1117},"statische Typisierung im Zusammenspiel mit Vererbung",{"type":1080,"tag":1098,"props":1119,"children":1120},{},[1121,1123,1130,1132,1138],{"type":1086,"value":1122},"Regeln zu ",{"type":1080,"tag":1124,"props":1125,"children":1127},"code",{"className":1126},[],[1128],{"type":1086,"value":1129},"static",{"type":1086,"value":1131},", ",{"type":1080,"tag":1124,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":1086,"value":1137},"protected",{"type":1086,"value":1139}," und Konstruktoren",{"type":1080,"tag":1141,"props":1142,"children":1144},"h2",{"id":1143},"themenfokus-des-arbeitsblatts",[1145],{"type":1086,"value":1146},"Themenfokus des Arbeitsblatts",{"type":1080,"tag":1088,"props":1148,"children":1149},{},[1150,1152,1158],{"type":1086,"value":1151},"Das Blatt ist bewusst kein einzelnes Theoriepapier, sondern eine Serie von Pruef- und Begruendungsaufgaben. Ziel ist nicht nur \"richtig/ falsch ankreuzen\", sondern ein belastbares Modell davon, ",{"type":1080,"tag":1153,"props":1154,"children":1155},"strong",{},[1156],{"type":1086,"value":1157},"warum",{"type":1086,"value":1159}," ein Ausdruck in Java erlaubt, verboten oder erst zur Laufzeit problematisch ist.",{"type":1080,"tag":1141,"props":1161,"children":1163},{"id":1162},"array-kovarianz-in-java",[1164],{"type":1086,"value":1165},"Array-Kovarianz in Java",{"type":1080,"tag":1088,"props":1167,"children":1168},{},[1169],{"type":1080,"tag":1170,"props":1171,"children":1174},"img",{"alt":1172,"src":1173},"Abbildung 1","./media/s01-pdf-obj057.png",[],{"type":1080,"tag":1088,"props":1176,"children":1177},{},[1178],{"type":1080,"tag":1170,"props":1179,"children":1182},{"alt":1180,"src":1181},"Abbildung 2","./media/s01-pdf-obj074.png",[],{"type":1080,"tag":1088,"props":1184,"children":1185},{},[1186],{"type":1086,"value":1187},"Ein Schluesselbeispiel aus dem Blatt:",{"type":1080,"tag":1189,"props":1190,"children":1194},"pre",{"className":1191,"code":1192,"language":1193,"meta":62,"style":62},"language-java shiki shiki-themes github-light github-dark","GeometrischeFigur[] figuren = new Kreis[10];\nfiguren[5] = new Rechteck(10, 20, 30);\n","java",[1195],{"type":1080,"tag":1124,"props":1196,"children":1197},{"__ignoreMap":62},[1198,1246],{"type":1080,"tag":1199,"props":1200,"children":1202},"span",{"class":1201,"line":14},"line",[1203,1209,1215,1220,1225,1230,1235,1241],{"type":1080,"tag":1199,"props":1204,"children":1206},{"style":1205},"--shiki-default:#D73A49;--shiki-dark:#F97583",[1207],{"type":1086,"value":1208},"GeometrischeFigur",{"type":1080,"tag":1199,"props":1210,"children":1212},{"style":1211},"--shiki-default:#24292E;--shiki-dark:#E1E4E8",[1213],{"type":1086,"value":1214},"[] figuren ",{"type":1080,"tag":1199,"props":1216,"children":1217},{"style":1205},[1218],{"type":1086,"value":1219},"=",{"type":1080,"tag":1199,"props":1221,"children":1222},{"style":1205},[1223],{"type":1086,"value":1224}," new",{"type":1080,"tag":1199,"props":1226,"children":1227},{"style":1205},[1228],{"type":1086,"value":1229}," Kreis",{"type":1080,"tag":1199,"props":1231,"children":1232},{"style":1211},[1233],{"type":1086,"value":1234},"[",{"type":1080,"tag":1199,"props":1236,"children":1238},{"style":1237},"--shiki-default:#005CC5;--shiki-dark:#79B8FF",[1239],{"type":1086,"value":1240},"10",{"type":1080,"tag":1199,"props":1242,"children":1243},{"style":1211},[1244],{"type":1086,"value":1245},"];\n",{"type":1080,"tag":1199,"props":1247,"children":1248},{"class":1201,"line":33},[1249,1254,1259,1264,1268,1272,1278,1283,1287,1291,1296,1300,1305],{"type":1080,"tag":1199,"props":1250,"children":1251},{"style":1211},[1252],{"type":1086,"value":1253},"figuren[",{"type":1080,"tag":1199,"props":1255,"children":1256},{"style":1237},[1257],{"type":1086,"value":1258},"5",{"type":1080,"tag":1199,"props":1260,"children":1261},{"style":1211},[1262],{"type":1086,"value":1263},"] ",{"type":1080,"tag":1199,"props":1265,"children":1266},{"style":1205},[1267],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1269,"children":1270},{"style":1205},[1271],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1273,"children":1275},{"style":1274},"--shiki-default:#6F42C1;--shiki-dark:#B392F0",[1276],{"type":1086,"value":1277}," Rechteck",{"type":1080,"tag":1199,"props":1279,"children":1280},{"style":1211},[1281],{"type":1086,"value":1282},"(",{"type":1080,"tag":1199,"props":1284,"children":1285},{"style":1237},[1286],{"type":1086,"value":1240},{"type":1080,"tag":1199,"props":1288,"children":1289},{"style":1211},[1290],{"type":1086,"value":1131},{"type":1080,"tag":1199,"props":1292,"children":1293},{"style":1237},[1294],{"type":1086,"value":1295},"20",{"type":1080,"tag":1199,"props":1297,"children":1298},{"style":1211},[1299],{"type":1086,"value":1131},{"type":1080,"tag":1199,"props":1301,"children":1302},{"style":1237},[1303],{"type":1086,"value":1304},"30",{"type":1080,"tag":1199,"props":1306,"children":1307},{"style":1211},[1308],{"type":1086,"value":1309},");\n",{"type":1080,"tag":1088,"props":1311,"children":1312},{},[1313],{"type":1086,"value":1314},"Warum kompiliert das, obwohl es spaeter krachen kann?",{"type":1080,"tag":1316,"props":1317,"children":1318},"ul",{},[1319,1338,1343,1355],{"type":1080,"tag":1098,"props":1320,"children":1321},{},[1322,1328,1330,1336],{"type":1080,"tag":1124,"props":1323,"children":1325},{"className":1324},[],[1326],{"type":1086,"value":1327},"Kreis[]",{"type":1086,"value":1329}," ist in Java ein Subtyp von ",{"type":1080,"tag":1124,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":1086,"value":1335},"GeometrischeFigur[]",{"type":1086,"value":1337}," (Kovarianz).",{"type":1080,"tag":1098,"props":1339,"children":1340},{},[1341],{"type":1086,"value":1342},"Der statische Typ der Referenz erlaubt also die Zuweisung.",{"type":1080,"tag":1098,"props":1344,"children":1345},{},[1346,1348,1353],{"type":1086,"value":1347},"Zur Laufzeit bleibt das echte Array aber ein ",{"type":1080,"tag":1124,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":1086,"value":1327},{"type":1086,"value":1354},".",{"type":1080,"tag":1098,"props":1356,"children":1357},{},[1358,1360,1366,1368,1374],{"type":1086,"value":1359},"Ein ",{"type":1080,"tag":1124,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":1086,"value":1365},"Rechteck",{"type":1086,"value":1367}," passt dort nicht hinein -> ",{"type":1080,"tag":1124,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":1086,"value":1373},"ArrayStoreException",{"type":1086,"value":1354},{"type":1080,"tag":1088,"props":1376,"children":1377},{},[1378],{"type":1086,"value":1379},"Das Beispiel zeigt sehr gut die Grenze zwischen Compile-Time-Typpruefung und Laufzeittyp.",{"type":1080,"tag":1141,"props":1381,"children":1383},{"id":1382},"polymorphe-zuweisungen-systematisch-pruefen",[1384],{"type":1086,"value":1385},"Polymorphe Zuweisungen systematisch pruefen",{"type":1080,"tag":1088,"props":1387,"children":1388},{},[1389],{"type":1080,"tag":1170,"props":1390,"children":1392},{"alt":1172,"src":1391},"./media/s01-pdf-obj109.jpg",[],{"type":1080,"tag":1088,"props":1394,"children":1395},{},[1396,1398,1404,1405,1411,1412,1418,1419,1425],{"type":1086,"value":1397},"Im Blatt werden Klassen wie ",{"type":1080,"tag":1124,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":1086,"value":1403},"Tier",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":1086,"value":1410},"Hund",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":1086,"value":1417},"Pudel",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":1086,"value":1424},"Katze",{"type":1086,"value":1426}," verwendet. Die Kernregel:",{"type":1080,"tag":1316,"props":1428,"children":1429},{},[1430,1435],{"type":1080,"tag":1098,"props":1431,"children":1432},{},[1433],{"type":1086,"value":1434},"Upcast (Subtyp -> Obertyp) ist ohne Cast erlaubt.",{"type":1080,"tag":1098,"props":1436,"children":1437},{},[1438],{"type":1086,"value":1439},"Downcast (Obertyp -> Subtyp) braucht Cast und kann zur Laufzeit fehlschlagen.",{"type":1080,"tag":1088,"props":1441,"children":1442},{},[1443],{"type":1086,"value":1444},"Beispiele:",{"type":1080,"tag":1189,"props":1446,"children":1448},{"className":1191,"code":1447,"language":1193,"meta":62,"style":62},"Tier t1 = new Hund();      // erlaubt\nTier t2 = new Pudel();     // erlaubt\nHund h = new Pudel();      // erlaubt\nKatze k = new Tier();      // nicht erlaubt ohne Cast (und fachlich unsicher)\n",[1449],{"type":1080,"tag":1124,"props":1450,"children":1451},{"__ignoreMap":62},[1452,1484,1514,1542],{"type":1080,"tag":1199,"props":1453,"children":1454},{"class":1201,"line":14},[1455,1460,1464,1468,1473,1478],{"type":1080,"tag":1199,"props":1456,"children":1457},{"style":1211},[1458],{"type":1086,"value":1459},"Tier t1 ",{"type":1080,"tag":1199,"props":1461,"children":1462},{"style":1205},[1463],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1465,"children":1466},{"style":1205},[1467],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1469,"children":1470},{"style":1274},[1471],{"type":1086,"value":1472}," Hund",{"type":1080,"tag":1199,"props":1474,"children":1475},{"style":1211},[1476],{"type":1086,"value":1477},"();      ",{"type":1080,"tag":1199,"props":1479,"children":1481},{"style":1480},"--shiki-default:#6A737D;--shiki-dark:#6A737D",[1482],{"type":1086,"value":1483},"// erlaubt\n",{"type":1080,"tag":1199,"props":1485,"children":1486},{"class":1201,"line":33},[1487,1492,1496,1500,1505,1510],{"type":1080,"tag":1199,"props":1488,"children":1489},{"style":1211},[1490],{"type":1086,"value":1491},"Tier t2 ",{"type":1080,"tag":1199,"props":1493,"children":1494},{"style":1205},[1495],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1497,"children":1498},{"style":1205},[1499],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1501,"children":1502},{"style":1274},[1503],{"type":1086,"value":1504}," Pudel",{"type":1080,"tag":1199,"props":1506,"children":1507},{"style":1211},[1508],{"type":1086,"value":1509},"();     ",{"type":1080,"tag":1199,"props":1511,"children":1512},{"style":1480},[1513],{"type":1086,"value":1483},{"type":1080,"tag":1199,"props":1515,"children":1516},{"class":1201,"line":59},[1517,1522,1526,1530,1534,1538],{"type":1080,"tag":1199,"props":1518,"children":1519},{"style":1211},[1520],{"type":1086,"value":1521},"Hund h ",{"type":1080,"tag":1199,"props":1523,"children":1524},{"style":1205},[1525],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1527,"children":1528},{"style":1205},[1529],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1531,"children":1532},{"style":1274},[1533],{"type":1086,"value":1504},{"type":1080,"tag":1199,"props":1535,"children":1536},{"style":1211},[1537],{"type":1086,"value":1477},{"type":1080,"tag":1199,"props":1539,"children":1540},{"style":1480},[1541],{"type":1086,"value":1483},{"type":1080,"tag":1199,"props":1543,"children":1544},{"class":1201,"line":74},[1545,1550,1554,1558,1563,1567],{"type":1080,"tag":1199,"props":1546,"children":1547},{"style":1211},[1548],{"type":1086,"value":1549},"Katze k ",{"type":1080,"tag":1199,"props":1551,"children":1552},{"style":1205},[1553],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1555,"children":1556},{"style":1205},[1557],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1559,"children":1560},{"style":1274},[1561],{"type":1086,"value":1562}," Tier",{"type":1080,"tag":1199,"props":1564,"children":1565},{"style":1211},[1566],{"type":1086,"value":1477},{"type":1080,"tag":1199,"props":1568,"children":1569},{"style":1480},[1570],{"type":1086,"value":1571},"// nicht erlaubt ohne Cast (und fachlich unsicher)\n",{"type":1080,"tag":1088,"props":1573,"children":1574},{},[1575],{"type":1086,"value":1576},"Das Blatt trainiert genau diese Zuordnungspruefung in vielen Varianten.",{"type":1080,"tag":1141,"props":1578,"children":1580},{"id":1579},"statischer-typ-vs-dynamischer-typ",[1581],{"type":1086,"value":1582},"Statischer Typ vs. dynamischer Typ",{"type":1080,"tag":1088,"props":1584,"children":1585},{},[1586],{"type":1086,"value":1587},"Merksatz (zentral fuer das ganze Arbeitsblatt):",{"type":1080,"tag":1316,"props":1589,"children":1590},{},[1591,1603],{"type":1080,"tag":1098,"props":1592,"children":1593},{},[1594,1596,1601],{"type":1086,"value":1595},"Der ",{"type":1080,"tag":1153,"props":1597,"children":1598},{},[1599],{"type":1086,"value":1600},"statische Typ",{"type":1086,"value":1602}," entscheidet, was der Compiler zulassen darf.",{"type":1080,"tag":1098,"props":1604,"children":1605},{},[1606,1607,1612],{"type":1086,"value":1595},{"type":1080,"tag":1153,"props":1608,"children":1609},{},[1610],{"type":1086,"value":1611},"dynamische Typ",{"type":1086,"value":1613}," entscheidet, was zur Laufzeit wirklich passiert.",{"type":1080,"tag":1088,"props":1615,"children":1616},{},[1617],{"type":1086,"value":1618},"Das gilt fuer:",{"type":1080,"tag":1316,"props":1620,"children":1621},{},[1622,1627,1632],{"type":1080,"tag":1098,"props":1623,"children":1624},{},[1625],{"type":1086,"value":1626},"Methodenaufrufaufloesung (Override)",{"type":1080,"tag":1098,"props":1628,"children":1629},{},[1630],{"type":1086,"value":1631},"gueltige Casts",{"type":1080,"tag":1098,"props":1633,"children":1634},{},[1635],{"type":1086,"value":1636},"Laufzeitfehler trotz erfolgreicher Kompilierung",{"type":1080,"tag":1141,"props":1638,"children":1640},{"id":1639},"aufgabenklasse-welche-beziehungen-muessen-zwischen-klassen-gelten",[1641],{"type":1086,"value":1642},"Aufgabenklasse: \"Welche Beziehungen muessen zwischen Klassen gelten?\"",{"type":1080,"tag":1088,"props":1644,"children":1645},{},[1646,1648,1654,1655,1661,1662,1668,1669,1675],{"type":1086,"value":1647},"Das Arbeitsblatt nutzt auch abstrakte Variablenmengen wie ",{"type":1080,"tag":1124,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":1086,"value":1653},"O",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1656,"children":1658},{"className":1657},[],[1659],{"type":1086,"value":1660},"X",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1663,"children":1665},{"className":1664},[],[1666],{"type":1086,"value":1667},"T",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":1086,"value":1674},"M",{"type":1086,"value":1676}," und gibt erlaubte/unerlaubte Zuweisungen vor. Daraus soll ein moegliches Klassendiagramm abgeleitet werden.",{"type":1080,"tag":1088,"props":1678,"children":1679},{},[1680],{"type":1086,"value":1681},"Warum ist das wertvoll?",{"type":1080,"tag":1316,"props":1683,"children":1684},{},[1685,1690,1695],{"type":1080,"tag":1098,"props":1686,"children":1687},{},[1688],{"type":1086,"value":1689},"Man denkt nicht nur in Syntax, sondern in Typgraphen.",{"type":1080,"tag":1098,"props":1691,"children":1692},{},[1693],{"type":1086,"value":1694},"Man trainiert Konsistenzbedingungen von Vererbung.",{"type":1080,"tag":1098,"props":1696,"children":1697},{},[1698],{"type":1086,"value":1699},"Man erkennt schneller, welche Zuweisungen strukturell unmoeglich sind.",{"type":1080,"tag":1141,"props":1701,"children":1703},{"id":1702},"polymorphie-plus-statische-typisierung-im-produktbeispiel",[1704],{"type":1086,"value":1705},"Polymorphie plus statische Typisierung im Produktbeispiel",{"type":1080,"tag":1088,"props":1707,"children":1708},{},[1709],{"type":1080,"tag":1170,"props":1710,"children":1712},{"alt":1172,"src":1711},"./media/s02-docx-image1.png",[],{"type":1080,"tag":1088,"props":1714,"children":1715},{},[1716],{"type":1080,"tag":1170,"props":1717,"children":1719},{"alt":1180,"src":1718},"./media/s02-docx-image2.svg",[],{"type":1080,"tag":1088,"props":1721,"children":1722},{},[1723],{"type":1080,"tag":1170,"props":1724,"children":1727},{"alt":1725,"src":1726},"Abbildung 3","./media/s02-docx-image6.png",[],{"type":1080,"tag":1088,"props":1729,"children":1730},{},[1731],{"type":1080,"tag":1170,"props":1732,"children":1735},{"alt":1733,"src":1734},"Abbildung 4","./media/s02-docx-image7.png",[],{"type":1080,"tag":1088,"props":1737,"children":1738},{},[1739],{"type":1080,"tag":1170,"props":1740,"children":1743},{"alt":1741,"src":1742},"Abbildung 5","./media/s02-docx-image8.svg",[],{"type":1080,"tag":1088,"props":1745,"children":1746},{},[1747],{"type":1080,"tag":1170,"props":1748,"children":1751},{"alt":1749,"src":1750},"Abbildung 6","./media/s02-docx-image9.jpeg",[],{"type":1080,"tag":1088,"props":1753,"children":1754},{},[1755,1757,1763,1764,1770,1771,1777,1778,1784],{"type":1086,"value":1756},"Im Blatt werden Typbeziehungen mit Klassen wie ",{"type":1080,"tag":1124,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":1086,"value":1762},"Produkt",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1765,"children":1767},{"className":1766},[],[1768],{"type":1086,"value":1769},"LebensmittelProdukt",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":1086,"value":1776},"Steak",{"type":1086,"value":1131},{"type":1080,"tag":1124,"props":1779,"children":1781},{"className":1780},[],[1782],{"type":1086,"value":1783},"Haushaltsgeraet",{"type":1086,"value":1785}," geprueft. Typische Fragen:",{"type":1080,"tag":1094,"props":1787,"children":1788},{},[1789,1802,1813,1818],{"type":1080,"tag":1098,"props":1790,"children":1791},{},[1792,1794,1800],{"type":1086,"value":1793},"Ist ",{"type":1080,"tag":1124,"props":1795,"children":1797},{"className":1796},[],[1798],{"type":1086,"value":1799},"Produkt p = steak;",{"type":1086,"value":1801}," erlaubt?",{"type":1080,"tag":1098,"props":1803,"children":1804},{},[1805,1806,1812],{"type":1086,"value":1793},{"type":1080,"tag":1124,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":1086,"value":1811},"Haushaltsgeraet h = steak;",{"type":1086,"value":1801},{"type":1080,"tag":1098,"props":1814,"children":1815},{},[1816],{"type":1086,"value":1817},"Ist ein Cast moeglich, kompilierbar, aber zur Laufzeit unsicher?",{"type":1080,"tag":1098,"props":1819,"children":1820},{},[1821,1823,1829],{"type":1086,"value":1822},"Wie verhaelt sich ",{"type":1080,"tag":1124,"props":1824,"children":1826},{"className":1825},[],[1827],{"type":1086,"value":1828},"null",{"type":1086,"value":1830}," in Typzuweisungen?",{"type":1080,"tag":1088,"props":1832,"children":1833},{},[1834],{"type":1086,"value":1835},"Besonders didaktisch stark ist dabei die Kombination aus:",{"type":1080,"tag":1316,"props":1837,"children":1838},{},[1839,1844,1849],{"type":1080,"tag":1098,"props":1840,"children":1841},{},[1842],{"type":1086,"value":1843},"direkten Zuweisungen",{"type":1080,"tag":1098,"props":1845,"children":1846},{},[1847],{"type":1086,"value":1848},"expliziten Casts",{"type":1080,"tag":1098,"props":1850,"children":1851},{},[1852],{"type":1086,"value":1853},"abstrakten Klassen (z. B. mit abstrakter Steuerberechnung)",{"type":1080,"tag":1141,"props":1855,"children":1857},{"id":1856},"regeln-fuer-casts",[1858],{"type":1086,"value":1859},"Regeln fuer Casts",{"type":1080,"tag":1861,"props":1862,"children":1864},"h3",{"id":1863},"kompilierbarkeit",[1865],{"type":1086,"value":1866},"Kompilierbarkeit",{"type":1080,"tag":1088,"props":1868,"children":1869},{},[1870],{"type":1086,"value":1871},"Ein Cast kann kompilieren, wenn aus Sicht des Typbaums eine Umwandlung denkbar ist.",{"type":1080,"tag":1861,"props":1873,"children":1875},{"id":1874},"laufzeitsicherheit",[1876],{"type":1086,"value":1877},"Laufzeitsicherheit",{"type":1080,"tag":1088,"props":1879,"children":1880},{},[1881],{"type":1086,"value":1882},"Ob der Cast wirklich funktioniert, haengt vom konkreten Objekt ab.",{"type":1080,"tag":1189,"props":1884,"children":1886},{"className":1191,"code":1885,"language":1193,"meta":62,"style":62},"Produkt p = new Steak(...);\nSteak s = (Steak) p; // sicher, wenn p wirklich auf Steak zeigt\n",[1887],{"type":1080,"tag":1124,"props":1888,"children":1889},{"__ignoreMap":62},[1890,1916],{"type":1080,"tag":1199,"props":1891,"children":1892},{"class":1201,"line":14},[1893,1898,1902,1906,1911],{"type":1080,"tag":1199,"props":1894,"children":1895},{"style":1211},[1896],{"type":1086,"value":1897},"Produkt p ",{"type":1080,"tag":1199,"props":1899,"children":1900},{"style":1205},[1901],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1903,"children":1904},{"style":1205},[1905],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1907,"children":1908},{"style":1274},[1909],{"type":1086,"value":1910}," Steak",{"type":1080,"tag":1199,"props":1912,"children":1913},{"style":1211},[1914],{"type":1086,"value":1915},"(...);\n",{"type":1080,"tag":1199,"props":1917,"children":1918},{"class":1201,"line":33},[1919,1924,1928,1933],{"type":1080,"tag":1199,"props":1920,"children":1921},{"style":1211},[1922],{"type":1086,"value":1923},"Steak s ",{"type":1080,"tag":1199,"props":1925,"children":1926},{"style":1205},[1927],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1929,"children":1930},{"style":1211},[1931],{"type":1086,"value":1932}," (Steak) p; ",{"type":1080,"tag":1199,"props":1934,"children":1935},{"style":1480},[1936],{"type":1086,"value":1937},"// sicher, wenn p wirklich auf Steak zeigt\n",{"type":1080,"tag":1189,"props":1939,"children":1941},{"className":1191,"code":1940,"language":1193,"meta":62,"style":62},"Produkt p = new Haushaltsgeraet(...);\nSteak s = (Steak) p; // kompiliert evtl., aber Laufzeitfehler\n",[1942],{"type":1080,"tag":1124,"props":1943,"children":1944},{"__ignoreMap":62},[1945,1969],{"type":1080,"tag":1199,"props":1946,"children":1947},{"class":1201,"line":14},[1948,1952,1956,1960,1965],{"type":1080,"tag":1199,"props":1949,"children":1950},{"style":1211},[1951],{"type":1086,"value":1897},{"type":1080,"tag":1199,"props":1953,"children":1954},{"style":1205},[1955],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1957,"children":1958},{"style":1205},[1959],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":1961,"children":1962},{"style":1274},[1963],{"type":1086,"value":1964}," Haushaltsgeraet",{"type":1080,"tag":1199,"props":1966,"children":1967},{"style":1211},[1968],{"type":1086,"value":1915},{"type":1080,"tag":1199,"props":1970,"children":1971},{"class":1201,"line":33},[1972,1976,1980,1984],{"type":1080,"tag":1199,"props":1973,"children":1974},{"style":1211},[1975],{"type":1086,"value":1923},{"type":1080,"tag":1199,"props":1977,"children":1978},{"style":1205},[1979],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":1981,"children":1982},{"style":1211},[1983],{"type":1086,"value":1932},{"type":1080,"tag":1199,"props":1985,"children":1986},{"style":1480},[1987],{"type":1086,"value":1988},"// kompiliert evtl., aber Laufzeitfehler\n",{"type":1080,"tag":1141,"props":1990,"children":1992},{"id":1991},"null-als-sonderfall",[1993,1998],{"type":1080,"tag":1124,"props":1994,"children":1996},{"className":1995},[],[1997],{"type":1086,"value":1828},{"type":1086,"value":1999}," als Sonderfall",{"type":1080,"tag":1088,"props":2001,"children":2002},{},[2003,2005,2010],{"type":1086,"value":2004},"Das Blatt enthaelt auch Aufgaben mit ",{"type":1080,"tag":1124,"props":2006,"children":2008},{"className":2007},[],[2009],{"type":1086,"value":1828},{"type":1086,"value":1354},{"type":1080,"tag":1316,"props":2012,"children":2013},{},[2014,2024],{"type":1080,"tag":1098,"props":2015,"children":2016},{},[2017,2022],{"type":1080,"tag":1124,"props":2018,"children":2020},{"className":2019},[],[2021],{"type":1086,"value":1828},{"type":1086,"value":2023}," kann fast jedem Referenztyp zugewiesen werden.",{"type":1080,"tag":1098,"props":2025,"children":2026},{},[2027],{"type":1086,"value":2028},"Daraus folgt nicht, dass ein Methodenaufruf sicher ist.",{"type":1080,"tag":1088,"props":2030,"children":2031},{},[2032],{"type":1086,"value":2033},"Beispiel:",{"type":1080,"tag":1189,"props":2035,"children":2037},{"className":1191,"code":2036,"language":1193,"meta":62,"style":62},"LebensmittelProdukt lmp = null;\nProdukt p = lmp; // erlaubt\np.toString();    // NullPointerException\n",[2038],{"type":1080,"tag":1124,"props":2039,"children":2040},{"__ignoreMap":62},[2041,2063,2083],{"type":1080,"tag":1199,"props":2042,"children":2043},{"class":1201,"line":14},[2044,2049,2053,2058],{"type":1080,"tag":1199,"props":2045,"children":2046},{"style":1211},[2047],{"type":1086,"value":2048},"LebensmittelProdukt lmp ",{"type":1080,"tag":1199,"props":2050,"children":2051},{"style":1205},[2052],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2054,"children":2055},{"style":1237},[2056],{"type":1086,"value":2057}," null",{"type":1080,"tag":1199,"props":2059,"children":2060},{"style":1211},[2061],{"type":1086,"value":2062},";\n",{"type":1080,"tag":1199,"props":2064,"children":2065},{"class":1201,"line":33},[2066,2070,2074,2079],{"type":1080,"tag":1199,"props":2067,"children":2068},{"style":1211},[2069],{"type":1086,"value":1897},{"type":1080,"tag":1199,"props":2071,"children":2072},{"style":1205},[2073],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2075,"children":2076},{"style":1211},[2077],{"type":1086,"value":2078}," lmp; ",{"type":1080,"tag":1199,"props":2080,"children":2081},{"style":1480},[2082],{"type":1086,"value":1483},{"type":1080,"tag":1199,"props":2084,"children":2085},{"class":1201,"line":59},[2086,2091,2096,2101],{"type":1080,"tag":1199,"props":2087,"children":2088},{"style":1211},[2089],{"type":1086,"value":2090},"p.",{"type":1080,"tag":1199,"props":2092,"children":2093},{"style":1274},[2094],{"type":1086,"value":2095},"toString",{"type":1080,"tag":1199,"props":2097,"children":2098},{"style":1211},[2099],{"type":1086,"value":2100},"();    ",{"type":1080,"tag":1199,"props":2102,"children":2103},{"style":1480},[2104],{"type":1086,"value":2105},"// NullPointerException\n",{"type":1080,"tag":1141,"props":2107,"children":2109},{"id":2108},"kurzer-block-zu-static-und-vererbung",[2110,2112,2117],{"type":1086,"value":2111},"Kurzer Block zu ",{"type":1080,"tag":1124,"props":2113,"children":2115},{"className":2114},[],[2116],{"type":1086,"value":1129},{"type":1086,"value":2118}," und Vererbung",{"type":1080,"tag":1088,"props":2120,"children":2121},{},[2122],{"type":1086,"value":2123},"Das Uebungsblatt prueft auch begriffliche Aussagen, z. B.:",{"type":1080,"tag":1316,"props":2125,"children":2126},{},[2127,2132,2142],{"type":1080,"tag":1098,"props":2128,"children":2129},{},[2130],{"type":1086,"value":2131},"Zugriff von nicht-statischen Methoden auf statische Variablen",{"type":1080,"tag":1098,"props":2133,"children":2134},{},[2135,2137],{"type":1086,"value":2136},"Sichtbarkeit von ",{"type":1080,"tag":1124,"props":2138,"children":2140},{"className":2139},[],[2141],{"type":1086,"value":1137},{"type":1080,"tag":1098,"props":2143,"children":2144},{},[2145],{"type":1086,"value":2146},"Konstruktoren und Vererbung",{"type":1080,"tag":1088,"props":2148,"children":2149},{},[2150],{"type":1086,"value":2151},"Wichtig fuer die Einordnung:",{"type":1080,"tag":1316,"props":2153,"children":2154},{},[2155,2160,2170],{"type":1080,"tag":1098,"props":2156,"children":2157},{},[2158],{"type":1086,"value":2159},"Konstruktoren werden nicht vererbt.",{"type":1080,"tag":1098,"props":2161,"children":2162},{},[2163,2168],{"type":1080,"tag":1124,"props":2164,"children":2166},{"className":2165},[],[2167],{"type":1086,"value":1129},{"type":1086,"value":2169},"-Member gehoeren zur Klasse, nicht zum Objekt.",{"type":1080,"tag":1098,"props":2171,"children":2172},{},[2173,2178],{"type":1080,"tag":1124,"props":2174,"children":2176},{"className":2175},[],[2177],{"type":1086,"value":1137},{"type":1086,"value":2179}," sichert Erweiterbarkeit in Subklassen.",{"type":1080,"tag":1141,"props":2181,"children":2183},{"id":2182},"loesestrategie-fuer-zuweisungsaufgaben",[2184],{"type":1086,"value":2185},"Loesestrategie fuer Zuweisungsaufgaben",{"type":1080,"tag":1094,"props":2187,"children":2188},{},[2189,2194,2199,2204,2209],{"type":1080,"tag":1098,"props":2190,"children":2191},{},[2192],{"type":1086,"value":2193},"Vererbungsbaum skizzieren.",{"type":1080,"tag":1098,"props":2195,"children":2196},{},[2197],{"type":1086,"value":2198},"Fuer jede Variable den statischen Typ notieren.",{"type":1080,"tag":1098,"props":2200,"children":2201},{},[2202],{"type":1086,"value":2203},"Rechte Seite auf konkreten Objekttyp pruefen.",{"type":1080,"tag":1098,"props":2205,"children":2206},{},[2207],{"type":1086,"value":2208},"Upcast/Downcast unterscheiden.",{"type":1080,"tag":1098,"props":2210,"children":2211},{},[2212],{"type":1086,"value":2213},"Bei Casts separate Laufzeitpruefung notieren.",{"type":1080,"tag":1088,"props":2215,"children":2216},{},[2217],{"type":1086,"value":2218},"Diese Methode reduziert Fehler deutlich.",{"type":1080,"tag":1141,"props":2220,"children":2222},{"id":2221},"typische-fehlannahmen",[2223],{"type":1086,"value":2224},"Typische Fehlannahmen",{"type":1080,"tag":1094,"props":2226,"children":2227},{},[2228,2238,2263,2273],{"type":1080,"tag":1098,"props":2229,"children":2230},{},[2231,2236],{"type":1080,"tag":1153,"props":2232,"children":2233},{},[2234],{"type":1086,"value":2235},"\"Wenn es kompiliert, ist es sicher\"",{"type":1086,"value":2237},"\nFalsch: Laufzeittypen koennen Casts oder Array-Zuweisungen brechen.",{"type":1080,"tag":1098,"props":2239,"children":2240},{},[2241,2254,2256,2261],{"type":1080,"tag":1153,"props":2242,"children":2243},{},[2244,2246,2252],{"type":1086,"value":2245},"\"",{"type":1080,"tag":1124,"props":2247,"children":2249},{"className":2248},[],[2250],{"type":1086,"value":2251},"==",{"type":1086,"value":2253}," prueft inhaltliche Gleichheit\"",{"type":1086,"value":2255},"\nBei Objekten und Arrays vergleicht ",{"type":1080,"tag":1124,"props":2257,"children":2259},{"className":2258},[],[2260],{"type":1086,"value":2251},{"type":1086,"value":2262}," Referenzen.",{"type":1080,"tag":1098,"props":2264,"children":2265},{},[2266,2271],{"type":1080,"tag":1153,"props":2267,"children":2268},{},[2269],{"type":1086,"value":2270},"\"Ein Cast macht ungueltige Objekte gueltig\"",{"type":1086,"value":2272},"\nEin Cast aendert nicht den realen Objekttyp.",{"type":1080,"tag":1098,"props":2274,"children":2275},{},[2276,2287,2292],{"type":1080,"tag":1153,"props":2277,"children":2278},{},[2279,2280,2285],{"type":1086,"value":2245},{"type":1080,"tag":1124,"props":2281,"children":2283},{"className":2282},[],[2284],{"type":1086,"value":1828},{"type":1086,"value":2286}," hat keinen Typ\"",{"type":1080,"tag":1124,"props":2288,"children":2290},{"className":2289},[],[2291],{"type":1086,"value":1828},{"type":1086,"value":2293}," ist typkompatibel mit Referenztypen, bleibt aber nicht aufrufbar.",{"type":1080,"tag":1141,"props":2295,"children":2297},{"id":2296},"vertiefungsaufgaben",[2298],{"type":1086,"value":2299},"Vertiefungsaufgaben",{"type":1080,"tag":1094,"props":2301,"children":2302},{},[2303,2308,2313,2325,2338],{"type":1080,"tag":1098,"props":2304,"children":2305},{},[2306],{"type":1086,"value":2307},"Baue eine kleine Tierhierarchie und pruefe 15 verschiedene Zuweisungen.",{"type":1080,"tag":1098,"props":2309,"children":2310},{},[2311],{"type":1086,"value":2312},"Erstelle gezielt zwei Casts, die kompilieren, aber zur Laufzeit scheitern.",{"type":1080,"tag":1098,"props":2314,"children":2315},{},[2316,2318,2323],{"type":1086,"value":2317},"Reproduziere eine ",{"type":1080,"tag":1124,"props":2319,"children":2321},{"className":2320},[],[2322],{"type":1086,"value":1373},{"type":1086,"value":2324}," mit einer kovarianten Arrayzuweisung.",{"type":1080,"tag":1098,"props":2326,"children":2327},{},[2328,2330,2336],{"type":1086,"value":2329},"Erstelle dieselbe Aufgabe mit ",{"type":1080,"tag":1124,"props":2331,"children":2333},{"className":2332},[],[2334],{"type":1086,"value":2335},"List\u003CT>",{"type":1086,"value":2337}," und vergleiche, warum Generics hier strenger sind.",{"type":1080,"tag":1098,"props":2339,"children":2340},{},[2341],{"type":1086,"value":2342},"Formuliere fuer jede Aufgabe den statischen und dynamischen Typ explizit.",{"type":1080,"tag":1141,"props":2344,"children":2346},{"id":2345},"zusammenfassung",[2347],{"type":1086,"value":2348},"Zusammenfassung",{"type":1080,"tag":1088,"props":2350,"children":2351},{},[2352],{"type":1086,"value":2353},"Das OOP-Uebungsblatt trainiert den Uebergang von \"Java schreiben\" zu \"Java begruenden\":",{"type":1080,"tag":1316,"props":2355,"children":2356},{},[2357,2362,2367],{"type":1080,"tag":1098,"props":2358,"children":2359},{},[2360],{"type":1086,"value":2361},"Typbeziehungen verstehen statt nur auswendig lernen",{"type":1080,"tag":1098,"props":2363,"children":2364},{},[2365],{"type":1086,"value":2366},"Compile-Time- und Runtime-Sicht sauber trennen",{"type":1080,"tag":1098,"props":2368,"children":2369},{},[2370],{"type":1086,"value":2371},"Zuweisungen, Casts und Polymorphie mit System pruefen",{"type":1080,"tag":1088,"props":2373,"children":2374},{},[2375],{"type":1086,"value":2376},"Damit wird die Grundlage gelegt, um spaetere Framework- oder API-Codebasen sicher zu lesen und zu erweitern.",{"type":1080,"tag":1141,"props":2378,"children":2380},{"id":2379},"systematik-fuer-zuweisungsfragen",[2381],{"type":1086,"value":2382},"Systematik fuer Zuweisungsfragen",{"type":1080,"tag":1088,"props":2384,"children":2385},{},[2386],{"type":1086,"value":2387},"Das Arbeitsblatt enthaelt viele Aussagen der Form \"Moeglich / Nicht moeglich\". Eine zuverlaessige Loesestrategie besteht aus drei Ebenen:",{"type":1080,"tag":1094,"props":2389,"children":2390},{},[2391,2396,2401],{"type":1080,"tag":1098,"props":2392,"children":2393},{},[2394],{"type":1086,"value":2395},"Kompiliert die Zuweisung?",{"type":1080,"tag":1098,"props":2397,"children":2398},{},[2399],{"type":1086,"value":2400},"Ist ggf. ein Cast notwendig?",{"type":1080,"tag":1098,"props":2402,"children":2403},{},[2404],{"type":1086,"value":2405},"Ist der Cast zur Laufzeit sicher?",{"type":1080,"tag":1088,"props":2407,"children":2408},{},[2409],{"type":1086,"value":2410},"Diese Trennung verhindert, dass Compile-Time- und Runtime-Regeln vermischt werden.",{"type":1080,"tag":1141,"props":2412,"children":2414},{"id":2413},"typbaum-als-pflichtwerkzeug",[2415],{"type":1086,"value":2416},"Typbaum als Pflichtwerkzeug",{"type":1080,"tag":1088,"props":2418,"children":2419},{},[2420],{"type":1086,"value":2421},"Vor jeder Beurteilung sollte ein Typbaum gezeichnet werden. Beispiel:",{"type":1080,"tag":1316,"props":2423,"children":2424},{},[2425],{"type":1080,"tag":1098,"props":2426,"children":2427},{},[2428,2433],{"type":1080,"tag":1124,"props":2429,"children":2431},{"className":2430},[],[2432],{"type":1086,"value":1403},{"type":1080,"tag":1316,"props":2434,"children":2435},{},[2436,2455],{"type":1080,"tag":1098,"props":2437,"children":2438},{},[2439,2444],{"type":1080,"tag":1124,"props":2440,"children":2442},{"className":2441},[],[2443],{"type":1086,"value":1410},{"type":1080,"tag":1316,"props":2445,"children":2446},{},[2447],{"type":1080,"tag":1098,"props":2448,"children":2449},{},[2450],{"type":1080,"tag":1124,"props":2451,"children":2453},{"className":2452},[],[2454],{"type":1086,"value":1417},{"type":1080,"tag":1098,"props":2456,"children":2457},{},[2458],{"type":1080,"tag":1124,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":1086,"value":1424},{"type":1080,"tag":1088,"props":2464,"children":2465},{},[2466],{"type":1086,"value":2467},"Dann lassen sich Aussagen schnell pruefen:",{"type":1080,"tag":1316,"props":2469,"children":2470},{},[2471,2482],{"type":1080,"tag":1098,"props":2472,"children":2473},{},[2474,2480],{"type":1080,"tag":1124,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":1086,"value":2479},"Tier t = new Hund();",{"type":1086,"value":2481}," -> Upcast, erlaubt",{"type":1080,"tag":1098,"props":2483,"children":2484},{},[2485,2491],{"type":1080,"tag":1124,"props":2486,"children":2488},{"className":2487},[],[2489],{"type":1086,"value":2490},"Hund h = (Hund) t;",{"type":1086,"value":2492}," -> Downcast, nur sicher wenn Objekt wirklich Hund/Pudel ist",{"type":1080,"tag":1088,"props":2494,"children":2495},{},[2496],{"type":1086,"value":2497},"Ohne diesen Typbaum entstehen in Aufgaben mit vielen Variablen schnell Denkfehler.",{"type":1080,"tag":1141,"props":2499,"children":2501},{"id":2500},"compile-time-vs-runtime-an-beispielen",[2502],{"type":1086,"value":2503},"Compile-Time vs Runtime an Beispielen",{"type":1080,"tag":1861,"props":2505,"children":2507},{"id":2506},"kompilierbar-und-sicher",[2508],{"type":1086,"value":2509},"Kompilierbar und sicher",{"type":1080,"tag":1189,"props":2511,"children":2513},{"className":1191,"code":2512,"language":1193,"meta":62,"style":62},"Tier t = new Pudel();\nHund h = (Hund) t;\n",[2514],{"type":1080,"tag":1124,"props":2515,"children":2516},{"__ignoreMap":62},[2517,2542],{"type":1080,"tag":1199,"props":2518,"children":2519},{"class":1201,"line":14},[2520,2525,2529,2533,2537],{"type":1080,"tag":1199,"props":2521,"children":2522},{"style":1211},[2523],{"type":1086,"value":2524},"Tier t ",{"type":1080,"tag":1199,"props":2526,"children":2527},{"style":1205},[2528],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2530,"children":2531},{"style":1205},[2532],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":2534,"children":2535},{"style":1274},[2536],{"type":1086,"value":1504},{"type":1080,"tag":1199,"props":2538,"children":2539},{"style":1211},[2540],{"type":1086,"value":2541},"();\n",{"type":1080,"tag":1199,"props":2543,"children":2544},{"class":1201,"line":33},[2545,2549,2553],{"type":1080,"tag":1199,"props":2546,"children":2547},{"style":1211},[2548],{"type":1086,"value":1521},{"type":1080,"tag":1199,"props":2550,"children":2551},{"style":1205},[2552],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2554,"children":2555},{"style":1211},[2556],{"type":1086,"value":2557}," (Hund) t;\n",{"type":1080,"tag":1861,"props":2559,"children":2561},{"id":2560},"kompilierbar-aber-riskant",[2562],{"type":1086,"value":2563},"Kompilierbar, aber riskant",{"type":1080,"tag":1189,"props":2565,"children":2567},{"className":1191,"code":2566,"language":1193,"meta":62,"style":62},"Tier t = new Katze();\nHund h = (Hund) t; // Laufzeitfehler\n",[2568],{"type":1080,"tag":1124,"props":2569,"children":2570},{"__ignoreMap":62},[2571,2595],{"type":1080,"tag":1199,"props":2572,"children":2573},{"class":1201,"line":14},[2574,2578,2582,2586,2591],{"type":1080,"tag":1199,"props":2575,"children":2576},{"style":1211},[2577],{"type":1086,"value":2524},{"type":1080,"tag":1199,"props":2579,"children":2580},{"style":1205},[2581],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2583,"children":2584},{"style":1205},[2585],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":2587,"children":2588},{"style":1274},[2589],{"type":1086,"value":2590}," Katze",{"type":1080,"tag":1199,"props":2592,"children":2593},{"style":1211},[2594],{"type":1086,"value":2541},{"type":1080,"tag":1199,"props":2596,"children":2597},{"class":1201,"line":33},[2598,2602,2606,2611],{"type":1080,"tag":1199,"props":2599,"children":2600},{"style":1211},[2601],{"type":1086,"value":1521},{"type":1080,"tag":1199,"props":2603,"children":2604},{"style":1205},[2605],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2607,"children":2608},{"style":1211},[2609],{"type":1086,"value":2610}," (Hund) t; ",{"type":1080,"tag":1199,"props":2612,"children":2613},{"style":1480},[2614],{"type":1086,"value":2615},"// Laufzeitfehler\n",{"type":1080,"tag":1861,"props":2617,"children":2619},{"id":2618},"nicht-kompilierbar",[2620],{"type":1086,"value":2621},"Nicht kompilierbar",{"type":1080,"tag":1189,"props":2623,"children":2625},{"className":1191,"code":2624,"language":1193,"meta":62,"style":62},"Katze k = new Tier();\n",[2626],{"type":1080,"tag":1124,"props":2627,"children":2628},{"__ignoreMap":62},[2629],{"type":1080,"tag":1199,"props":2630,"children":2631},{"class":1201,"line":14},[2632,2636,2640,2644,2648],{"type":1080,"tag":1199,"props":2633,"children":2634},{"style":1211},[2635],{"type":1086,"value":1549},{"type":1080,"tag":1199,"props":2637,"children":2638},{"style":1205},[2639],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2641,"children":2642},{"style":1205},[2643],{"type":1086,"value":1224},{"type":1080,"tag":1199,"props":2645,"children":2646},{"style":1274},[2647],{"type":1086,"value":1562},{"type":1080,"tag":1199,"props":2649,"children":2650},{"style":1211},[2651],{"type":1086,"value":2541},{"type":1080,"tag":1088,"props":2653,"children":2654},{},[2655],{"type":1086,"value":2656},"Das Blatt trainiert genau diese Unterschiede in mehreren Aufgabenvarianten.",{"type":1080,"tag":1141,"props":2658,"children":2660},{"id":2659},"kovarianz-bei-arrays-kritisch-einordnen",[2661],{"type":1086,"value":2662},"Kovarianz bei Arrays kritisch einordnen",{"type":1080,"tag":1088,"props":2664,"children":2665},{},[2666,2668,2673,2675,2680],{"type":1086,"value":2667},"Die Array-Kovarianz ist historisch vorhanden, aber nicht voll typsicher. Das Blattbeispiel mit ",{"type":1080,"tag":1124,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":1086,"value":1335},{"type":1086,"value":2674}," und ",{"type":1080,"tag":1124,"props":2676,"children":2678},{"className":2677},[],[2679],{"type":1086,"value":1327},{"type":1086,"value":2681}," zeigt den klassischen Zielkonflikt:",{"type":1080,"tag":1316,"props":2683,"children":2684},{},[2685,2690],{"type":1080,"tag":1098,"props":2686,"children":2687},{},[2688],{"type":1086,"value":2689},"Flexibilitaet bei Zuweisungen",{"type":1080,"tag":1098,"props":2691,"children":2692},{},[2693,2695,2700],{"type":1086,"value":2694},"moegliche ",{"type":1080,"tag":1124,"props":2696,"children":2698},{"className":2697},[],[2699],{"type":1086,"value":1373},{"type":1086,"value":2701}," zur Laufzeit",{"type":1080,"tag":1088,"props":2703,"children":2704},{},[2705],{"type":1086,"value":2706},"Didaktischer Vergleich:",{"type":1080,"tag":1316,"props":2708,"children":2709},{},[2710,2715],{"type":1080,"tag":1098,"props":2711,"children":2712},{},[2713],{"type":1086,"value":2714},"Arrays sind kovariant.",{"type":1080,"tag":1098,"props":2716,"children":2717},{},[2718,2720,2725],{"type":1086,"value":2719},"Generics (",{"type":1080,"tag":1124,"props":2721,"children":2723},{"className":2722},[],[2724],{"type":1086,"value":2335},{"type":1086,"value":2726},") sind invariant und dadurch strenger.",{"type":1080,"tag":1088,"props":2728,"children":2729},{},[2730],{"type":1086,"value":2731},"Dieser Vergleich hilft, moderne Java-API-Entscheidungen besser zu verstehen.",{"type":1080,"tag":1141,"props":2733,"children":2735},{"id":2734},"null-in-typaufgaben-sauber-behandeln",[2736,2741],{"type":1080,"tag":1124,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":1086,"value":1828},{"type":1086,"value":2742}," in Typaufgaben sauber behandeln",{"type":1080,"tag":1088,"props":2744,"children":2745},{},[2746,2751],{"type":1080,"tag":1124,"props":2747,"children":2749},{"className":2748},[],[2750],{"type":1086,"value":1828},{"type":1086,"value":2752}," ist bei Referenztypen meist zuweisbar. Das bedeutet aber nur Typkompatibilitaet, nicht Nutzbarkeit.",{"type":1080,"tag":1088,"props":2754,"children":2755},{},[2756],{"type":1086,"value":2033},{"type":1080,"tag":1189,"props":2758,"children":2760},{"className":1191,"code":2759,"language":1193,"meta":62,"style":62},"LebensmittelProdukt lmp = null;\nProdukt p = lmp; // erlaubt\n",[2761],{"type":1080,"tag":1124,"props":2762,"children":2763},{"__ignoreMap":62},[2764,2783],{"type":1080,"tag":1199,"props":2765,"children":2766},{"class":1201,"line":14},[2767,2771,2775,2779],{"type":1080,"tag":1199,"props":2768,"children":2769},{"style":1211},[2770],{"type":1086,"value":2048},{"type":1080,"tag":1199,"props":2772,"children":2773},{"style":1205},[2774],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2776,"children":2777},{"style":1237},[2778],{"type":1086,"value":2057},{"type":1080,"tag":1199,"props":2780,"children":2781},{"style":1211},[2782],{"type":1086,"value":2062},{"type":1080,"tag":1199,"props":2784,"children":2785},{"class":1201,"line":33},[2786,2790,2794,2798],{"type":1080,"tag":1199,"props":2787,"children":2788},{"style":1211},[2789],{"type":1086,"value":1897},{"type":1080,"tag":1199,"props":2791,"children":2792},{"style":1205},[2793],{"type":1086,"value":1219},{"type":1080,"tag":1199,"props":2795,"children":2796},{"style":1211},[2797],{"type":1086,"value":2078},{"type":1080,"tag":1199,"props":2799,"children":2800},{"style":1480},[2801],{"type":1086,"value":1483},{"type":1080,"tag":1088,"props":2803,"children":2804},{},[2805,2807,2812,2814,2820],{"type":1086,"value":2806},"Danach bleibt jeder Methodenaufruf auf ",{"type":1080,"tag":1124,"props":2808,"children":2810},{"className":2809},[],[2811],{"type":1086,"value":1088},{"type":1086,"value":2813}," potentiell gefaehrlich, solange ",{"type":1080,"tag":1124,"props":2815,"children":2817},{"className":2816},[],[2818],{"type":1086,"value":2819},"p == null",{"type":1086,"value":2821}," nicht geprueft wurde.",{"type":1080,"tag":1141,"props":2823,"children":2825},{"id":2824},"aufgaben-zu-static-und-vererbung",[2826,2828,2833],{"type":1086,"value":2827},"Aufgaben zu ",{"type":1080,"tag":1124,"props":2829,"children":2831},{"className":2830},[],[2832],{"type":1086,"value":1129},{"type":1086,"value":2118},{"type":1080,"tag":1088,"props":2835,"children":2836},{},[2837],{"type":1086,"value":2838},"Das Blatt kombiniert Polymorphie mit Aussagen zu Klassenvariablen und Methodenregeln. Wichtige Klarstellungen:",{"type":1080,"tag":1094,"props":2840,"children":2841},{},[2842,2852,2857,2861],{"type":1080,"tag":1098,"props":2843,"children":2844},{},[2845,2850],{"type":1080,"tag":1124,"props":2846,"children":2848},{"className":2847},[],[2849],{"type":1086,"value":1129},{"type":1086,"value":2851},"-Member gehoeren der Klasse.",{"type":1080,"tag":1098,"props":2853,"children":2854},{},[2855],{"type":1086,"value":2856},"Nicht-statische Methoden koennen auf statische Member zugreifen.",{"type":1080,"tag":1098,"props":2858,"children":2859},{},[2860],{"type":1086,"value":2159},{"type":1080,"tag":1098,"props":2862,"children":2863},{},[2864,2869],{"type":1080,"tag":1124,"props":2865,"children":2867},{"className":2866},[],[2868],{"type":1086,"value":1137},{"type":1086,"value":2870}," dient Erweiterbarkeit in Subklassen.",{"type":1080,"tag":1088,"props":2872,"children":2873},{},[2874],{"type":1086,"value":2875},"Diese Aussagen sollten immer zusammen mit konkreten Codebeispielen geuebt werden.",{"type":1080,"tag":1141,"props":2877,"children":2879},{"id":2878},"uebungsformat-fuer-partnerarbeit",[2880],{"type":1086,"value":2881},"Uebungsformat fuer Partnerarbeit",{"type":1080,"tag":1094,"props":2883,"children":2884},{},[2885,2890,2913],{"type":1080,"tag":1098,"props":2886,"children":2887},{},[2888],{"type":1086,"value":2889},"Jede Gruppe bekommt 12 Zuweisungen.",{"type":1080,"tag":1098,"props":2891,"children":2892},{},[2893,2895],{"type":1086,"value":2894},"Fuer jede Zuweisung werden drei Spalten ausgefuellt:\n",{"type":1080,"tag":1316,"props":2896,"children":2897},{},[2898,2903,2908],{"type":1080,"tag":1098,"props":2899,"children":2900},{},[2901],{"type":1086,"value":2902},"kompiliert",{"type":1080,"tag":1098,"props":2904,"children":2905},{},[2906],{"type":1086,"value":2907},"Cast noetig",{"type":1080,"tag":1098,"props":2909,"children":2910},{},[2911],{"type":1086,"value":2912},"Laufzeitsicher",{"type":1080,"tag":1098,"props":2914,"children":2915},{},[2916],{"type":1086,"value":2917},"Danach Gegencheck mit anderer Gruppe.",{"type":1080,"tag":1088,"props":2919,"children":2920},{},[2921],{"type":1086,"value":2922},"So wird aus Ankreuzwissen eine begruendete Typanalyse.",{"type":1080,"tag":1141,"props":2924,"children":2926},{"id":2925},"laufzeitfehler-reproduzierbar-demonstrieren",[2927],{"type":1086,"value":2928},"Laufzeitfehler reproduzierbar demonstrieren",{"type":1080,"tag":1088,"props":2930,"children":2931},{},[2932],{"type":1086,"value":2933},"Ein wichtiger Lernschritt ist bewusstes Reproduzieren von Fehlern:",{"type":1080,"tag":1316,"props":2935,"children":2936},{},[2937,2946],{"type":1080,"tag":1098,"props":2938,"children":2939},{},[2940],{"type":1080,"tag":1124,"props":2941,"children":2943},{"className":2942},[],[2944],{"type":1086,"value":2945},"ClassCastException",{"type":1080,"tag":1098,"props":2947,"children":2948},{},[2949],{"type":1080,"tag":1124,"props":2950,"children":2952},{"className":2951},[],[2953],{"type":1086,"value":1373},{"type":1080,"tag":1088,"props":2955,"children":2956},{},[2957],{"type":1086,"value":2958},"Wenn Lernende diese Fehler einmal selbst provozieren und erklaeren, verankern sich die Regeln deutlich besser als durch reine Theorie.",{"type":1080,"tag":1141,"props":2960,"children":2962},{"id":2961},"bewertungsraster-fuer-oop-ii-uebungen",[2963],{"type":1086,"value":2964},"Bewertungsraster fuer OOP-II-Uebungen",{"type":1080,"tag":1094,"props":2966,"children":2967},{},[2968,2973,2978,2983,2988],{"type":1080,"tag":1098,"props":2969,"children":2970},{},[2971],{"type":1086,"value":2972},"Typbeziehungen korrekt dargestellt.",{"type":1080,"tag":1098,"props":2974,"children":2975},{},[2976],{"type":1086,"value":2977},"Zuweisungen korrekt klassifiziert.",{"type":1080,"tag":1098,"props":2979,"children":2980},{},[2981],{"type":1086,"value":2982},"Cast-Risiken erkannt.",{"type":1080,"tag":1098,"props":2984,"children":2985},{},[2986],{"type":1086,"value":2987},"Runtime-Fehler plausibel begruendet.",{"type":1080,"tag":1098,"props":2989,"children":2990},{},[2991],{"type":1086,"value":2992},"Begriffe (Upcast, Downcast, Kovarianz) korrekt verwendet.",{"type":1080,"tag":1141,"props":2994,"children":2996},{"id":2995},"transfer-in-reale-codebasen",[2997],{"type":1086,"value":2998},"Transfer in reale Codebasen",{"type":1080,"tag":1088,"props":3000,"children":3001},{},[3002],{"type":1086,"value":3003},"In Produktivcode tauchen dieselben Fragen auf, nur mit mehr Klassen:",{"type":1080,"tag":1316,"props":3005,"children":3006},{},[3007,3012,3017],{"type":1080,"tag":1098,"props":3008,"children":3009},{},[3010],{"type":1086,"value":3011},"API liefert Obertyp, konkrete Untertypen werden zur Laufzeit unterschieden.",{"type":1080,"tag":1098,"props":3013,"children":3014},{},[3015],{"type":1086,"value":3016},"Falsche Castannahmen fuehren zu sporadischen Laufzeitfehlern.",{"type":1080,"tag":1098,"props":3018,"children":3019},{},[3020],{"type":1086,"value":3021},"Unscharfe Typmodelle erschweren Wartung.",{"type":1080,"tag":1088,"props":3023,"children":3024},{},[3025],{"type":1086,"value":3026},"Das Blatt bereitet genau auf diese Situationen vor.",{"type":1080,"tag":1141,"props":3028,"children":3030},{"id":3029},"abschluss-der-vertiefung",[3031],{"type":1086,"value":3032},"Abschluss der Vertiefung",{"type":1080,"tag":1088,"props":3034,"children":3035},{},[3036],{"type":1086,"value":3037},"Die Uebungsseite ist ein Kernkapitel fuer Typsicherheit in Java. Wer die dort trainierten Zuweisungs- und Castregeln wirklich beherrscht, kann polymorphen Code nicht nur schreiben, sondern auch korrekt analysieren und debuggen.",{"type":1080,"tag":1141,"props":3039,"children":3041},{"id":3040},"abschlussserie-zu-typbeziehungen",[3042],{"type":1086,"value":3043},"Abschlussserie zu Typbeziehungen",{"type":1080,"tag":1088,"props":3045,"children":3046},{},[3047],{"type":1086,"value":3048},"Zeichne fuer eine eigene Klassenhierarchie (mindestens 5 Klassen) einen Typbaum und pruefe 20 Zuweisungen.",{"type":1080,"tag":1088,"props":3050,"children":3051},{},[3052],{"type":1086,"value":3053},"Pro Zuweisung dokumentieren:",{"type":1080,"tag":1094,"props":3055,"children":3056},{},[3057,3062,3067,3072],{"type":1080,"tag":1098,"props":3058,"children":3059},{},[3060],{"type":1086,"value":3061},"kompiliert ja/nein",{"type":1080,"tag":1098,"props":3063,"children":3064},{},[3065],{"type":1086,"value":3066},"Cast noetig ja/nein",{"type":1080,"tag":1098,"props":3068,"children":3069},{},[3070],{"type":1086,"value":3071},"Laufzeitsicher ja/nein",{"type":1080,"tag":1098,"props":3073,"children":3074},{},[3075],{"type":1086,"value":3076},"kurze Begruendung",{"type":1080,"tag":1088,"props":3078,"children":3079},{},[3080],{"type":1086,"value":3081},"Bonus:",{"type":1080,"tag":1316,"props":3083,"children":3084},{},[3085],{"type":1080,"tag":1098,"props":3086,"children":3087},{},[3088],{"type":1086,"value":3089},"Baue bewusst zwei Beispiele ein, die kompilieren, aber zur Laufzeit scheitern.",{"type":1080,"tag":1088,"props":3091,"children":3092},{},[3093],{"type":1086,"value":3094},"Diese Serie trainiert exakt die Kompetenz, die das Uebungsblatt in vielen Einzelaufgaben aufbaut.",{"type":1080,"tag":1141,"props":3096,"children":3098},{"id":3097},"pruefungsnahe-kurzfragen",[3099],{"type":1086,"value":3100},"Pruefungsnahe Kurzfragen",{"type":1080,"tag":1094,"props":3102,"children":3103},{},[3104,3109,3114,3119],{"type":1080,"tag":1098,"props":3105,"children":3106},{},[3107],{"type":1086,"value":3108},"Was unterscheidet statischen von dynamischem Typ?",{"type":1080,"tag":1098,"props":3110,"children":3111},{},[3112],{"type":1086,"value":3113},"Wann ist ein Downcast syntaktisch erlaubt, aber gefaehrlich?",{"type":1080,"tag":1098,"props":3115,"children":3116},{},[3117],{"type":1086,"value":3118},"Warum kann Array-Kovarianz zu Laufzeitfehlern fuehren?",{"type":1080,"tag":1098,"props":3120,"children":3121},{},[3122],{"type":1086,"value":3123},"Welche Information benoetigst du, um die Sicherheit eines Casts zu beurteilen?",{"type":1080,"tag":1088,"props":3125,"children":3126},{},[3127],{"type":1086,"value":3128},"Diese Fragen verdichten die Kernideen der gesamten Uebungsseite.",{"type":1080,"tag":1141,"props":3130,"children":3132},{"id":3131},"weiterfuehrende-praxisaufgabe",[3133],{"type":1086,"value":3134},"Weiterfuehrende Praxisaufgabe",{"type":1080,"tag":1088,"props":3136,"children":3137},{},[3138],{"type":1086,"value":3139},"Erstelle ein eigenes Mini-Projekt mit einer Oberklasse und mindestens drei Subklassen. Formuliere 15 Zuweisungen und 8 Casts.",{"type":1080,"tag":1088,"props":3141,"children":3142},{},[3143],{"type":1086,"value":3144},"Fuer jeden Fall dokumentieren:",{"type":1080,"tag":1094,"props":3146,"children":3147},{},[3148,3153,3158,3162],{"type":1080,"tag":1098,"props":3149,"children":3150},{},[3151],{"type":1086,"value":3152},"statischer Typ links/rechts",{"type":1080,"tag":1098,"props":3154,"children":3155},{},[3156],{"type":1086,"value":3157},"dynamischer Typ des Objekts",{"type":1080,"tag":1098,"props":3159,"children":3160},{},[3161],{"type":1086,"value":3061},{"type":1080,"tag":1098,"props":3163,"children":3164},{},[3165],{"type":1086,"value":3166},"Laufzeit sicher ja/nein",{"type":1080,"tag":1088,"props":3168,"children":3169},{},[3170,3172,3177,3179,3184],{"type":1086,"value":3171},"Ergaenze mindestens einen Fall mit ",{"type":1080,"tag":1124,"props":3173,"children":3175},{"className":3174},[],[3176],{"type":1086,"value":1373},{"type":1086,"value":3178}," und einen mit ",{"type":1080,"tag":1124,"props":3180,"children":3182},{"className":3181},[],[3183],{"type":1086,"value":2945},{"type":1086,"value":3185},". Dadurch wird die Trennung von Typpruefung und Laufzeitverhalten nachhaltig gefestigt.",{"type":1080,"tag":1141,"props":3187,"children":3189},{"id":3188},"mini-reflexion",[3190],{"type":1086,"value":3191},"Mini-Reflexion",{"type":1080,"tag":1088,"props":3193,"children":3194},{},[3195],{"type":1086,"value":3196},"In OOP-II-Aufgaben entscheidet selten Intuition, sondern fast immer ein sauber gezeichneter Typbaum. Wer diese Visualisierung konsequent nutzt, trennt automatisch zwischen Kompilierbarkeit und Laufzeitverhalten.",{"type":1080,"tag":1141,"props":3198,"children":3200},{"id":3199},"zusatzaufgabe",[3201],{"type":1086,"value":3202},"Zusatzaufgabe",{"type":1080,"tag":1088,"props":3204,"children":3205},{},[3206,3208,3214],{"type":1086,"value":3207},"Waehle aus dem Uebungsblatt drei Beispiele mit Casts aus und erweitere sie jeweils um einen sicheren ",{"type":1080,"tag":1124,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":1086,"value":3213},"instanceof",{"type":1086,"value":3215},"-Check. Begruende, wann dadurch nur ein Laufzeitfehler verhindert wird und wann auch die Lesbarkeit des Codes verbessert wird.",{"type":1080,"tag":1141,"props":3217,"children":3219},{"id":3218},"schlussgedanke",[3220],{"type":1086,"value":3221},"Schlussgedanke",{"type":1080,"tag":1088,"props":3223,"children":3224},{},[3225],{"type":1086,"value":3226},"Polymorphie ist erst dann wirklich verstanden, wenn Zuweisungen nicht geraten, sondern begruendet werden. Das Blatt trainiert genau diese Begruendungskompetenz.",{"type":1080,"tag":1088,"props":3228,"children":3229},{},[3230],{"type":1086,"value":3231},"Eine saubere Typanalyse ist kein Zusatz, sondern die Grundlage dafuer, polymorphen Code spaeter sicher zu erweitern, zu testen und in Reviews nachvollziehbar zu begruenden.",{"type":1080,"tag":3233,"props":3234,"children":3235},"style",{},[3236],{"type":1086,"value":3237},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":62,"searchDepth":33,"depth":33,"links":3239},[3240,3241,3242,3243,3244,3245,3246,3250,3252,3254,3255,3256,3257,3258,3259,3260,3265,3266,3268,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280],{"id":1143,"depth":33,"text":1146},{"id":1162,"depth":33,"text":1165},{"id":1382,"depth":33,"text":1385},{"id":1579,"depth":33,"text":1582},{"id":1639,"depth":33,"text":1642},{"id":1702,"depth":33,"text":1705},{"id":1856,"depth":33,"text":1859,"children":3247},[3248,3249],{"id":1863,"depth":59,"text":1866},{"id":1874,"depth":59,"text":1877},{"id":1991,"depth":33,"text":3251},"null als Sonderfall",{"id":2108,"depth":33,"text":3253},"Kurzer Block zu static und Vererbung",{"id":2182,"depth":33,"text":2185},{"id":2221,"depth":33,"text":2224},{"id":2296,"depth":33,"text":2299},{"id":2345,"depth":33,"text":2348},{"id":2379,"depth":33,"text":2382},{"id":2413,"depth":33,"text":2416},{"id":2500,"depth":33,"text":2503,"children":3261},[3262,3263,3264],{"id":2506,"depth":59,"text":2509},{"id":2560,"depth":59,"text":2563},{"id":2618,"depth":59,"text":2621},{"id":2659,"depth":33,"text":2662},{"id":2734,"depth":33,"text":3267},"null in Typaufgaben sauber behandeln",{"id":2824,"depth":33,"text":3269},"Aufgaben zu static und Vererbung",{"id":2878,"depth":33,"text":2881},{"id":2925,"depth":33,"text":2928},{"id":2961,"depth":33,"text":2964},{"id":2995,"depth":33,"text":2998},{"id":3029,"depth":33,"text":3032},{"id":3040,"depth":33,"text":3043},{"id":3097,"depth":33,"text":3100},{"id":3131,"depth":33,"text":3134},{"id":3188,"depth":33,"text":3191},{"id":3199,"depth":33,"text":3202},{"id":3218,"depth":33,"text":3221},"markdown","content:01_Programmierung:02_Java:04_OOP_Teil_II:01_Uebungen:de.md","01_Programmierung/02_Java/04_OOP_Teil_II/01_Uebungen/de.md","01_Programmierung/02_Java/04_OOP_Teil_II/01_Uebungen/de","md",1787079992907]