{"id":63561,"date":"2024-11-08T14:53:29","date_gmt":"2024-11-08T13:53:29","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=63561"},"modified":"2024-11-09T06:16:05","modified_gmt":"2024-11-09T05:16:05","slug":"informatik-oberstufe-zur-veranschaulichung-des-aktuellen-stoffes","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2024\/11\/informatik-oberstufe-zur-veranschaulichung-des-aktuellen-stoffes.htm","title":{"rendered":"Informatik Oberstufe, zur Veranschaulichung des aktuellen Stoffes"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2024\/11\/informatik-oberstufe-zur-veranschaulichung-des-aktuellen-stoffes.htm#comments'>2 Kommentare.<\/a>)<\/small> <\/div>\n<p class=\"wp-block-paragraph\">Ich wollte neulich den Stoff der vorhergehenden Stunde wiederholen und sichern, weil der Kurs mir ein wenig damit zu fremdeln schien. Also begann ich mit der Ank\u00fcndigung, dass wir jetzt etwas gaaaanz anderes machen w\u00fcrden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zur Wiederholung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Und zwar hatte ich hier <a href=\"https:\/\/www.geo.de\/geolino\/basteln\/22323-rtkl-anleitung-murmelbahn-aus-papprollen\">das sch\u00f6ne Foto einer selbstgebastelten Kugelbahn aus Klopapierrollen<\/a> gefunden. Nicht frei verwendbar, also verlinke ich nur darauf und zeige stattdessen eine Zeichnung von mir, die nat\u00fcrlich schon wieder ein wenig mehr von der Vorlage abstrahiert:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"921\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn1.png\" alt=\"\" class=\"wp-image-63566\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn1.png 500w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn1-163x300.png 163w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn1-81x150.png 81w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wir wollen, so die Aufgabe, eine solche Kugelbahn als Programm nachbauen, und das hei\u00dft erst einmal: Modellieren, ein Modell entwickeln. Davor wiederum m\u00fcssen wir entscheiden, wozu wir das Modell brauchen. Geht es darum, herauszufinden, wie sich das Material der Kugel auf das Verhalten beim Spielen auswirkt &#8211; Metall, Holz, Tischtennisball? Oder das Material der Klopapierrollen &#8211; Holz, Plastik, Metall? Oder wollen wir den Einfluss der Schwerkraft untersuchen, also wie sich eine Kugelbahn auf dem Mond verhalten w\u00fcrde? Nein, wir wollen, so die Vorgabe, nur eine Kugelbahn f\u00fcr ein einfaches Spiel haben, bei dem man sich Bahnen zusammenklicken kann und womit man F\u00fcnfj\u00e4hrige unterhalten kann. Das hei\u00dft, wir brauchen keine <em>physics engine<\/em>, keine Simulation von Schwerkraft und Reibung und so weiter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein erster Schritt beim Modellieren: Was brauchen wir f\u00fcr Objekte? Im Bild oben z\u00e4hle ich vierzehn Objekte. Die Frage nach den Eigenschaften der Objekte k\u00f6nnte man hier schon stellen, aber ich mache das gleich zusammen mit dem n\u00e4chsten Schritt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dann n\u00e4mlich: Kann \u00c4hneln sich die Objekte so, dass eine Aggregation m\u00f6glich ist, dass ich also Klassen dazu anlegen kann? Im Fall oben w\u00e4ren das sicher die Klassen: <strong>Kugel, R\u00f6hre, Auffangbeh\u00e4lter.<\/strong> Die Kugel h\u00e4tte &#8211; vielleicht &#8211; das Attribut Geschwindigkeit, zum Auffangbeh\u00e4lter fallen mir erst einmal keine Attribute ein, bei den R\u00f6hren gibt es: Farbe, L\u00e4nge, und Neigungswinkel. Als Klassendiagramm sieht das so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"501\" height=\"146\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen1.png\" alt=\"\" class=\"wp-image-63579\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen1.png 501w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen1-300x87.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen1-150x44.png 150w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der n\u00e4chste Schritt: Welche Beziehungen gibt es zwischen den Elementen? Das hei\u00dft manchmal auch Strukturanalyse. Da kommt dann zum Beispiel heraus, dass jede R\u00f6hre eine Nachfolgerr\u00f6hre hinten dran hat, an die sie die Kugel weiterreicht. Allerdings stimmt das nicht ganz: eine R\u00f6hre hat entweder eine weitere R\u00f6hre hinten dran oder einen Auffangbeh\u00e4lter. So ein <em>Oder <\/em>l\u00e4sst sich mit einer gemeinsamen Oberklasse l\u00f6sen, die ich hier R\u00f6hrenelement nenne:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"489\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen2.png\" alt=\"\" class=\"wp-image-63581\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen2.png 600w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen2-300x245.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen2-150x122.png 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Jeder Beh\u00e4lter ist auch ein R\u00f6hrenelement, und jede R\u00f6hre ist ein R\u00f6hrenelement; das bedeuten die Pfeile mit den Dreiecksspitzen. Und jede R\u00f6hre hat 1 R\u00f6hrenelement als Nachfolger. Das kann dann eine weitere R\u00f6hre sein, oder ein Beh\u00e4lter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Es gibt hier keine unmittelbare Beziehung zwischen Kugel und R\u00f6hre, dar\u00fcber kann man streiten, wie man \u00fcberhaupt \u00fcber alles beim Modellieren streiten k\u00f6nnen sollte. Das ist hier aber nicht wichtig. Und es ginge zur Not auch anders, man k\u00f6nnte R\u00f6hre und Beh\u00e4lter zusammenmischen; eine R\u00f6hre k\u00f6nnte dann eben auch keinen Nachfolger haben, und w\u00e4re dann ein ARt improvisierter Beh\u00e4lter.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au\u00dferdem hat jedes R\u00f6hrenelement eine Methode <code>empfangeKugel<\/code>. Diese Methode sieht in den Unterklassen aber jeweils unterschiedlich aus, der Beh\u00e4lter macht einfach nichts mit der Kugel, wenn er sie empf\u00e4ngt, ein R\u00f6hrenobjekt macht schon etwas, n\u00e4mlich es gibt sie an die n\u00e4chste R\u00f6hre weiter. (Dazwischen kann es die Geschwindigkeit der Kugel ver\u00e4ndert haben, je nach L\u00e4nge und Neigungswinkel. Auch die Dauer zum Durchlaufen k\u00f6nnte hier angepasst werden, die habe ich aber noch gar nicht modelliert.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Und wir haben, wie geneigte Oberstufensch\u00fcler und -sch\u00fclerinnen schon erkannt haben, das Kompositum-Muster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exkurs: Das Kompositum<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Kompositum-Entwurfsmuster taucht in der Informatik immer wieder mal auf, und zwar vor allem bei Elementen von grafischen Benutzeroberfl\u00e4chen. Es ist praktisch, wenn es darum geht, etwas zu gruppieren. Elementen. In der (jetzt) 12. Jahrgangsstufe Informatik ist das Kompositum-Entwurfsmuster Pflicht, und zwar im Zusammenhang mit den einfach verketteten Listen. Ich bin nicht ganz gl\u00fccklich dar\u00fcber, weil diese unsere Listen ohnehin bereits k\u00fcnstlich umst\u00e4ndlich gehalten sind (n\u00e4mlich ohne Referenz auf das Ende, und ohne L\u00e4ngenattribut, so dass halt jedesmal neu durchgez\u00e4hlt wird) und weil das Kompositum-Muster mir hier ein nicht ganz typischer Fall zu sein scheint. Aber muss halt, und sieht dann am Ende so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"388\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/kompositum_bluej_kardinalitatet.png\" alt=\"\" class=\"wp-image-63585\" style=\"width:700px;height:auto\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/kompositum_bluej_kardinalitatet.png 575w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/kompositum_bluej_kardinalitatet-300x202.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/kompositum_bluej_kardinalitatet-150x101.png 150w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der Kerngedanke: Es gibt Elemente, die einen oder meist mehrere Nachfolger haben (die hei\u00dfen: Kompositum), und andere Elemente, die keinen Nachfolger haben (die hei\u00dfen: Blatt). Zusammengehalten wird beides durch eine abstrakte, also nie unmittelbar verwendete, Oberklasse (hei\u00dft: Komponente), und kein Objekt wei\u00df von seinem Nachfolger, ob der jetzt ein Blatt ist oder ein Kompositum, sondern kennt es nur als Komponente. Mehr steht bei Wikipedia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vorteile des Kompositum-Musters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man das Modell erweitern m\u00f6chte, etwa um R\u00f6hren, die halb durchsichtig sind, oder R\u00f6hren, die eine kleine Glocke eingebaut haben, so dass die Kugel beim Durchgehen bimmelt (<a href=\"https:\/\/www.toggoeltern.de\/selbermachen\/basteln-gestalten\/klorollen-murmelbahn\">kann man auf dieser Bastelseite sehen,<\/a> auch als Video, ebenfalls ein Klorollenmodell), dann geht das leicht. Man muss sich nur \u00fcberlegen, ob man daf\u00fcr ein zus\u00e4tzliches Attribut (mit Glocke oder ohne) anlegen m\u00f6chte, oder eine zus\u00e4tzliche R\u00f6hren-Unterklasse (f\u00fcr Durchsichtigkeit). Das ist eine Designfrage, im Diagramm habe ich mal das eine, mal das andere verwendet:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"631\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen3.png\" alt=\"\" class=\"wp-image-63582\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen3.png 600w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen3-285x300.png 285w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen3-143x150.png 143w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der eigentliche Vorteil ist aber der, wenn ich ganz neue Elemente haben m\u00f6chte. Das kommt bei den Listen in der Schule \u00fcberhaupt nicht vor, weil es da nur ein Kompositum-Element gibt. F\u00fcr die Kugelbahn schlage ich ein zweites vor, den Verteiler, der die hereinkommende Kugel zuf\u00e4llig an einen von zwei m\u00f6glichen Ausg\u00e4ngen weiterleitet:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"923\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn2.png\" alt=\"\" class=\"wp-image-63565\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn2.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn2-228x300.png 228w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn2-114x150.png 114w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Daf\u00fcr lohnt sich sicher eine eigene Klasse, zumal sich hier etwas Grunds\u00e4tzliches \u00e4ndert &#8211; ein Verteiler hat <em>zwei <\/em>Nachfolge-Elemente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"631\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen4.png\" alt=\"\" class=\"wp-image-63583\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen4.png 600w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen4-285x300.png 285w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn_klassen4-143x150.png 143w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das l\u00e4sst sich bequem ins Kompositum-Muster einbauen, ohne dass man an den anderen Klassen etwas ver\u00e4ndern muss. Ebenso kann man sich nach und nach leicht weitere Bausteine einfallen lassen, ohne dass man an den bestehenden Klassen etwas \u00e4ndern muss, was nicht ginge, wenn man ohne Kompositum arbeiten w\u00fcrde. Da w\u00e4re der Looping, und der Dreierverteiler, die Teleportr\u00f6hre&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Was ist, wenn man eine Art Sackgasse mit Sprungfeder m\u00f6chte, so dass eine Kugel wieder in das vorherige Element zur\u00fcckspringt, eine Art Trampolin? Da gibt es mehrere M\u00f6glichkeiten. Entweder jedes Element hat nicht nur einen Nachfolger, sondern auch einen Vorg\u00e4nger, wie die doppelt verkettete Liste, oder man macht das so wie in Buch und Lehrplan, n\u00e4mlich recht umst\u00e4ndlich.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(2 Kommentare.) Ich wollte neulich den Stoff der vorhergehenden Stunde wiederholen und sichern, weil der Kurs mir ein wenig damit zu fremdeln schien. Also begann ich mit der Ank\u00fcndigung, dass wir jetzt etwas gaaaanz anderes machen w\u00fcrden. Zur Wiederholung Und zwar hatte ich hier das sch\u00f6ne Foto einer selbstgebastelten Kugelbahn aus Klopapierrollen gefunden. Nicht frei [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":63566,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[25],"tags":[227],"class_list":["post-63561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/murmelbahn1.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=63561"}],"version-history":[{"count":2,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63561\/revisions"}],"predecessor-version":[{"id":63608,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63561\/revisions\/63608"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/63566"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=63561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=63561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=63561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}