[{"data":1,"prerenderedAt":4051},["ShallowReactive",2],{"book-hierarchy":3,"content-query-MH0tGpkEy9":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":244,"_dir":240,"_draft":13,"_partial":13,"_locale":62,"title":241,"description":243,"navigation":1074,"author":1075,"audience":16,"pageType":32,"order":33,"body":1076,"_type":4046,"_id":4047,"_source":32,"_file":4048,"_stem":4049,"_extension":4050},true,"HM_JDS",{"type":1077,"children":1078,"toc":3994},"root",[1079,1087,1118,1125,1134,1155,1160,1185,1196,1203,1208,1213,1504,1509,1517,1528,1535,1545,1581,1586,1592,1631,1637,1662,1667,1678,1685,1693,1703,1726,1745,1750,1758,1764,1785,1790,1817,1822,1828,1833,1863,1868,1881,1886,1935,1948,1954,1959,1964,1969,1994,1999,2005,2017,2053,2058,2100,2105,2111,2116,2159,2172,2192,2213,2218,2231,2236,2242,2249,2256,2264,2277,2327,2333,2594,2599,2605,2683,2689,2761,2767,2772,2795,2800,2806,2811,2816,2844,2849,2913,2918,2949,2954,2960,2965,2983,2988,3021,3039,3057,3062,3257,3269,3275,3287,3292,3310,3315,3321,3326,3330,3429,3434,3445,3450,3500,3512,3518,3523,3546,3551,3569,3574,3607,3612,3618,3623,3646,3651,3657,3669,3705,3710,3716,3744,3750,3755,3778,3783,3789,3794,3800,3805,3859,3864,3872,3877,3883,3920,3925,3931,3936,3941,3972,3977,3983,3988],{"type":1080,"tag":1081,"props":1082,"children":1084},"element","h1",{"id":1083},"projekt-zahlen",[1085],{"type":1086,"value":241},"text",{"type":1080,"tag":1088,"props":1089,"children":1090},"p",{},[1091,1093,1100,1102,1108,1110,1116],{"type":1086,"value":1092},"Dieses Kapitel basiert auf dem Projektarbeitsblatt zur Zahlenmodellierung. Dort wird ein zusammenhaengendes OOP-Projekt entwickelt, das mehrere Klassen und Interfaces kombiniert: ",{"type":1080,"tag":1094,"props":1095,"children":1097},"code",{"className":1096},[],[1098],{"type":1086,"value":1099},"NatuerlicheZahl",{"type":1086,"value":1101},", ",{"type":1080,"tag":1094,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":1086,"value":1107},"GanzeZahl",{"type":1086,"value":1109}," und ",{"type":1080,"tag":1094,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":1086,"value":1115},"RationaleZahl",{"type":1086,"value":1117}," samt Inversions- und Rechenoperationen.",{"type":1080,"tag":1119,"props":1120,"children":1122},"h2",{"id":1121},"projektidee-und-modellierungsziel",[1123],{"type":1086,"value":1124},"Projektidee und Modellierungsziel",{"type":1080,"tag":1088,"props":1126,"children":1127},{},[1128],{"type":1080,"tag":1129,"props":1130,"children":1133},"img",{"alt":1131,"src":1132},"Abbildung 1","./media/s01-pdf-obj020.png",[],{"type":1080,"tag":1088,"props":1135,"children":1136},{},[1137,1139,1145,1147,1153],{"type":1086,"value":1138},"Die Kernidee ist, Zahltypen nicht nur als primitive ",{"type":1080,"tag":1094,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":1086,"value":1144},"int",{"type":1086,"value":1146},"/",{"type":1080,"tag":1094,"props":1148,"children":1150},{"className":1149},[],[1151],{"type":1086,"value":1152},"double",{"type":1086,"value":1154}," zu behandeln, sondern als eigene Objekte mit fachlichen Regeln.",{"type":1080,"tag":1088,"props":1156,"children":1157},{},[1158],{"type":1086,"value":1159},"Damit werden zentrale OOP-Ziele trainiert:",{"type":1080,"tag":1161,"props":1162,"children":1163},"ul",{},[1164,1170,1175,1180],{"type":1080,"tag":1165,"props":1166,"children":1167},"li",{},[1168],{"type":1086,"value":1169},"Invarianten absichern",{"type":1080,"tag":1165,"props":1171,"children":1172},{},[1173],{"type":1086,"value":1174},"Schnittstellen ueber Interfaces definieren",{"type":1080,"tag":1165,"props":1176,"children":1177},{},[1178],{"type":1086,"value":1179},"Operationen typgerecht modellieren",{"type":1080,"tag":1165,"props":1181,"children":1182},{},[1183],{"type":1086,"value":1184},"Konstruktoren und Hilfsmethoden sauber strukturieren",{"type":1080,"tag":1119,"props":1186,"children":1188},{"id":1187},"baustein-1-natuerlichezahl",[1189,1191],{"type":1086,"value":1190},"Baustein 1: ",{"type":1080,"tag":1094,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":1086,"value":1099},{"type":1080,"tag":1197,"props":1198,"children":1200},"h3",{"id":1199},"fachregel",[1201],{"type":1086,"value":1202},"Fachregel",{"type":1080,"tag":1088,"props":1204,"children":1205},{},[1206],{"type":1086,"value":1207},"Eine natuerliche Zahl ist nicht negativ.",{"type":1080,"tag":1088,"props":1209,"children":1210},{},[1211],{"type":1086,"value":1212},"Das Arbeitsblatt gibt bereits ein Muster vor:",{"type":1080,"tag":1214,"props":1215,"children":1219},"pre",{"className":1216,"code":1217,"language":1218,"meta":62,"style":62},"language-java shiki shiki-themes github-light github-dark","public class NatuerlicheZahl {\n    public static final NatuerlicheZahl NULL = new NatuerlicheZahl(0);\n    public static final NatuerlicheZahl EINS = new NatuerlicheZahl(1);\n\n    private int wert;\n\n    public NatuerlicheZahl(int wert) {\n        if (wert \u003C 0) this.wert = 0;\n        else this.wert = wert;\n    }\n}\n","java",[1220],{"type":1080,"tag":1094,"props":1221,"children":1222},{"__ignoreMap":62},[1223,1251,1304,1348,1356,1374,1381,1411,1462,1488,1496],{"type":1080,"tag":1224,"props":1225,"children":1227},"span",{"class":1226,"line":14},"line",[1228,1234,1239,1245],{"type":1080,"tag":1224,"props":1229,"children":1231},{"style":1230},"--shiki-default:#D73A49;--shiki-dark:#F97583",[1232],{"type":1086,"value":1233},"public",{"type":1080,"tag":1224,"props":1235,"children":1236},{"style":1230},[1237],{"type":1086,"value":1238}," class",{"type":1080,"tag":1224,"props":1240,"children":1242},{"style":1241},"--shiki-default:#6F42C1;--shiki-dark:#B392F0",[1243],{"type":1086,"value":1244}," NatuerlicheZahl",{"type":1080,"tag":1224,"props":1246,"children":1248},{"style":1247},"--shiki-default:#24292E;--shiki-dark:#E1E4E8",[1249],{"type":1086,"value":1250}," {\n",{"type":1080,"tag":1224,"props":1252,"children":1253},{"class":1226,"line":33},[1254,1259,1264,1269,1274,1279,1284,1288,1293,1299],{"type":1080,"tag":1224,"props":1255,"children":1256},{"style":1230},[1257],{"type":1086,"value":1258},"    public",{"type":1080,"tag":1224,"props":1260,"children":1261},{"style":1230},[1262],{"type":1086,"value":1263}," static",{"type":1080,"tag":1224,"props":1265,"children":1266},{"style":1230},[1267],{"type":1086,"value":1268}," final",{"type":1080,"tag":1224,"props":1270,"children":1271},{"style":1247},[1272],{"type":1086,"value":1273}," NatuerlicheZahl NULL ",{"type":1080,"tag":1224,"props":1275,"children":1276},{"style":1230},[1277],{"type":1086,"value":1278},"=",{"type":1080,"tag":1224,"props":1280,"children":1281},{"style":1230},[1282],{"type":1086,"value":1283}," new",{"type":1080,"tag":1224,"props":1285,"children":1286},{"style":1241},[1287],{"type":1086,"value":1244},{"type":1080,"tag":1224,"props":1289,"children":1290},{"style":1247},[1291],{"type":1086,"value":1292},"(",{"type":1080,"tag":1224,"props":1294,"children":1296},{"style":1295},"--shiki-default:#005CC5;--shiki-dark:#79B8FF",[1297],{"type":1086,"value":1298},"0",{"type":1080,"tag":1224,"props":1300,"children":1301},{"style":1247},[1302],{"type":1086,"value":1303},");\n",{"type":1080,"tag":1224,"props":1305,"children":1306},{"class":1226,"line":59},[1307,1311,1315,1319,1324,1328,1332,1336,1340,1344],{"type":1080,"tag":1224,"props":1308,"children":1309},{"style":1230},[1310],{"type":1086,"value":1258},{"type":1080,"tag":1224,"props":1312,"children":1313},{"style":1230},[1314],{"type":1086,"value":1263},{"type":1080,"tag":1224,"props":1316,"children":1317},{"style":1230},[1318],{"type":1086,"value":1268},{"type":1080,"tag":1224,"props":1320,"children":1321},{"style":1247},[1322],{"type":1086,"value":1323}," NatuerlicheZahl EINS ",{"type":1080,"tag":1224,"props":1325,"children":1326},{"style":1230},[1327],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":1329,"children":1330},{"style":1230},[1331],{"type":1086,"value":1283},{"type":1080,"tag":1224,"props":1333,"children":1334},{"style":1241},[1335],{"type":1086,"value":1244},{"type":1080,"tag":1224,"props":1337,"children":1338},{"style":1247},[1339],{"type":1086,"value":1292},{"type":1080,"tag":1224,"props":1341,"children":1342},{"style":1295},[1343],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":1345,"children":1346},{"style":1247},[1347],{"type":1086,"value":1303},{"type":1080,"tag":1224,"props":1349,"children":1350},{"class":1226,"line":74},[1351],{"type":1080,"tag":1224,"props":1352,"children":1353},{"emptyLinePlaceholder":1074},[1354],{"type":1086,"value":1355},"\n",{"type":1080,"tag":1224,"props":1357,"children":1358},{"class":1226,"line":135},[1359,1364,1369],{"type":1080,"tag":1224,"props":1360,"children":1361},{"style":1230},[1362],{"type":1086,"value":1363},"    private",{"type":1080,"tag":1224,"props":1365,"children":1366},{"style":1230},[1367],{"type":1086,"value":1368}," int",{"type":1080,"tag":1224,"props":1370,"children":1371},{"style":1247},[1372],{"type":1086,"value":1373}," wert;\n",{"type":1080,"tag":1224,"props":1375,"children":1376},{"class":1226,"line":160},[1377],{"type":1080,"tag":1224,"props":1378,"children":1379},{"emptyLinePlaceholder":1074},[1380],{"type":1086,"value":1355},{"type":1080,"tag":1224,"props":1382,"children":1383},{"class":1226,"line":173},[1384,1388,1392,1396,1400,1406],{"type":1080,"tag":1224,"props":1385,"children":1386},{"style":1230},[1387],{"type":1086,"value":1258},{"type":1080,"tag":1224,"props":1389,"children":1390},{"style":1241},[1391],{"type":1086,"value":1244},{"type":1080,"tag":1224,"props":1393,"children":1394},{"style":1247},[1395],{"type":1086,"value":1292},{"type":1080,"tag":1224,"props":1397,"children":1398},{"style":1230},[1399],{"type":1086,"value":1144},{"type":1080,"tag":1224,"props":1401,"children":1403},{"style":1402},"--shiki-default:#E36209;--shiki-dark:#FFAB70",[1404],{"type":1086,"value":1405}," wert",{"type":1080,"tag":1224,"props":1407,"children":1408},{"style":1247},[1409],{"type":1086,"value":1410},") {\n",{"type":1080,"tag":1224,"props":1412,"children":1413},{"class":1226,"line":186},[1414,1419,1424,1429,1434,1439,1444,1449,1453,1457],{"type":1080,"tag":1224,"props":1415,"children":1416},{"style":1230},[1417],{"type":1086,"value":1418},"        if",{"type":1080,"tag":1224,"props":1420,"children":1421},{"style":1247},[1422],{"type":1086,"value":1423}," (wert ",{"type":1080,"tag":1224,"props":1425,"children":1426},{"style":1230},[1427],{"type":1086,"value":1428},"\u003C",{"type":1080,"tag":1224,"props":1430,"children":1431},{"style":1295},[1432],{"type":1086,"value":1433}," 0",{"type":1080,"tag":1224,"props":1435,"children":1436},{"style":1247},[1437],{"type":1086,"value":1438},") ",{"type":1080,"tag":1224,"props":1440,"children":1441},{"style":1295},[1442],{"type":1086,"value":1443},"this",{"type":1080,"tag":1224,"props":1445,"children":1446},{"style":1247},[1447],{"type":1086,"value":1448},".wert ",{"type":1080,"tag":1224,"props":1450,"children":1451},{"style":1230},[1452],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":1454,"children":1455},{"style":1295},[1456],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":1458,"children":1459},{"style":1247},[1460],{"type":1086,"value":1461},";\n",{"type":1080,"tag":1224,"props":1463,"children":1465},{"class":1226,"line":1464},9,[1466,1471,1476,1480,1484],{"type":1080,"tag":1224,"props":1467,"children":1468},{"style":1230},[1469],{"type":1086,"value":1470},"        else",{"type":1080,"tag":1224,"props":1472,"children":1473},{"style":1295},[1474],{"type":1086,"value":1475}," this",{"type":1080,"tag":1224,"props":1477,"children":1478},{"style":1247},[1479],{"type":1086,"value":1448},{"type":1080,"tag":1224,"props":1481,"children":1482},{"style":1230},[1483],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":1485,"children":1486},{"style":1247},[1487],{"type":1086,"value":1373},{"type":1080,"tag":1224,"props":1489,"children":1490},{"class":1226,"line":1013},[1491],{"type":1080,"tag":1224,"props":1492,"children":1493},{"style":1247},[1494],{"type":1086,"value":1495},"    }\n",{"type":1080,"tag":1224,"props":1497,"children":1498},{"class":1226,"line":1024},[1499],{"type":1080,"tag":1224,"props":1500,"children":1501},{"style":1247},[1502],{"type":1086,"value":1503},"}\n",{"type":1080,"tag":1088,"props":1505,"children":1506},{},[1507],{"type":1086,"value":1508},"Wichtiger Entwurfspunkt:",{"type":1080,"tag":1161,"props":1510,"children":1511},{},[1512],{"type":1080,"tag":1165,"props":1513,"children":1514},{},[1515],{"type":1086,"value":1516},"Die Invariante wird direkt im Konstruktor erzwungen.",{"type":1080,"tag":1119,"props":1518,"children":1520},{"id":1519},"baustein-2-ganzezahl",[1521,1523],{"type":1086,"value":1522},"Baustein 2: ",{"type":1080,"tag":1094,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":1086,"value":1107},{"type":1080,"tag":1088,"props":1529,"children":1530},{},[1531],{"type":1080,"tag":1129,"props":1532,"children":1534},{"alt":1131,"src":1533},"./media/s01-pdf-obj056.png",[],{"type":1080,"tag":1088,"props":1536,"children":1537},{},[1538,1543],{"type":1080,"tag":1094,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":1086,"value":1107},{"type":1086,"value":1544}," wird im Blatt ueber Vorzeichen + Betrag modelliert.",{"type":1080,"tag":1161,"props":1546,"children":1547},{},[1548,1565],{"type":1080,"tag":1165,"props":1549,"children":1550},{},[1551,1557,1559],{"type":1080,"tag":1094,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":1086,"value":1556},"vorzeichen",{"type":1086,"value":1558}," in ",{"type":1080,"tag":1094,"props":1560,"children":1562},{"className":1561},[],[1563],{"type":1086,"value":1564},"{-1, 0, 1}",{"type":1080,"tag":1165,"props":1566,"children":1567},{},[1568,1574,1576],{"type":1080,"tag":1094,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":1086,"value":1573},"betrag",{"type":1086,"value":1575}," als ",{"type":1080,"tag":1094,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":1086,"value":1099},{"type":1080,"tag":1088,"props":1582,"children":1583},{},[1584],{"type":1086,"value":1585},"Damit wird nicht nur gerechnet, sondern ein internes Modell mit klaren Regeln aufgebaut.",{"type":1080,"tag":1197,"props":1587,"children":1589},{"id":1588},"konstruktionsregeln-laut-blatt",[1590],{"type":1086,"value":1591},"Konstruktionsregeln laut Blatt",{"type":1080,"tag":1593,"props":1594,"children":1595},"ol",{},[1596,1608,1613],{"type":1080,"tag":1165,"props":1597,"children":1598},{},[1599,1601,1606],{"type":1086,"value":1600},"Ein zentraler Konstruktor mit ",{"type":1080,"tag":1094,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":1086,"value":1144},{"type":1086,"value":1607}," ist die Hauptlogik.",{"type":1080,"tag":1165,"props":1609,"children":1610},{},[1611],{"type":1086,"value":1612},"Andere Konstruktoren sollen darauf aufbauen.",{"type":1080,"tag":1165,"props":1614,"children":1615},{},[1616,1622,1623,1629],{"type":1080,"tag":1094,"props":1617,"children":1619},{"className":1618},[],[1620],{"type":1086,"value":1621},"NULL",{"type":1086,"value":1109},{"type":1080,"tag":1094,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":1086,"value":1628},"EINS",{"type":1086,"value":1630}," als Konstanten bereitstellen.",{"type":1080,"tag":1197,"props":1632,"children":1634},{"id":1633},"rechenoperationen",[1635],{"type":1086,"value":1636},"Rechenoperationen",{"type":1080,"tag":1088,"props":1638,"children":1639},{},[1640,1646,1647,1653,1654,1660],{"type":1080,"tag":1094,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":1086,"value":1645},"addiere",{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":1086,"value":1652},"multipliziere",{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":1655,"children":1657},{"className":1656},[],[1658],{"type":1086,"value":1659},"subtrahiere",{"type":1086,"value":1661}," sollen neue Objekte liefern statt Seiteneffekte auf bestehende Instanzen auszufuehren.",{"type":1080,"tag":1088,"props":1663,"children":1664},{},[1665],{"type":1086,"value":1666},"Das macht Objekte leichter testbar und reduziert unerwartete Nebenwirkungen.",{"type":1080,"tag":1119,"props":1668,"children":1670},{"id":1669},"baustein-3-rationalezahl",[1671,1673],{"type":1086,"value":1672},"Baustein 3: ",{"type":1080,"tag":1094,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":1086,"value":1115},{"type":1080,"tag":1088,"props":1679,"children":1680},{},[1681],{"type":1080,"tag":1129,"props":1682,"children":1684},{"alt":1131,"src":1683},"./media/s01-pdf-obj057.png",[],{"type":1080,"tag":1088,"props":1686,"children":1687},{},[1688],{"type":1080,"tag":1129,"props":1689,"children":1692},{"alt":1690,"src":1691},"Abbildung 2","./media/s01-pdf-obj059.png",[],{"type":1080,"tag":1088,"props":1694,"children":1695},{},[1696,1701],{"type":1080,"tag":1094,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":1086,"value":1115},{"type":1086,"value":1702}," kombiniert:",{"type":1080,"tag":1161,"props":1704,"children":1705},{},[1706,1716],{"type":1080,"tag":1165,"props":1707,"children":1708},{},[1709,1711],{"type":1086,"value":1710},"Zaehler als ",{"type":1080,"tag":1094,"props":1712,"children":1714},{"className":1713},[],[1715],{"type":1086,"value":1107},{"type":1080,"tag":1165,"props":1717,"children":1718},{},[1719,1721],{"type":1086,"value":1720},"Nenner als ",{"type":1080,"tag":1094,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":1086,"value":1099},{"type":1080,"tag":1088,"props":1727,"children":1728},{},[1729,1731,1736,1738,1743],{"type":1086,"value":1730},"Der Nenner darf nie ",{"type":1080,"tag":1094,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":1086,"value":1298},{"type":1086,"value":1737}," sein. Das Blatt gibt dafuer eine Korrekturregel vor (z. B. auf ",{"type":1080,"tag":1094,"props":1739,"children":1741},{"className":1740},[],[1742],{"type":1086,"value":1058},{"type":1086,"value":1744}," setzen, falls ungueltig).",{"type":1080,"tag":1088,"props":1746,"children":1747},{},[1748],{"type":1086,"value":1749},"Zusatzregel:",{"type":1080,"tag":1161,"props":1751,"children":1752},{},[1753],{"type":1080,"tag":1165,"props":1754,"children":1755},{},[1756],{"type":1086,"value":1757},"Falls der Nenner negativ uebergeben wird, Vorzeichen in den Zaehler ziehen, Nenner positiv machen.",{"type":1080,"tag":1119,"props":1759,"children":1761},{"id":1760},"kuerzen-mit-ggt",[1762],{"type":1086,"value":1763},"Kuerzen mit ggT",{"type":1080,"tag":1088,"props":1765,"children":1766},{},[1767,1769,1775,1777,1783],{"type":1086,"value":1768},"Das Blatt enthaelt explizit eine ",{"type":1080,"tag":1094,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":1086,"value":1774},"ggT",{"type":1086,"value":1776},"-Methode und fordert ein internes ",{"type":1080,"tag":1094,"props":1778,"children":1780},{"className":1779},[],[1781],{"type":1086,"value":1782},"selbstKuerzen()",{"type":1086,"value":1784},".",{"type":1080,"tag":1088,"props":1786,"children":1787},{},[1788],{"type":1086,"value":1789},"Ziel:",{"type":1080,"tag":1161,"props":1791,"children":1792},{},[1793,1798],{"type":1080,"tag":1165,"props":1794,"children":1795},{},[1796],{"type":1086,"value":1797},"konsistente kanonische Darstellung",{"type":1080,"tag":1165,"props":1799,"children":1800},{},[1801,1803,1809,1811],{"type":1086,"value":1802},"z. B. ",{"type":1080,"tag":1094,"props":1804,"children":1806},{"className":1805},[],[1807],{"type":1086,"value":1808},"2/4",{"type":1086,"value":1810}," wird intern zu ",{"type":1080,"tag":1094,"props":1812,"children":1814},{"className":1813},[],[1815],{"type":1086,"value":1816},"1/2",{"type":1080,"tag":1088,"props":1818,"children":1819},{},[1820],{"type":1086,"value":1821},"Das ist ein klassischer Fall fuer private Hilfsmethoden, die nach jeder relevanten Konstruktion oder Operation aufgerufen werden.",{"type":1080,"tag":1119,"props":1823,"children":1825},{"id":1824},"interfaces-und-inversen",[1826],{"type":1086,"value":1827},"Interfaces und Inversen",{"type":1080,"tag":1088,"props":1829,"children":1830},{},[1831],{"type":1086,"value":1832},"Das Projekt nutzt Interfaces wie:",{"type":1080,"tag":1161,"props":1834,"children":1835},{},[1836,1845,1854],{"type":1080,"tag":1165,"props":1837,"children":1838},{},[1839],{"type":1080,"tag":1094,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":1086,"value":1844},"AdditivInvertierbar",{"type":1080,"tag":1165,"props":1846,"children":1847},{},[1848],{"type":1080,"tag":1094,"props":1849,"children":1851},{"className":1850},[],[1852],{"type":1086,"value":1853},"MultiplikativInvertierbar",{"type":1080,"tag":1165,"props":1855,"children":1856},{},[1857],{"type":1080,"tag":1094,"props":1858,"children":1860},{"className":1859},[],[1861],{"type":1086,"value":1862},"ZahlMitVorzeichen",{"type":1080,"tag":1088,"props":1864,"children":1865},{},[1866],{"type":1086,"value":1867},"Didaktischer Kern:",{"type":1080,"tag":1161,"props":1869,"children":1870},{},[1871,1876],{"type":1080,"tag":1165,"props":1872,"children":1873},{},[1874],{"type":1086,"value":1875},"gemeinsame Faehigkeiten als Vertrag definieren",{"type":1080,"tag":1165,"props":1877,"children":1878},{},[1879],{"type":1086,"value":1880},"konkrete Umsetzung in Klassen spezifizieren",{"type":1080,"tag":1088,"props":1882,"children":1883},{},[1884],{"type":1086,"value":1885},"Beispielidee:",{"type":1080,"tag":1161,"props":1887,"children":1888},{},[1889,1908],{"type":1080,"tag":1165,"props":1890,"children":1891},{},[1892,1894,1900,1902],{"type":1086,"value":1893},"additives Inverses von ",{"type":1080,"tag":1094,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":1086,"value":1899},"x",{"type":1086,"value":1901}," ist ",{"type":1080,"tag":1094,"props":1903,"children":1905},{"className":1904},[],[1906],{"type":1086,"value":1907},"-x",{"type":1080,"tag":1165,"props":1909,"children":1910},{},[1911,1913,1918,1919,1925,1927,1933],{"type":1086,"value":1912},"multiplikatives Inverses von ",{"type":1080,"tag":1094,"props":1914,"children":1916},{"className":1915},[],[1917],{"type":1086,"value":1899},{"type":1086,"value":1901},{"type":1080,"tag":1094,"props":1920,"children":1922},{"className":1921},[],[1923],{"type":1086,"value":1924},"1/x",{"type":1086,"value":1926}," (ausser ",{"type":1080,"tag":1094,"props":1928,"children":1930},{"className":1929},[],[1931],{"type":1086,"value":1932},"x == 0",{"type":1086,"value":1934},")",{"type":1080,"tag":1088,"props":1936,"children":1937},{},[1938,1940,1946],{"type":1086,"value":1939},"Das Blatt legt fest: Wenn kein multiplikatives Inverses existiert, soll ",{"type":1080,"tag":1094,"props":1941,"children":1943},{"className":1942},[],[1944],{"type":1086,"value":1945},"null",{"type":1086,"value":1947}," geliefert werden.",{"type":1080,"tag":1119,"props":1949,"children":1951},{"id":1950},"rueckgabetypen-und-kovarianz",[1952],{"type":1086,"value":1953},"Rueckgabetypen und Kovarianz",{"type":1080,"tag":1088,"props":1955,"children":1956},{},[1957],{"type":1086,"value":1958},"Eine sehr gute Modellierungsfrage aus dem Arbeitsblatt:",{"type":1080,"tag":1088,"props":1960,"children":1961},{},[1962],{"type":1086,"value":1963},"Warum darf eine Methode aus einem Interface in einer konkreten Klasse einen spezielleren Rueckgabetyp verwenden?",{"type":1080,"tag":1088,"props":1965,"children":1966},{},[1967],{"type":1086,"value":1968},"Beispiel:",{"type":1080,"tag":1161,"props":1970,"children":1971},{},[1972,1983],{"type":1080,"tag":1165,"props":1973,"children":1974},{},[1975,1977],{"type":1086,"value":1976},"Interface: ",{"type":1080,"tag":1094,"props":1978,"children":1980},{"className":1979},[],[1981],{"type":1086,"value":1982},"AdditivInvertierbar additivesInverses();",{"type":1080,"tag":1165,"props":1984,"children":1985},{},[1986,1988],{"type":1086,"value":1987},"Klasse: ",{"type":1080,"tag":1094,"props":1989,"children":1991},{"className":1990},[],[1992],{"type":1086,"value":1993},"GanzeZahl additivesInverses();",{"type":1080,"tag":1088,"props":1995,"children":1996},{},[1997],{"type":1086,"value":1998},"Das ist in Java als kovarianter Rueckgabetyp erlaubt und verbessert Nutzbarkeit.",{"type":1080,"tag":1119,"props":2000,"children":2002},{"id":2001},"rechenmethoden-als-reine-funktionen",[2003],{"type":1086,"value":2004},"Rechenmethoden als reine Funktionen",{"type":1080,"tag":1088,"props":2006,"children":2007},{},[2008,2010,2015],{"type":1086,"value":2009},"Fuer ",{"type":1080,"tag":1094,"props":2011,"children":2013},{"className":2012},[],[2014],{"type":1086,"value":1115},{"type":1086,"value":2016}," nennt das Blatt die Operationen:",{"type":1080,"tag":1161,"props":2018,"children":2019},{},[2020,2028,2036,2044],{"type":1080,"tag":1165,"props":2021,"children":2022},{},[2023],{"type":1080,"tag":1094,"props":2024,"children":2026},{"className":2025},[],[2027],{"type":1086,"value":1645},{"type":1080,"tag":1165,"props":2029,"children":2030},{},[2031],{"type":1080,"tag":1094,"props":2032,"children":2034},{"className":2033},[],[2035],{"type":1086,"value":1659},{"type":1080,"tag":1165,"props":2037,"children":2038},{},[2039],{"type":1080,"tag":1094,"props":2040,"children":2042},{"className":2041},[],[2043],{"type":1086,"value":1652},{"type":1080,"tag":1165,"props":2045,"children":2046},{},[2047],{"type":1080,"tag":1094,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":1086,"value":2052},"dividiere",{"type":1080,"tag":1088,"props":2054,"children":2055},{},[2056],{"type":1086,"value":2057},"Regel:",{"type":1080,"tag":1161,"props":2059,"children":2060},{},[2061,2066,2084],{"type":1080,"tag":1165,"props":2062,"children":2063},{},[2064],{"type":1086,"value":2065},"Jede Methode liefert eine neue Instanz.",{"type":1080,"tag":1165,"props":2067,"children":2068},{},[2069,2074,2076,2082],{"type":1080,"tag":1094,"props":2070,"children":2072},{"className":2071},[],[2073],{"type":1086,"value":1659},{"type":1086,"value":2075}," soll ",{"type":1080,"tag":1094,"props":2077,"children":2079},{"className":2078},[],[2080],{"type":1086,"value":2081},"additivesInverses",{"type":1086,"value":2083}," nutzen.",{"type":1080,"tag":1165,"props":2085,"children":2086},{},[2087,2092,2093,2099],{"type":1080,"tag":1094,"props":2088,"children":2090},{"className":2089},[],[2091],{"type":1086,"value":2052},{"type":1086,"value":2075},{"type":1080,"tag":1094,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":1086,"value":2098},"multiplikativesInverses",{"type":1086,"value":2083},{"type":1080,"tag":1088,"props":2101,"children":2102},{},[2103],{"type":1086,"value":2104},"Diese Wiederverwendung reduziert Fehler und haelt Logik konsistent.",{"type":1080,"tag":1119,"props":2106,"children":2108},{"id":2107},"string-darstellung",[2109],{"type":1086,"value":2110},"String-Darstellung",{"type":1080,"tag":1088,"props":2112,"children":2113},{},[2114],{"type":1086,"value":2115},"Das Arbeitsblatt fordert:",{"type":1080,"tag":1161,"props":2117,"children":2118},{},[2119,2135],{"type":1080,"tag":1165,"props":2120,"children":2121},{},[2122,2127,2129],{"type":1080,"tag":1094,"props":2123,"children":2125},{"className":2124},[],[2126],{"type":1086,"value":1107},{"type":1086,"value":2128},": uebliche Darstellung wie ",{"type":1080,"tag":1094,"props":2130,"children":2132},{"className":2131},[],[2133],{"type":1086,"value":2134},"\"-3\"",{"type":1080,"tag":1165,"props":2136,"children":2137},{},[2138,2143,2145,2151,2153],{"type":1080,"tag":1094,"props":2139,"children":2141},{"className":2140},[],[2142],{"type":1086,"value":1115},{"type":1086,"value":2144},": Darstellung ",{"type":1080,"tag":1094,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":1086,"value":2150},"\"a/b\"",{"type":1086,"value":2152},", z. B. ",{"type":1080,"tag":1094,"props":2154,"children":2156},{"className":2155},[],[2157],{"type":1086,"value":2158},"\"2/3\"",{"type":1080,"tag":1088,"props":2160,"children":2161},{},[2162,2164,2170],{"type":1086,"value":2163},"Eine saubere ",{"type":1080,"tag":1094,"props":2165,"children":2167},{"className":2166},[],[2168],{"type":1086,"value":2169},"toString",{"type":1086,"value":2171},"-Methode ist wichtig fuer Tests, Debugging und Konsolenausgaben.",{"type":1080,"tag":1119,"props":2173,"children":2175},{"id":2174},"warum-ganzezahl-keine-subklasse-von-rationalezahl-sein-muss",[2176,2178,2183,2185,2190],{"type":1086,"value":2177},"Warum ",{"type":1080,"tag":1094,"props":2179,"children":2181},{"className":2180},[],[2182],{"type":1086,"value":1107},{"type":1086,"value":2184}," keine Subklasse von ",{"type":1080,"tag":1094,"props":2186,"children":2188},{"className":2187},[],[2189],{"type":1086,"value":1115},{"type":1086,"value":2191}," sein muss",{"type":1080,"tag":1088,"props":2193,"children":2194},{},[2195,2197,2203,2205,2211],{"type":1086,"value":2196},"Das Blatt stellt bewusst diese Modellierungsfrage, obwohl mathematisch ",{"type":1080,"tag":1094,"props":2198,"children":2200},{"className":2199},[],[2201],{"type":1086,"value":2202},"Z",{"type":1086,"value":2204}," als Teilmenge von ",{"type":1080,"tag":1094,"props":2206,"children":2208},{"className":2207},[],[2209],{"type":1086,"value":2210},"Q",{"type":1086,"value":2212}," gilt.",{"type":1080,"tag":1088,"props":2214,"children":2215},{},[2216],{"type":1086,"value":2217},"In OOP ist Teilmengenbeziehung nicht automatisch Vererbungsbeziehung.",{"type":1080,"tag":1161,"props":2219,"children":2220},{},[2221,2226],{"type":1080,"tag":1165,"props":2222,"children":2223},{},[2224],{"type":1086,"value":2225},"Mathematische Einbettung bedeutet nicht zwingend passende Implementierungsvererbung.",{"type":1080,"tag":1165,"props":2227,"children":2228},{},[2229],{"type":1086,"value":2230},"Vererbung muss API- und Verhaltenskompatibilitaet sichern.",{"type":1080,"tag":1088,"props":2232,"children":2233},{},[2234],{"type":1086,"value":2235},"Das ist eine zentrale Designlektion.",{"type":1080,"tag":1119,"props":2237,"children":2239},{"id":2238},"teststrategie-fuer-das-projekt",[2240],{"type":1086,"value":2241},"Teststrategie fuer das Projekt",{"type":1080,"tag":1088,"props":2243,"children":2244},{},[2245],{"type":1080,"tag":1129,"props":2246,"children":2248},{"alt":1131,"src":2247},"./media/s01-pdf-obj060.png",[],{"type":1080,"tag":1088,"props":2250,"children":2251},{},[2252],{"type":1080,"tag":1129,"props":2253,"children":2255},{"alt":1690,"src":2254},"./media/s01-pdf-obj061.png",[],{"type":1080,"tag":1088,"props":2257,"children":2258},{},[2259],{"type":1080,"tag":1129,"props":2260,"children":2263},{"alt":2261,"src":2262},"Abbildung 3","./media/s01-pdf-obj062.png",[],{"type":1080,"tag":1088,"props":2265,"children":2266},{},[2267,2269,2275],{"type":1086,"value":2268},"Das Arbeitsblatt fordert explizit Testrechnungen in ",{"type":1080,"tag":1094,"props":2270,"children":2272},{"className":2271},[],[2273],{"type":1086,"value":2274},"main",{"type":1086,"value":2276},". Sinnvoll ist eine strukturierte Matrix:",{"type":1080,"tag":1593,"props":2278,"children":2279},{},[2280,2307,2317,2322],{"type":1080,"tag":1165,"props":2281,"children":2282},{},[2283,2285,2291,2293,2298,2300,2305],{"type":1086,"value":2284},"Konstruktor-Randfaelle\n",{"type":1080,"tag":1094,"props":2286,"children":2288},{"className":2287},[],[2289],{"type":1086,"value":2290},"-5",{"type":1086,"value":2292}," bei ",{"type":1080,"tag":1094,"props":2294,"children":2296},{"className":2295},[],[2297],{"type":1086,"value":1099},{"type":1086,"value":2299},", Nenner ",{"type":1080,"tag":1094,"props":2301,"children":2303},{"className":2302},[],[2304],{"type":1086,"value":1298},{"type":1086,"value":2306},", Nenner negativ",{"type":1080,"tag":1165,"props":2308,"children":2309},{},[2310,2312],{"type":1086,"value":2311},"Inversen\nadditiv und multiplikativ inkl. Sonderfall ",{"type":1080,"tag":1094,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":1086,"value":1298},{"type":1080,"tag":1165,"props":2318,"children":2319},{},[2320],{"type":1086,"value":2321},"Rechenoperationen\nAddition, Multiplikation, Subtraktion, Division",{"type":1080,"tag":1165,"props":2323,"children":2324},{},[2325],{"type":1086,"value":2326},"Normalisierung\nkuerzen, Vorzeichenposition, String-Ausgabe",{"type":1080,"tag":1119,"props":2328,"children":2330},{"id":2329},"beispiel-fuer-robuste-konstruktion-einer-rationalen-zahl",[2331],{"type":1086,"value":2332},"Beispiel fuer robuste Konstruktion einer rationalen Zahl",{"type":1080,"tag":1214,"props":2334,"children":2336},{"className":1216,"code":2335,"language":1218,"meta":62,"style":62},"public RationaleZahl(int zaehler, int nenner) {\n    if (nenner \u003C 0) {\n        zaehler *= -1;\n        nenner *= -1;\n    }\n    if (nenner == 0) {\n        nenner = 1;\n    }\n\n    this.zaehler = new GanzeZahl(zaehler);\n    this.nenner = new NatuerlicheZahl(nenner);\n    selbstKuerzen();\n}\n",[2337],{"type":1080,"tag":1094,"props":2338,"children":2339},{"__ignoreMap":62},[2340,2374,2399,2425,2449,2456,2480,2500,2507,2514,2545,2574,2587],{"type":1080,"tag":1224,"props":2341,"children":2342},{"class":1226,"line":14},[2343,2347,2352,2356,2360,2365,2369],{"type":1080,"tag":1224,"props":2344,"children":2345},{"style":1230},[2346],{"type":1086,"value":1233},{"type":1080,"tag":1224,"props":2348,"children":2349},{"style":1241},[2350],{"type":1086,"value":2351}," RationaleZahl",{"type":1080,"tag":1224,"props":2353,"children":2354},{"style":1247},[2355],{"type":1086,"value":1292},{"type":1080,"tag":1224,"props":2357,"children":2358},{"style":1230},[2359],{"type":1086,"value":1144},{"type":1080,"tag":1224,"props":2361,"children":2362},{"style":1247},[2363],{"type":1086,"value":2364}," zaehler, ",{"type":1080,"tag":1224,"props":2366,"children":2367},{"style":1230},[2368],{"type":1086,"value":1144},{"type":1080,"tag":1224,"props":2370,"children":2371},{"style":1247},[2372],{"type":1086,"value":2373}," nenner) {\n",{"type":1080,"tag":1224,"props":2375,"children":2376},{"class":1226,"line":33},[2377,2382,2387,2391,2395],{"type":1080,"tag":1224,"props":2378,"children":2379},{"style":1230},[2380],{"type":1086,"value":2381},"    if",{"type":1080,"tag":1224,"props":2383,"children":2384},{"style":1247},[2385],{"type":1086,"value":2386}," (nenner ",{"type":1080,"tag":1224,"props":2388,"children":2389},{"style":1230},[2390],{"type":1086,"value":1428},{"type":1080,"tag":1224,"props":2392,"children":2393},{"style":1295},[2394],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":2396,"children":2397},{"style":1247},[2398],{"type":1086,"value":1410},{"type":1080,"tag":1224,"props":2400,"children":2401},{"class":1226,"line":59},[2402,2407,2412,2417,2421],{"type":1080,"tag":1224,"props":2403,"children":2404},{"style":1247},[2405],{"type":1086,"value":2406},"        zaehler ",{"type":1080,"tag":1224,"props":2408,"children":2409},{"style":1230},[2410],{"type":1086,"value":2411},"*=",{"type":1080,"tag":1224,"props":2413,"children":2414},{"style":1230},[2415],{"type":1086,"value":2416}," -",{"type":1080,"tag":1224,"props":2418,"children":2419},{"style":1295},[2420],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":2422,"children":2423},{"style":1247},[2424],{"type":1086,"value":1461},{"type":1080,"tag":1224,"props":2426,"children":2427},{"class":1226,"line":74},[2428,2433,2437,2441,2445],{"type":1080,"tag":1224,"props":2429,"children":2430},{"style":1247},[2431],{"type":1086,"value":2432},"        nenner ",{"type":1080,"tag":1224,"props":2434,"children":2435},{"style":1230},[2436],{"type":1086,"value":2411},{"type":1080,"tag":1224,"props":2438,"children":2439},{"style":1230},[2440],{"type":1086,"value":2416},{"type":1080,"tag":1224,"props":2442,"children":2443},{"style":1295},[2444],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":2446,"children":2447},{"style":1247},[2448],{"type":1086,"value":1461},{"type":1080,"tag":1224,"props":2450,"children":2451},{"class":1226,"line":135},[2452],{"type":1080,"tag":1224,"props":2453,"children":2454},{"style":1247},[2455],{"type":1086,"value":1495},{"type":1080,"tag":1224,"props":2457,"children":2458},{"class":1226,"line":160},[2459,2463,2467,2472,2476],{"type":1080,"tag":1224,"props":2460,"children":2461},{"style":1230},[2462],{"type":1086,"value":2381},{"type":1080,"tag":1224,"props":2464,"children":2465},{"style":1247},[2466],{"type":1086,"value":2386},{"type":1080,"tag":1224,"props":2468,"children":2469},{"style":1230},[2470],{"type":1086,"value":2471},"==",{"type":1080,"tag":1224,"props":2473,"children":2474},{"style":1295},[2475],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":2477,"children":2478},{"style":1247},[2479],{"type":1086,"value":1410},{"type":1080,"tag":1224,"props":2481,"children":2482},{"class":1226,"line":173},[2483,2487,2491,2496],{"type":1080,"tag":1224,"props":2484,"children":2485},{"style":1247},[2486],{"type":1086,"value":2432},{"type":1080,"tag":1224,"props":2488,"children":2489},{"style":1230},[2490],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":2492,"children":2493},{"style":1295},[2494],{"type":1086,"value":2495}," 1",{"type":1080,"tag":1224,"props":2497,"children":2498},{"style":1247},[2499],{"type":1086,"value":1461},{"type":1080,"tag":1224,"props":2501,"children":2502},{"class":1226,"line":186},[2503],{"type":1080,"tag":1224,"props":2504,"children":2505},{"style":1247},[2506],{"type":1086,"value":1495},{"type":1080,"tag":1224,"props":2508,"children":2509},{"class":1226,"line":1464},[2510],{"type":1080,"tag":1224,"props":2511,"children":2512},{"emptyLinePlaceholder":1074},[2513],{"type":1086,"value":1355},{"type":1080,"tag":1224,"props":2515,"children":2516},{"class":1226,"line":1013},[2517,2522,2527,2531,2535,2540],{"type":1080,"tag":1224,"props":2518,"children":2519},{"style":1295},[2520],{"type":1086,"value":2521},"    this",{"type":1080,"tag":1224,"props":2523,"children":2524},{"style":1247},[2525],{"type":1086,"value":2526},".zaehler ",{"type":1080,"tag":1224,"props":2528,"children":2529},{"style":1230},[2530],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":2532,"children":2533},{"style":1230},[2534],{"type":1086,"value":1283},{"type":1080,"tag":1224,"props":2536,"children":2537},{"style":1241},[2538],{"type":1086,"value":2539}," GanzeZahl",{"type":1080,"tag":1224,"props":2541,"children":2542},{"style":1247},[2543],{"type":1086,"value":2544},"(zaehler);\n",{"type":1080,"tag":1224,"props":2546,"children":2547},{"class":1226,"line":1024},[2548,2552,2557,2561,2565,2569],{"type":1080,"tag":1224,"props":2549,"children":2550},{"style":1295},[2551],{"type":1086,"value":2521},{"type":1080,"tag":1224,"props":2553,"children":2554},{"style":1247},[2555],{"type":1086,"value":2556},".nenner ",{"type":1080,"tag":1224,"props":2558,"children":2559},{"style":1230},[2560],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":2562,"children":2563},{"style":1230},[2564],{"type":1086,"value":1283},{"type":1080,"tag":1224,"props":2566,"children":2567},{"style":1241},[2568],{"type":1086,"value":1244},{"type":1080,"tag":1224,"props":2570,"children":2571},{"style":1247},[2572],{"type":1086,"value":2573},"(nenner);\n",{"type":1080,"tag":1224,"props":2575,"children":2576},{"class":1226,"line":1035},[2577,2582],{"type":1080,"tag":1224,"props":2578,"children":2579},{"style":1241},[2580],{"type":1086,"value":2581},"    selbstKuerzen",{"type":1080,"tag":1224,"props":2583,"children":2584},{"style":1247},[2585],{"type":1086,"value":2586},"();\n",{"type":1080,"tag":1224,"props":2588,"children":2589},{"class":1226,"line":1046},[2590],{"type":1080,"tag":1224,"props":2591,"children":2592},{"style":1247},[2593],{"type":1086,"value":1503},{"type":1080,"tag":1088,"props":2595,"children":2596},{},[2597],{"type":1086,"value":2598},"Dieses Muster deckt die wichtigsten Invarianten direkt ab.",{"type":1080,"tag":1119,"props":2600,"children":2602},{"id":2601},"typische-fehlerquellen",[2603],{"type":1086,"value":2604},"Typische Fehlerquellen",{"type":1080,"tag":1593,"props":2606,"children":2607},{},[2608,2619,2634,2644,2654],{"type":1080,"tag":1165,"props":2609,"children":2610},{},[2611,2617],{"type":1080,"tag":2612,"props":2613,"children":2614},"strong",{},[2615],{"type":1086,"value":2616},"Invarianten nur teilweise geprueft",{"type":1086,"value":2618},"\nz. B. Nennerregel bei einem Konstruktor vergessen.",{"type":1080,"tag":1165,"props":2620,"children":2621},{},[2622,2632],{"type":1080,"tag":2612,"props":2623,"children":2624},{},[2625,2627],{"type":1086,"value":2626},"Rechenmethoden veraendern ",{"type":1080,"tag":1094,"props":2628,"children":2630},{"className":2629},[],[2631],{"type":1086,"value":1443},{"type":1086,"value":2633},"\nFuehrt zu schwer testbaren Seiteneffekten.",{"type":1080,"tag":1165,"props":2635,"children":2636},{},[2637,2642],{"type":1080,"tag":2612,"props":2638,"children":2639},{},[2640],{"type":1086,"value":2641},"ggT ohne Absolutwertbehandlung",{"type":1086,"value":2643},"\nNegativwerte koennen kuerzen stoeren.",{"type":1080,"tag":1165,"props":2645,"children":2646},{},[2647,2652],{"type":1080,"tag":2612,"props":2648,"children":2649},{},[2650],{"type":1086,"value":2651},"Uneinheitliche Vorzeichenlogik",{"type":1086,"value":2653},"\nVorzeichen mal im Zaehler, mal im Nenner.",{"type":1080,"tag":1165,"props":2655,"children":2656},{},[2657,2667,2669,2674,2676,2681],{"type":1080,"tag":2612,"props":2658,"children":2659},{},[2660,2665],{"type":1080,"tag":1094,"props":2661,"children":2663},{"className":2662},[],[2664],{"type":1086,"value":1945},{"type":1086,"value":2666},"-Rueckgaben unkontrolliert verwendet",{"type":1086,"value":2668},"\nBei Division durch ",{"type":1080,"tag":1094,"props":2670,"children":2672},{"className":2671},[],[2673],{"type":1086,"value":1298},{"type":1086,"value":2675}," muss der Aufrufer ",{"type":1080,"tag":1094,"props":2677,"children":2679},{"className":2678},[],[2680],{"type":1086,"value":1945},{"type":1086,"value":2682}," pruefen.",{"type":1080,"tag":1119,"props":2684,"children":2686},{"id":2685},"vertiefungsaufgaben",[2687],{"type":1086,"value":2688},"Vertiefungsaufgaben",{"type":1080,"tag":1593,"props":2690,"children":2691},{},[2692,2712,2732,2744,2756],{"type":1080,"tag":1165,"props":2693,"children":2694},{},[2695,2697,2703,2704,2710],{"type":1086,"value":2696},"Fuege zu allen Klassen ",{"type":1080,"tag":1094,"props":2698,"children":2700},{"className":2699},[],[2701],{"type":1086,"value":2702},"equals",{"type":1086,"value":1109},{"type":1080,"tag":1094,"props":2705,"children":2707},{"className":2706},[],[2708],{"type":1086,"value":2709},"hashCode",{"type":1086,"value":2711}," hinzu.",{"type":1080,"tag":1165,"props":2713,"children":2714},{},[2715,2717,2723,2724,2730],{"type":1086,"value":2716},"Ergaenze Vergleichsmethoden (",{"type":1080,"tag":1094,"props":2718,"children":2720},{"className":2719},[],[2721],{"type":1086,"value":2722},"istKleinerAls",{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":2725,"children":2727},{"className":2726},[],[2728],{"type":1086,"value":2729},"compareTo",{"type":1086,"value":2731},").",{"type":1080,"tag":1165,"props":2733,"children":2734},{},[2735,2737,2743],{"type":1086,"value":2736},"Implementiere Parser aus String (",{"type":1080,"tag":1094,"props":2738,"children":2740},{"className":2739},[],[2741],{"type":1086,"value":2742},"\"-3/7\"",{"type":1086,"value":2731},{"type":1080,"tag":1165,"props":2745,"children":2746},{},[2747,2749,2754],{"type":1086,"value":2748},"Ersetze ",{"type":1080,"tag":1094,"props":2750,"children":2752},{"className":2751},[],[2753],{"type":1086,"value":1945},{"type":1086,"value":2755}," bei fehlendem Inversen durch Exception oder Optional und diskutiere Vor-/Nachteile.",{"type":1080,"tag":1165,"props":2757,"children":2758},{},[2759],{"type":1086,"value":2760},"Schreibe JUnit-Tests fuer alle Konstruktor-Randfaelle und Rechenregeln.",{"type":1080,"tag":1119,"props":2762,"children":2764},{"id":2763},"zusammenfassung",[2765],{"type":1086,"value":2766},"Zusammenfassung",{"type":1080,"tag":1088,"props":2768,"children":2769},{},[2770],{"type":1086,"value":2771},"Das Zahlenprojekt ist ein vollwertiges OOP-Trainingsfeld:",{"type":1080,"tag":1161,"props":2773,"children":2774},{},[2775,2780,2785,2790],{"type":1080,"tag":1165,"props":2776,"children":2777},{},[2778],{"type":1086,"value":2779},"mathematische Regeln als Objektinvarianten",{"type":1080,"tag":1165,"props":2781,"children":2782},{},[2783],{"type":1086,"value":2784},"Interfaces als Faehigkeitsvertraege",{"type":1080,"tag":1165,"props":2786,"children":2787},{},[2788],{"type":1086,"value":2789},"Konstruktorverkettung und Kapselung",{"type":1080,"tag":1165,"props":2791,"children":2792},{},[2793],{"type":1086,"value":2794},"Operationen als neue Objekte",{"type":1080,"tag":1088,"props":2796,"children":2797},{},[2798],{"type":1086,"value":2799},"Damit wird der Uebergang von Einzeluebungen zu zusammenhaengendem Klassendesign sauber vollzogen.",{"type":1080,"tag":1119,"props":2801,"children":2803},{"id":2802},"invarianten-je-klasse-explizit-festhalten",[2804],{"type":1086,"value":2805},"Invarianten je Klasse explizit festhalten",{"type":1080,"tag":1088,"props":2807,"children":2808},{},[2809],{"type":1086,"value":2810},"Fuer das Zahlenprojekt ist eine schriftliche Invariantenliste sehr hilfreich.",{"type":1080,"tag":1197,"props":2812,"children":2814},{"id":2813},"natuerlichezahl",[2815],{"type":1086,"value":1099},{"type":1080,"tag":1593,"props":2817,"children":2818},{},[2819,2828],{"type":1080,"tag":1165,"props":2820,"children":2821},{},[2822],{"type":1080,"tag":1094,"props":2823,"children":2825},{"className":2824},[],[2826],{"type":1086,"value":2827},"wert >= 0",{"type":1080,"tag":1165,"props":2829,"children":2830},{},[2831,2836,2837,2842],{"type":1080,"tag":1094,"props":2832,"children":2834},{"className":2833},[],[2835],{"type":1086,"value":1621},{"type":1086,"value":1109},{"type":1080,"tag":1094,"props":2838,"children":2840},{"className":2839},[],[2841],{"type":1086,"value":1628},{"type":1086,"value":2843}," verweisen auf gueltige Objekte",{"type":1080,"tag":1197,"props":2845,"children":2847},{"id":2846},"ganzezahl",[2848],{"type":1086,"value":1107},{"type":1080,"tag":1593,"props":2850,"children":2851},{},[2852,2881,2896],{"type":1080,"tag":1165,"props":2853,"children":2854},{},[2855,2860,2862,2868,2869,2874,2876],{"type":1080,"tag":1094,"props":2856,"children":2858},{"className":2857},[],[2859],{"type":1086,"value":1556},{"type":1086,"value":2861}," ist nur ",{"type":1080,"tag":1094,"props":2863,"children":2865},{"className":2864},[],[2866],{"type":1086,"value":2867},"-1",{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":2870,"children":2872},{"className":2871},[],[2873],{"type":1086,"value":1298},{"type":1086,"value":2875}," oder ",{"type":1080,"tag":1094,"props":2877,"children":2879},{"className":2878},[],[2880],{"type":1086,"value":1058},{"type":1080,"tag":1165,"props":2882,"children":2883},{},[2884,2889,2891],{"type":1080,"tag":1094,"props":2885,"children":2887},{"className":2886},[],[2888],{"type":1086,"value":1573},{"type":1086,"value":2890}," ist nicht ",{"type":1080,"tag":1094,"props":2892,"children":2894},{"className":2893},[],[2895],{"type":1086,"value":1945},{"type":1080,"tag":1165,"props":2897,"children":2898},{},[2899,2901,2906,2908],{"type":1086,"value":2900},"Bei Wert ",{"type":1080,"tag":1094,"props":2902,"children":2904},{"className":2903},[],[2905],{"type":1086,"value":1298},{"type":1086,"value":2907}," gilt Vorzeichen ebenfalls ",{"type":1080,"tag":1094,"props":2909,"children":2911},{"className":2910},[],[2912],{"type":1086,"value":1298},{"type":1080,"tag":1197,"props":2914,"children":2916},{"id":2915},"rationalezahl",[2917],{"type":1086,"value":1115},{"type":1080,"tag":1593,"props":2919,"children":2920},{},[2921,2930,2939,2944],{"type":1080,"tag":1165,"props":2922,"children":2923},{},[2924],{"type":1080,"tag":1094,"props":2925,"children":2927},{"className":2926},[],[2928],{"type":1086,"value":2929},"nenner > 0",{"type":1080,"tag":1165,"props":2931,"children":2932},{},[2933],{"type":1080,"tag":1094,"props":2934,"children":2936},{"className":2935},[],[2937],{"type":1086,"value":2938},"nenner != 0",{"type":1080,"tag":1165,"props":2940,"children":2941},{},[2942],{"type":1086,"value":2943},"Bruch liegt gekuerzt vor",{"type":1080,"tag":1165,"props":2945,"children":2946},{},[2947],{"type":1086,"value":2948},"Vorzeichen sitzt im Zaehler",{"type":1080,"tag":1088,"props":2950,"children":2951},{},[2952],{"type":1086,"value":2953},"Diese Regeln bestimmen Konstruktoren, Setter (falls vorhanden) und Rechenoperationen.",{"type":1080,"tag":1119,"props":2955,"children":2957},{"id":2956},"rechenoperationen-als-reine-objektfunktionen",[2958],{"type":1086,"value":2959},"Rechenoperationen als reine Objektfunktionen",{"type":1080,"tag":1088,"props":2961,"children":2962},{},[2963],{"type":1086,"value":2964},"Das Arbeitsblatt verlangt, dass Operationen neue Instanzen erzeugen. Das entspricht einem immutablen Stil und hat Vorteile:",{"type":1080,"tag":1161,"props":2966,"children":2967},{},[2968,2973,2978],{"type":1080,"tag":1165,"props":2969,"children":2970},{},[2971],{"type":1086,"value":2972},"weniger Seiteneffekte",{"type":1080,"tag":1165,"props":2974,"children":2975},{},[2976],{"type":1086,"value":2977},"einfachere Tests",{"type":1080,"tag":1165,"props":2979,"children":2980},{},[2981],{"type":1086,"value":2982},"sichere Wiederverwendung alter Werte",{"type":1080,"tag":1088,"props":2984,"children":2985},{},[2986],{"type":1086,"value":2987},"Beispielprinzip:",{"type":1080,"tag":1214,"props":2989,"children":2991},{"className":1216,"code":2990,"language":1218,"meta":62,"style":62},"GanzeZahl c = a.addiere(b);\n",[2992],{"type":1080,"tag":1094,"props":2993,"children":2994},{"__ignoreMap":62},[2995],{"type":1080,"tag":1224,"props":2996,"children":2997},{"class":1226,"line":14},[2998,3003,3007,3012,3016],{"type":1080,"tag":1224,"props":2999,"children":3000},{"style":1247},[3001],{"type":1086,"value":3002},"GanzeZahl c ",{"type":1080,"tag":1224,"props":3004,"children":3005},{"style":1230},[3006],{"type":1086,"value":1278},{"type":1080,"tag":1224,"props":3008,"children":3009},{"style":1247},[3010],{"type":1086,"value":3011}," a.",{"type":1080,"tag":1224,"props":3013,"children":3014},{"style":1241},[3015],{"type":1086,"value":1645},{"type":1080,"tag":1224,"props":3017,"children":3018},{"style":1247},[3019],{"type":1086,"value":3020},"(b);\n",{"type":1080,"tag":1088,"props":3022,"children":3023},{},[3024,3030,3031,3037],{"type":1080,"tag":1094,"props":3025,"children":3027},{"className":3026},[],[3028],{"type":1086,"value":3029},"a",{"type":1086,"value":1109},{"type":1080,"tag":1094,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":1086,"value":3036},"b",{"type":1086,"value":3038}," bleiben unveraendert.",{"type":1080,"tag":1119,"props":3040,"children":3042},{"id":3041},"ggt-und-selbstkuerzen-robust-implementieren",[3043,3048,3049,3055],{"type":1080,"tag":1094,"props":3044,"children":3046},{"className":3045},[],[3047],{"type":1086,"value":1774},{"type":1086,"value":1109},{"type":1080,"tag":1094,"props":3050,"children":3052},{"className":3051},[],[3053],{"type":1086,"value":3054},"selbstKuerzen",{"type":1086,"value":3056}," robust implementieren",{"type":1080,"tag":1088,"props":3058,"children":3059},{},[3060],{"type":1086,"value":3061},"Die ggT-Berechnung sollte mit Absolutwerten arbeiten, um Vorzeichenprobleme zu vermeiden.",{"type":1080,"tag":1214,"props":3063,"children":3065},{"className":1216,"code":3064,"language":1218,"meta":62,"style":62},"private int ggT(int a, int b) {\n    if (a \u003C 0) a *= -1;\n    if (b \u003C 0) b *= -1;\n    if (b == 0) return a;\n    return ggT(b, a % b);\n}\n",[3066],{"type":1080,"tag":1094,"props":3067,"children":3068},{"__ignoreMap":62},[3069,3108,3149,3190,3223,3250],{"type":1080,"tag":1224,"props":3070,"children":3071},{"class":1226,"line":14},[3072,3077,3081,3086,3090,3094,3099,3103],{"type":1080,"tag":1224,"props":3073,"children":3074},{"style":1230},[3075],{"type":1086,"value":3076},"private",{"type":1080,"tag":1224,"props":3078,"children":3079},{"style":1230},[3080],{"type":1086,"value":1368},{"type":1080,"tag":1224,"props":3082,"children":3083},{"style":1241},[3084],{"type":1086,"value":3085}," ggT",{"type":1080,"tag":1224,"props":3087,"children":3088},{"style":1247},[3089],{"type":1086,"value":1292},{"type":1080,"tag":1224,"props":3091,"children":3092},{"style":1230},[3093],{"type":1086,"value":1144},{"type":1080,"tag":1224,"props":3095,"children":3096},{"style":1247},[3097],{"type":1086,"value":3098}," a, ",{"type":1080,"tag":1224,"props":3100,"children":3101},{"style":1230},[3102],{"type":1086,"value":1144},{"type":1080,"tag":1224,"props":3104,"children":3105},{"style":1247},[3106],{"type":1086,"value":3107}," b) {\n",{"type":1080,"tag":1224,"props":3109,"children":3110},{"class":1226,"line":33},[3111,3115,3120,3124,3128,3133,3137,3141,3145],{"type":1080,"tag":1224,"props":3112,"children":3113},{"style":1230},[3114],{"type":1086,"value":2381},{"type":1080,"tag":1224,"props":3116,"children":3117},{"style":1247},[3118],{"type":1086,"value":3119}," (a ",{"type":1080,"tag":1224,"props":3121,"children":3122},{"style":1230},[3123],{"type":1086,"value":1428},{"type":1080,"tag":1224,"props":3125,"children":3126},{"style":1295},[3127],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":3129,"children":3130},{"style":1247},[3131],{"type":1086,"value":3132},") a ",{"type":1080,"tag":1224,"props":3134,"children":3135},{"style":1230},[3136],{"type":1086,"value":2411},{"type":1080,"tag":1224,"props":3138,"children":3139},{"style":1230},[3140],{"type":1086,"value":2416},{"type":1080,"tag":1224,"props":3142,"children":3143},{"style":1295},[3144],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":3146,"children":3147},{"style":1247},[3148],{"type":1086,"value":1461},{"type":1080,"tag":1224,"props":3150,"children":3151},{"class":1226,"line":59},[3152,3156,3161,3165,3169,3174,3178,3182,3186],{"type":1080,"tag":1224,"props":3153,"children":3154},{"style":1230},[3155],{"type":1086,"value":2381},{"type":1080,"tag":1224,"props":3157,"children":3158},{"style":1247},[3159],{"type":1086,"value":3160}," (b ",{"type":1080,"tag":1224,"props":3162,"children":3163},{"style":1230},[3164],{"type":1086,"value":1428},{"type":1080,"tag":1224,"props":3166,"children":3167},{"style":1295},[3168],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":3170,"children":3171},{"style":1247},[3172],{"type":1086,"value":3173},") b ",{"type":1080,"tag":1224,"props":3175,"children":3176},{"style":1230},[3177],{"type":1086,"value":2411},{"type":1080,"tag":1224,"props":3179,"children":3180},{"style":1230},[3181],{"type":1086,"value":2416},{"type":1080,"tag":1224,"props":3183,"children":3184},{"style":1295},[3185],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":3187,"children":3188},{"style":1247},[3189],{"type":1086,"value":1461},{"type":1080,"tag":1224,"props":3191,"children":3192},{"class":1226,"line":74},[3193,3197,3201,3205,3209,3213,3218],{"type":1080,"tag":1224,"props":3194,"children":3195},{"style":1230},[3196],{"type":1086,"value":2381},{"type":1080,"tag":1224,"props":3198,"children":3199},{"style":1247},[3200],{"type":1086,"value":3160},{"type":1080,"tag":1224,"props":3202,"children":3203},{"style":1230},[3204],{"type":1086,"value":2471},{"type":1080,"tag":1224,"props":3206,"children":3207},{"style":1295},[3208],{"type":1086,"value":1433},{"type":1080,"tag":1224,"props":3210,"children":3211},{"style":1247},[3212],{"type":1086,"value":1438},{"type":1080,"tag":1224,"props":3214,"children":3215},{"style":1230},[3216],{"type":1086,"value":3217},"return",{"type":1080,"tag":1224,"props":3219,"children":3220},{"style":1247},[3221],{"type":1086,"value":3222}," a;\n",{"type":1080,"tag":1224,"props":3224,"children":3225},{"class":1226,"line":135},[3226,3231,3235,3240,3245],{"type":1080,"tag":1224,"props":3227,"children":3228},{"style":1230},[3229],{"type":1086,"value":3230},"    return",{"type":1080,"tag":1224,"props":3232,"children":3233},{"style":1241},[3234],{"type":1086,"value":3085},{"type":1080,"tag":1224,"props":3236,"children":3237},{"style":1247},[3238],{"type":1086,"value":3239},"(b, a ",{"type":1080,"tag":1224,"props":3241,"children":3242},{"style":1230},[3243],{"type":1086,"value":3244},"%",{"type":1080,"tag":1224,"props":3246,"children":3247},{"style":1247},[3248],{"type":1086,"value":3249}," b);\n",{"type":1080,"tag":1224,"props":3251,"children":3252},{"class":1226,"line":160},[3253],{"type":1080,"tag":1224,"props":3254,"children":3255},{"style":1247},[3256],{"type":1086,"value":1503},{"type":1080,"tag":1088,"props":3258,"children":3259},{},[3260,3262,3267],{"type":1086,"value":3261},"Danach kann ",{"type":1080,"tag":1094,"props":3263,"children":3265},{"className":3264},[],[3266],{"type":1086,"value":1782},{"type":1086,"value":3268}," Zaehler und Nenner durch den ggT teilen.",{"type":1080,"tag":1119,"props":3270,"children":3272},{"id":3271},"sonderfall-division-durch-null",[3273],{"type":1086,"value":3274},"Sonderfall Division durch Null",{"type":1080,"tag":1088,"props":3276,"children":3277},{},[3278,3280,3285],{"type":1086,"value":3279},"Das Blatt legt fest: Falls kein multiplikatives Inverses existiert, gibt die Methode ",{"type":1080,"tag":1094,"props":3281,"children":3283},{"className":3282},[],[3284],{"type":1086,"value":1945},{"type":1086,"value":3286}," zurueck. Didaktisch ist das nachvollziehbar, im produktiven Stil kann alternativ eine Exception passender sein.",{"type":1080,"tag":1088,"props":3288,"children":3289},{},[3290],{"type":1086,"value":3291},"Vergleich:",{"type":1080,"tag":1593,"props":3293,"children":3294},{},[3295,3305],{"type":1080,"tag":1165,"props":3296,"children":3297},{},[3298,3303],{"type":1080,"tag":1094,"props":3299,"children":3301},{"className":3300},[],[3302],{"type":1086,"value":1945},{"type":1086,"value":3304},"-Rueckgabe\nVorteil: einfach\nNachteil: Aufrufer muss immer pruefen",{"type":1080,"tag":1165,"props":3306,"children":3307},{},[3308],{"type":1086,"value":3309},"Exception\nVorteil: Fehler klar signalisiert\nNachteil: erfordert Fehlerbehandlung",{"type":1080,"tag":1088,"props":3311,"children":3312},{},[3313],{"type":1086,"value":3314},"Fuer das Projekt sollte eine Variante konsistent in allen Klassen genutzt werden.",{"type":1080,"tag":1119,"props":3316,"children":3318},{"id":3317},"konstruktorverkettung-im-projekt",[3319],{"type":1086,"value":3320},"Konstruktorverkettung im Projekt",{"type":1080,"tag":1088,"props":3322,"children":3323},{},[3324],{"type":1086,"value":3325},"Das Arbeitsblatt fordert mehrfach, dass zusaetzliche Konstruktoren auf den Hauptkonstruktor aufrufen. Das verhindert Inkonsistenz.",{"type":1080,"tag":1088,"props":3327,"children":3328},{},[3329],{"type":1086,"value":1968},{"type":1080,"tag":1214,"props":3331,"children":3333},{"className":1216,"code":3332,"language":1218,"meta":62,"style":62},"public GanzeZahl(NatuerlicheZahl betrag, boolean nichtNegativ) {\n    this(betrag.getWert() * (nichtNegativ ? 1 : -1));\n}\n",[3334],{"type":1080,"tag":1094,"props":3335,"children":3336},{"__ignoreMap":62},[3337,3363,3422],{"type":1080,"tag":1224,"props":3338,"children":3339},{"class":1226,"line":14},[3340,3344,3348,3353,3358],{"type":1080,"tag":1224,"props":3341,"children":3342},{"style":1230},[3343],{"type":1086,"value":1233},{"type":1080,"tag":1224,"props":3345,"children":3346},{"style":1241},[3347],{"type":1086,"value":2539},{"type":1080,"tag":1224,"props":3349,"children":3350},{"style":1247},[3351],{"type":1086,"value":3352},"(NatuerlicheZahl betrag, ",{"type":1080,"tag":1224,"props":3354,"children":3355},{"style":1230},[3356],{"type":1086,"value":3357},"boolean",{"type":1080,"tag":1224,"props":3359,"children":3360},{"style":1247},[3361],{"type":1086,"value":3362}," nichtNegativ) {\n",{"type":1080,"tag":1224,"props":3364,"children":3365},{"class":1226,"line":33},[3366,3370,3375,3380,3385,3390,3395,3400,3404,3409,3413,3417],{"type":1080,"tag":1224,"props":3367,"children":3368},{"style":1295},[3369],{"type":1086,"value":2521},{"type":1080,"tag":1224,"props":3371,"children":3372},{"style":1247},[3373],{"type":1086,"value":3374},"(betrag.",{"type":1080,"tag":1224,"props":3376,"children":3377},{"style":1241},[3378],{"type":1086,"value":3379},"getWert",{"type":1080,"tag":1224,"props":3381,"children":3382},{"style":1247},[3383],{"type":1086,"value":3384},"() ",{"type":1080,"tag":1224,"props":3386,"children":3387},{"style":1230},[3388],{"type":1086,"value":3389},"*",{"type":1080,"tag":1224,"props":3391,"children":3392},{"style":1247},[3393],{"type":1086,"value":3394}," (nichtNegativ ",{"type":1080,"tag":1224,"props":3396,"children":3397},{"style":1230},[3398],{"type":1086,"value":3399},"?",{"type":1080,"tag":1224,"props":3401,"children":3402},{"style":1295},[3403],{"type":1086,"value":2495},{"type":1080,"tag":1224,"props":3405,"children":3406},{"style":1230},[3407],{"type":1086,"value":3408}," :",{"type":1080,"tag":1224,"props":3410,"children":3411},{"style":1230},[3412],{"type":1086,"value":2416},{"type":1080,"tag":1224,"props":3414,"children":3415},{"style":1295},[3416],{"type":1086,"value":1058},{"type":1080,"tag":1224,"props":3418,"children":3419},{"style":1247},[3420],{"type":1086,"value":3421},"));\n",{"type":1080,"tag":1224,"props":3423,"children":3424},{"class":1226,"line":59},[3425],{"type":1080,"tag":1224,"props":3426,"children":3427},{"style":1247},[3428],{"type":1086,"value":1503},{"type":1080,"tag":1088,"props":3430,"children":3431},{},[3432],{"type":1086,"value":3433},"So sind Vorzeichen- und Nullregeln zentral gebuendelt.",{"type":1080,"tag":1119,"props":3435,"children":3437},{"id":3436},"tostring-als-testhilfe",[3438,3443],{"type":1080,"tag":1094,"props":3439,"children":3441},{"className":3440},[],[3442],{"type":1086,"value":2169},{"type":1086,"value":3444}," als Testhilfe",{"type":1080,"tag":1088,"props":3446,"children":3447},{},[3448],{"type":1086,"value":3449},"Die Stringdarstellung ist nicht nur Komfortfunktion. Sie ist ein schneller Integritaetscheck:",{"type":1080,"tag":1161,"props":3451,"children":3452},{},[3453,3469,3484],{"type":1080,"tag":1165,"props":3454,"children":3455},{},[3456,3462,3464],{"type":1080,"tag":1094,"props":3457,"children":3459},{"className":3458},[],[3460],{"type":1086,"value":3461},"GanzeZahl(-3)",{"type":1086,"value":3463}," -> ",{"type":1080,"tag":1094,"props":3465,"children":3467},{"className":3466},[],[3468],{"type":1086,"value":2134},{"type":1080,"tag":1165,"props":3470,"children":3471},{},[3472,3478,3479],{"type":1080,"tag":1094,"props":3473,"children":3475},{"className":3474},[],[3476],{"type":1086,"value":3477},"RationaleZahl(2, 3)",{"type":1086,"value":3463},{"type":1080,"tag":1094,"props":3480,"children":3482},{"className":3481},[],[3483],{"type":1086,"value":2158},{"type":1080,"tag":1165,"props":3485,"children":3486},{},[3487,3493,3495],{"type":1080,"tag":1094,"props":3488,"children":3490},{"className":3489},[],[3491],{"type":1086,"value":3492},"RationaleZahl(4, 6)",{"type":1086,"value":3494}," nach Kuerzung -> ",{"type":1080,"tag":1094,"props":3496,"children":3498},{"className":3497},[],[3499],{"type":1086,"value":2158},{"type":1080,"tag":1088,"props":3501,"children":3502},{},[3503,3505,3510],{"type":1086,"value":3504},"Saubere ",{"type":1080,"tag":1094,"props":3506,"children":3508},{"className":3507},[],[3509],{"type":1086,"value":2169},{"type":1086,"value":3511},"-Methoden erleichtern Vergleichstests erheblich.",{"type":1080,"tag":1119,"props":3513,"children":3515},{"id":3514},"testkatalog-fuer-das-komplette-projekt",[3516],{"type":1086,"value":3517},"Testkatalog fuer das komplette Projekt",{"type":1080,"tag":1197,"props":3519,"children":3521},{"id":3520},"natuerlichezahl-1",[3522],{"type":1086,"value":1099},{"type":1080,"tag":1593,"props":3524,"children":3525},{},[3526,3531,3541],{"type":1080,"tag":1165,"props":3527,"children":3528},{},[3529],{"type":1086,"value":3530},"Konstruktion mit positivem Wert",{"type":1080,"tag":1165,"props":3532,"children":3533},{},[3534,3536],{"type":1086,"value":3535},"Konstruktion mit ",{"type":1080,"tag":1094,"props":3537,"children":3539},{"className":3538},[],[3540],{"type":1086,"value":1298},{"type":1080,"tag":1165,"props":3542,"children":3543},{},[3544],{"type":1086,"value":3545},"Konstruktion mit negativem Wert",{"type":1080,"tag":1197,"props":3547,"children":3549},{"id":3548},"ganzezahl-1",[3550],{"type":1086,"value":1107},{"type":1080,"tag":1593,"props":3552,"children":3553},{},[3554,3559,3564],{"type":1080,"tag":1165,"props":3555,"children":3556},{},[3557],{"type":1086,"value":3558},"positive, negative und null-Werte",{"type":1080,"tag":1165,"props":3560,"children":3561},{},[3562],{"type":1086,"value":3563},"additives Inverses",{"type":1080,"tag":1165,"props":3565,"children":3566},{},[3567],{"type":1086,"value":3568},"Addition/Subtraktion/Multiplikation",{"type":1080,"tag":1197,"props":3570,"children":3572},{"id":3571},"rationalezahl-1",[3573],{"type":1086,"value":1115},{"type":1080,"tag":1593,"props":3575,"children":3576},{},[3577,3587,3592,3597,3602],{"type":1080,"tag":1165,"props":3578,"children":3579},{},[3580,3582],{"type":1086,"value":3581},"Nenner ",{"type":1080,"tag":1094,"props":3583,"children":3585},{"className":3584},[],[3586],{"type":1086,"value":1298},{"type":1080,"tag":1165,"props":3588,"children":3589},{},[3590],{"type":1086,"value":3591},"negativer Nenner",{"type":1080,"tag":1165,"props":3593,"children":3594},{},[3595],{"type":1086,"value":3596},"Kuerzen",{"type":1080,"tag":1165,"props":3598,"children":3599},{},[3600],{"type":1086,"value":3601},"Division und Inverses",{"type":1080,"tag":1165,"props":3603,"children":3604},{},[3605],{"type":1086,"value":3606},"Nullfall bei multiplikativem Inversen",{"type":1080,"tag":1088,"props":3608,"children":3609},{},[3610],{"type":1086,"value":3611},"Dieser Katalog deckt die Kernforderungen des Arbeitsblatts ab.",{"type":1080,"tag":1119,"props":3613,"children":3615},{"id":3614},"modellierungsfragen-aus-dem-blatt-didaktisch-nutzen",[3616],{"type":1086,"value":3617},"Modellierungsfragen aus dem Blatt didaktisch nutzen",{"type":1080,"tag":1088,"props":3619,"children":3620},{},[3621],{"type":1086,"value":3622},"Die abschliessenden Theoriefragen sind ein grosser Mehrwert:",{"type":1080,"tag":1161,"props":3624,"children":3625},{},[3626,3631,3636,3641],{"type":1080,"tag":1165,"props":3627,"children":3628},{},[3629],{"type":1086,"value":3630},"Unterschied zwischen nicht-negativ und positiv",{"type":1080,"tag":1165,"props":3632,"children":3633},{},[3634],{"type":1086,"value":3635},"Warum private Konstruktoren in bestimmten Klassen sinnvoll sind",{"type":1080,"tag":1165,"props":3637,"children":3638},{},[3639],{"type":1086,"value":3640},"Warum mathematische Teilmengen nicht automatisch Vererbung bedeuten",{"type":1080,"tag":1165,"props":3642,"children":3643},{},[3644],{"type":1086,"value":3645},"Warum kovariante Rueckgabetypen erlaubt sein koennen",{"type":1080,"tag":1088,"props":3647,"children":3648},{},[3649],{"type":1086,"value":3650},"Diese Fragen verbinden Implementierung mit Architekturdenken.",{"type":1080,"tag":1119,"props":3652,"children":3654},{"id":3653},"mini-erweiterung-fuer-fortgeschrittene",[3655],{"type":1086,"value":3656},"Mini-Erweiterung fuer Fortgeschrittene",{"type":1080,"tag":1088,"props":3658,"children":3659},{},[3660,3662,3667],{"type":1086,"value":3661},"Ergaenze ",{"type":1080,"tag":1094,"props":3663,"children":3665},{"className":3664},[],[3666],{"type":1086,"value":1115},{"type":1086,"value":3668}," um:",{"type":1080,"tag":1593,"props":3670,"children":3671},{},[3672,3680,3694],{"type":1080,"tag":1165,"props":3673,"children":3674},{},[3675],{"type":1080,"tag":1094,"props":3676,"children":3678},{"className":3677},[],[3679],{"type":1086,"value":2729},{"type":1080,"tag":1165,"props":3681,"children":3682},{},[3683,3688,3689],{"type":1080,"tag":1094,"props":3684,"children":3686},{"className":3685},[],[3687],{"type":1086,"value":2702},{"type":1086,"value":1146},{"type":1080,"tag":1094,"props":3690,"children":3692},{"className":3691},[],[3693],{"type":1086,"value":2709},{"type":1080,"tag":1165,"props":3695,"children":3696},{},[3697,3699],{"type":1086,"value":3698},"statische Parse-Methode aus ",{"type":1080,"tag":1094,"props":3700,"children":3702},{"className":3701},[],[3703],{"type":1086,"value":3704},"String",{"type":1080,"tag":1088,"props":3706,"children":3707},{},[3708],{"type":1086,"value":3709},"Damit wird das Projekt von einer Uebungsreihe zu einem kleinen, nutzbaren Zahlenmodul.",{"type":1080,"tag":1119,"props":3711,"children":3713},{"id":3712},"bewertungsraster-fuer-projektabgabe",[3714],{"type":1086,"value":3715},"Bewertungsraster fuer Projektabgabe",{"type":1080,"tag":1593,"props":3717,"children":3718},{},[3719,3724,3729,3734,3739],{"type":1080,"tag":1165,"props":3720,"children":3721},{},[3722],{"type":1086,"value":3723},"Invarianten eingehalten",{"type":1080,"tag":1165,"props":3725,"children":3726},{},[3727],{"type":1086,"value":3728},"Konstruktorverkettung korrekt",{"type":1080,"tag":1165,"props":3730,"children":3731},{},[3732],{"type":1086,"value":3733},"Rechenmethoden liefern neue Instanzen",{"type":1080,"tag":1165,"props":3735,"children":3736},{},[3737],{"type":1086,"value":3738},"Sonderfaelle behandelt",{"type":1080,"tag":1165,"props":3740,"children":3741},{},[3742],{"type":1086,"value":3743},"Tests nachvollziehbar dokumentiert",{"type":1080,"tag":1119,"props":3745,"children":3747},{"id":3746},"transfer-in-weitere-oop-projekte",[3748],{"type":1086,"value":3749},"Transfer in weitere OOP-Projekte",{"type":1080,"tag":1088,"props":3751,"children":3752},{},[3753],{"type":1086,"value":3754},"Das Zahlenprojekt trainiert ein universelles Muster:",{"type":1080,"tag":1161,"props":3756,"children":3757},{},[3758,3763,3768,3773],{"type":1080,"tag":1165,"props":3759,"children":3760},{},[3761],{"type":1086,"value":3762},"Fachobjekte statt primitive Streuvariablen",{"type":1080,"tag":1165,"props":3764,"children":3765},{},[3766],{"type":1086,"value":3767},"klare Invarianten",{"type":1080,"tag":1165,"props":3769,"children":3770},{},[3771],{"type":1086,"value":3772},"Interface-basierte Faehigkeiten",{"type":1080,"tag":1165,"props":3774,"children":3775},{},[3776],{"type":1086,"value":3777},"testbare Rechenlogik",{"type":1080,"tag":1088,"props":3779,"children":3780},{},[3781],{"type":1086,"value":3782},"Genau dieses Muster ist spaeter in vielen Domainen nutzbar, etwa Geometrie, Finanzberechnung oder Datenanalyse.",{"type":1080,"tag":1119,"props":3784,"children":3786},{"id":3785},"abschluss-der-vertiefung",[3787],{"type":1086,"value":3788},"Abschluss der Vertiefung",{"type":1080,"tag":1088,"props":3790,"children":3791},{},[3792],{"type":1086,"value":3793},"Das Arbeitsblatt ist ein Schluesselprojekt im Java-Teil: Es zwingt dazu, OOP-Grundlagen, Typregeln und mathematische Logik in einem konsistenten Modell zusammenzufuehren. Wer dieses Projekt sauber fertigstellt, hat den Uebergang von isolierten Einzeluebungen zu echter Klassenarchitektur geschafft.",{"type":1080,"tag":1119,"props":3795,"children":3797},{"id":3796},"abschlussprojekt-und-abnahme",[3798],{"type":1086,"value":3799},"Abschlussprojekt und Abnahme",{"type":1080,"tag":1088,"props":3801,"children":3802},{},[3803],{"type":1086,"value":3804},"Fuer die finale Abgabe des Zahlenprojekts sollten folgende Nachweise vorhanden sein:",{"type":1080,"tag":1593,"props":3806,"children":3807},{},[3808,3832,3837,3842,3854],{"type":1080,"tag":1165,"props":3809,"children":3810},{},[3811,3813,3818,3819,3824,3825,3830],{"type":1086,"value":3812},"Klassen ",{"type":1080,"tag":1094,"props":3814,"children":3816},{"className":3815},[],[3817],{"type":1086,"value":1099},{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":3820,"children":3822},{"className":3821},[],[3823],{"type":1086,"value":1107},{"type":1086,"value":1101},{"type":1080,"tag":1094,"props":3826,"children":3828},{"className":3827},[],[3829],{"type":1086,"value":1115},{"type":1086,"value":3831}," vollstaendig implementiert",{"type":1080,"tag":1165,"props":3833,"children":3834},{},[3835],{"type":1086,"value":3836},"Invarianten schriftlich dokumentiert",{"type":1080,"tag":1165,"props":3838,"children":3839},{},[3840],{"type":1086,"value":3841},"Testfaelle fuer Normal- und Randbedingungen",{"type":1080,"tag":1165,"props":3843,"children":3844},{},[3845,3847,3852],{"type":1086,"value":3846},"Beispielrechnungen in einer ",{"type":1080,"tag":1094,"props":3848,"children":3850},{"className":3849},[],[3851],{"type":1086,"value":2274},{"type":1086,"value":3853}," oder in Unit-Tests",{"type":1080,"tag":1165,"props":3855,"children":3856},{},[3857],{"type":1086,"value":3858},"kurze Designbegruendung zu Interfaces und Rueckgabetypen",{"type":1080,"tag":1088,"props":3860,"children":3861},{},[3862],{"type":1086,"value":3863},"Abnahmefrage:",{"type":1080,"tag":1161,"props":3865,"children":3866},{},[3867],{"type":1080,"tag":1165,"props":3868,"children":3869},{},[3870],{"type":1086,"value":3871},"Kann jede Rechenmethode ohne Seiteneffekte mehrfach aufgerufen werden und liefert konsistente Ergebnisse?",{"type":1080,"tag":1088,"props":3873,"children":3874},{},[3875],{"type":1086,"value":3876},"Wenn diese Frage mit nachvollziehbaren Tests beantwortet ist, ist der Projektkern erreicht.",{"type":1080,"tag":1119,"props":3878,"children":3880},{"id":3879},"pruefungsnahe-kurzfragen",[3881],{"type":1086,"value":3882},"Pruefungsnahe Kurzfragen",{"type":1080,"tag":1593,"props":3884,"children":3885},{},[3886,3898,3910,3915],{"type":1080,"tag":1165,"props":3887,"children":3888},{},[3889,3891,3896],{"type":1086,"value":3890},"Warum sollte der Nenner einer rationalen Zahl nie ",{"type":1080,"tag":1094,"props":3892,"children":3894},{"className":3893},[],[3895],{"type":1086,"value":1298},{"type":1086,"value":3897}," sein?",{"type":1080,"tag":1165,"props":3899,"children":3900},{},[3901,3903,3908],{"type":1086,"value":3902},"Welche Invarianten muessen bei ",{"type":1080,"tag":1094,"props":3904,"children":3906},{"className":3905},[],[3907],{"type":1086,"value":1107},{"type":1086,"value":3909}," gelten?",{"type":1080,"tag":1165,"props":3911,"children":3912},{},[3913],{"type":1086,"value":3914},"Warum sind neue Rueckgabeobjekte oft robuster als Seiteneffekte?",{"type":1080,"tag":1165,"props":3916,"children":3917},{},[3918],{"type":1086,"value":3919},"In welchem Fall liefert das multiplikative Inverse keinen gueltigen Wert?",{"type":1080,"tag":1088,"props":3921,"children":3922},{},[3923],{"type":1086,"value":3924},"Mit diesen Fragen wird das Projektwissen von Implementierung auf Begruendungsebene gehoben.",{"type":1080,"tag":1119,"props":3926,"children":3928},{"id":3927},"weiterfuehrende-praxisaufgabe",[3929],{"type":1086,"value":3930},"Weiterfuehrende Praxisaufgabe",{"type":1080,"tag":1088,"props":3932,"children":3933},{},[3934],{"type":1086,"value":3935},"Erweitere das Zahlenprojekt um eine kleine Konsolenanwendung, in der der Nutzer zwei Zahlenobjekte eingibt und eine Operation waehlt.",{"type":1080,"tag":1088,"props":3937,"children":3938},{},[3939],{"type":1086,"value":3940},"Pflichtpunkte:",{"type":1080,"tag":1593,"props":3942,"children":3943},{},[3944,3949,3962,3967],{"type":1080,"tag":1165,"props":3945,"children":3946},{},[3947],{"type":1086,"value":3948},"Eingaben validieren",{"type":1080,"tag":1165,"props":3950,"children":3951},{},[3952,3954,3960],{"type":1086,"value":3953},"Sonderfaelle (",{"type":1080,"tag":1094,"props":3955,"children":3957},{"className":3956},[],[3958],{"type":1086,"value":3959},"Nenner 0",{"type":1086,"value":3961},", Division durch 0) sichtbar behandeln",{"type":1080,"tag":1165,"props":3963,"children":3964},{},[3965],{"type":1086,"value":3966},"Ergebnis in normalisierter Form ausgeben",{"type":1080,"tag":1165,"props":3968,"children":3969},{},[3970],{"type":1086,"value":3971},"mindestens zehn reproduzierbare Testfaelle dokumentieren",{"type":1080,"tag":1088,"props":3973,"children":3974},{},[3975],{"type":1086,"value":3976},"Damit wird aus dem Klassenprojekt ein kleines, vollstaendig testbares Anwendungsszenario.",{"type":1080,"tag":1119,"props":3978,"children":3980},{"id":3979},"mini-reflexion",[3981],{"type":1086,"value":3982},"Mini-Reflexion",{"type":1080,"tag":1088,"props":3984,"children":3985},{},[3986],{"type":1086,"value":3987},"Das Zahlenprojekt ist besonders wertvoll, weil es Regeln, Typen und Rechenlogik gleichzeitig fordert. Genau diese Kombination macht den Unterschied zwischen lauffaehigem Code und stabiler Modellierung.",{"type":1080,"tag":3989,"props":3990,"children":3991},"style",{},[3992],{"type":1086,"value":3993},"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":3995},[3996,3997,4001,4006,4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4025,4026,4028,4029,4030,4032,4037,4038,4039,4040,4041,4042,4043,4044,4045],{"id":1121,"depth":33,"text":1124},{"id":1187,"depth":33,"text":3998,"children":3999},"Baustein 1: NatuerlicheZahl",[4000],{"id":1199,"depth":59,"text":1202},{"id":1519,"depth":33,"text":4002,"children":4003},"Baustein 2: GanzeZahl",[4004,4005],{"id":1588,"depth":59,"text":1591},{"id":1633,"depth":59,"text":1636},{"id":1669,"depth":33,"text":4007},"Baustein 3: RationaleZahl",{"id":1760,"depth":33,"text":1763},{"id":1824,"depth":33,"text":1827},{"id":1950,"depth":33,"text":1953},{"id":2001,"depth":33,"text":2004},{"id":2107,"depth":33,"text":2110},{"id":2174,"depth":33,"text":4014},"Warum GanzeZahl keine Subklasse von RationaleZahl sein muss",{"id":2238,"depth":33,"text":2241},{"id":2329,"depth":33,"text":2332},{"id":2601,"depth":33,"text":2604},{"id":2685,"depth":33,"text":2688},{"id":2763,"depth":33,"text":2766},{"id":2802,"depth":33,"text":2805,"children":4021},[4022,4023,4024],{"id":2813,"depth":59,"text":1099},{"id":2846,"depth":59,"text":1107},{"id":2915,"depth":59,"text":1115},{"id":2956,"depth":33,"text":2959},{"id":3041,"depth":33,"text":4027},"ggT und selbstKuerzen robust implementieren",{"id":3271,"depth":33,"text":3274},{"id":3317,"depth":33,"text":3320},{"id":3436,"depth":33,"text":4031},"toString als Testhilfe",{"id":3514,"depth":33,"text":3517,"children":4033},[4034,4035,4036],{"id":3520,"depth":59,"text":1099},{"id":3548,"depth":59,"text":1107},{"id":3571,"depth":59,"text":1115},{"id":3614,"depth":33,"text":3617},{"id":3653,"depth":33,"text":3656},{"id":3712,"depth":33,"text":3715},{"id":3746,"depth":33,"text":3749},{"id":3785,"depth":33,"text":3788},{"id":3796,"depth":33,"text":3799},{"id":3879,"depth":33,"text":3882},{"id":3927,"depth":33,"text":3930},{"id":3979,"depth":33,"text":3982},"markdown","content:01_Programmierung:02_Java:04_OOP_Teil_II:02_Projekt_Zahlen:de.md","01_Programmierung/02_Java/04_OOP_Teil_II/02_Projekt_Zahlen/de.md","01_Programmierung/02_Java/04_OOP_Teil_II/02_Projekt_Zahlen/de","md",1787079992926]