Modellieren in der Informatik Ingo Bartling https://www.youtube.com/watch?v=_nmrfq7XE20 Transkript (automatisch erstellt) 0:01 hallo in diesem Video möchte ich kurz erklären wie man in der Informatik modelliert das heißt wie kommt man sozusagen von einer Idee zu einem 0:11 Programm zu einem ersten Entwurf so dass man tatsächlich sich dann hinsetzen kann und was programmieren kann also wie komme ich zu den Klassen und welche 0:19 Methoden brauche ich und welche Attribute brauche ich vielleicht und solche Sachen ich orientiere mich dabei an dem 0:25 Kreislauf der Wissenschaft die man vielleicht aus der Physik kennt dass man also so ein Phänomen nimmt wie warum ist der Himmel blau und dann abstrahiert man 0:32 daraus ein Experiment und dann untersucht man das Experiment hat irgendwelche Messwerte modelliert Gesetze und dann vergleicht man das 0:39 wieder und entweder passt das Gesetz dann ist gut und wenn es nicht passt dann muss man das diesen Kreislauf noch mal machen und sowas ähnliches gibt's 0:46 tatsächlich auch in der Informatik finde ich vielleicht bin ich mit der Meinung alleine aber ich finde das tatsächlich 0:52 gerade am Anfang wenn man noch sehr wenig Erfahrung hat eigentlich ganz hilfreich jetzt haben wir natürlich in der Regel 0:58 keine natürlichen Phänomene die wir untersuchen können sondern wir haben natürlich Ideen oder ein Problem was man lösen wollen oder eine Aufgabe die halt 1:04 vom Lehrer einfach kommt so was ist dann der erste Schritt den man macht und dieser erste Schritt das ist halt genau die Modellierung das heißt in der Regel 1:13 wird man halt aufgefordert kassenjahr kann man zu entwerfen Sequenzdiagramme Zustandsdiagramme was auch immer zu entwerfen dass man programmiert bitte 1:20 noch nicht sofort das ist machen tatsächlich eigentlich fast nur Anfänger den Fehler so macht sich bitte erstmal Gedanken und dieser erste wichtige 1:28 Schritt das nennt man halt die Modellierung das heißt auch hier überlege ich mir was ist wichtig was brauche ich später für mein Programm 1:34 überhaupt um die damit das Programm die Aufgabe löst wie das genau abläuft erkläre ich gleich auf der nächsten Folie jetzt machen wir erstmal nur ganz 1:41 kurz auch hier diesen Kreislauf fertig wenn Sie diesen Entwurf fertig habt also eure Klassendiagramme für den ersten Entwurf mal eines Programms habt dann 1:50 geht es natürlich daran dass man das implementiert dabei entscheidet sich zum Beispiel auch mit welcher Sprache man das macht 1:58 oft gibt es also große Programme haben auch oftmals mehrere Sprachen oder man sucht nach irgendwelchen libraries rum die einem vielleicht gerade diese 2:07 oberflächenprogrammierung abnehmen und so weiter und so fort also man implementiert dann 2:16 hat man ein Programm irgendwann das sollte man natürlich auch testen so und dann hängt es ein bisschen davon ab auch was jetzt genau die Aufgabe war 2:25 wenn man Glück hat dann ist man an der Stelle fertig in der Regel ist ein Programm nie fertig das heißt das was dann eher passiert ist dass man 2:34 evaluiert und vergleicht löst mein Programm jetzt tatsächlich die Aufgabe nehmen wir mal richtig großes Programm also zu Anfang der Corona Problematik 2:44 habe ich mir z.B überlegt wie ist denn das mit dieser Virus Ausbreitung ich fand das eigentlich ganz spannend sich mal zu versuchen das zu simulieren das 2:51 heißt meine Aufgabe war mir zu überlegen okay was brauche ich denn um so eine Ausbreitung zu simulieren das heißt ich habe modelliert ich habe überlegt ich 3:00 brauche Personen ich brauche ein Virus und so ein Virus hatten Ansteckungsrate und eine Lebensdauer und also ein Kram dann habe ich für mich entschieden dass 3:08 ich das mit processing implementiere und dann habe ich das getestet und geschaut verhält sich das sozusagen auch so wie man vielleicht erwartet was funktioniert 3:17 was funktioniert nicht dann hat es vielleicht nicht so funktioniert dann habe ich halt meine Modellierung verbessert meine Implementierung 3:22 angepasst dann habe ich wieder Programm gehabt dann habe ich wieder das gemacht und so läuft es die ganze Zeit im Kreis so haben wir jetzt schon ein bisschen 3:28 mehr Programmiererfahrung hat und schon mal was von Agila oder von agilen Projektmanagement gehört hat der wird es hier natürlich auch drin entdecken denn 3:37 im Grunde ist das hier schon fast agiles Projektmanagement man fängt sozusagen halt mit einem ganz kleinen Problem auch an dass man schrittweise aufbläst immer 3:45 in der Hoffnung oder immer mit dem Ziel also sollte schon passiert das sollte nicht nur Hoffnung sein dass man ein immer ein funktionierendes Programm hat 3:52 und nach der Evolution ergänzt man sozusagen immer ein neues Feature überlegt sie wo kommt das hin was muss ich denn beachten brauche ich 4:01 eine Datenbank brauche Netzwerk Zugriff oder was auch immer dann wird es implementiert dann wird es wieder getestet dann habe ich ein Programm und 4:08 dann sagt vielleicht der Auftrag ja okay es ist fertig oder man sagt halt nee cool wir hätten gerne noch ein Feature und so geht's dann immer weiter also das 4:15 ist so dieser Ablauf wie eigentlich programmieren ein bisschen abläuft relativ unspektakulär ist dann irgendwann vor allem hier dieses 4:23 implementieren da braucht man einfach viel Erfahrung man muss vielleicht viele libraries irgendwann mal kennen und viele Befehle kennen und so weiter das 4:30 ist tatsächlich nicht so einfach zu vermitteln das ist so ähnlich wie bei Kunstunterricht ja ich vergleiche programmieren auch ganz gerne immer mit 4:38 Kunstunterricht das eigentliche üben beim Zeichnen dass ja das keine Ahnung das ist halt einfach Übungssache 4:47 nichtsdestotrotz trotzdem Punkt hier diesen zweiten Schritt dieses Entwurf Klassendiagramm das kann man tatsächlich lernen ähm das ist so ähnlich wie beim 4:55 Zeichnen wenn ich lerne Portraits zu zeichnen kann ich mir aneignen welchen Abstand haben die Augen und wo sitzt der Mund und so weiter das heißt aber noch 5:02 längst nicht dass ich wirklich gescheites Portrait zeichnen kann so jetzt aber zurück zum Thema nämlich hier den modellieren wie macht man das 5:10 jetzt eigentlich wie geht man davor und das schauen wir uns jetzt hier einfach noch mal auf der zweiten Seite an also dieser Schritt von der Aufgabe von dem 5:18 Problem von der Idee die ich vielleicht für ein Programm habe was mache ich dann wirklich im Endeffekt weiter 5:26 wichtigstes Ziel dabei ist ich muss es ja irgendwie ab 3 abstrahieren also wenn ich beispielsweise eine wetter-simulation haben möchte oder ich 5:34 möchte das Verhalten von Kunden ein Supermarktkassen simulieren dann muss sie mir im Grunde überlegen was von diesem Supermarkt ist für mich nur 5:41 relevant also da ist zum Beispiel überhaupt nicht relevant was da verkauft wird vielleicht sondern es geht halt nur darum dass ich Kassen brauche und was da 5:48 für eine Kasse steht ist auch nicht relevant und solche Dinge also ich brauche sozusagen eine Abstraktion jetzt für unser Beispiel nämlich von der 6:00 Idee ein sehr einfaches Spiel weil es wenig Bestandteile hat das Spiel als solches ist natürlich schwer aber es lässt sich glaube ich ganz gut 6:06 implementieren und das Spiel heißt das Go-Spiel das habe ich jetzt hier mit einem sehr kleinen Feld einfach mal dargestellt 6:13 weil es ja das nur symbolisieren soll so ein go-spielfeld ich habe es jetzt hier sehe ich auch gerade eigentlich falsch dieses Steine aufgemalt eigentlich 6:21 sitzen die auf den Kreuzen und nicht auf den Feldern das soll jetzt auch mal egal sein es ist eigentlich 6:28 genau also dieses Spielfeld ist besteht halt aus einem Brett einem Holzbrett und auf diesem Holzbrett habe ich Felder ob das jetzt tatsächlich wie es hier 6:39 eigentlich falsch dargestellt ist welche Quadrate sind oder ob es dann die Punkte sind die kreuzungslinien auf die Sätze also eigentlich sollte ich das 6:46 vielleicht mal hier ergänzen ich mache es mal besser versuchen wir es mal so machen wir die knuddel hier alle weg die Knubbel kommen nämlich 6:54 eigentlich dahin also der erste Spieler der setzt jetzt ein bisschen groß das ist in dem Programm kann man schlecht 7:04 Knubbel malen so auf die Kreuzungspunkte so und dann kommt der nächste Spieler und der sitzt ein Stein dahin und dann 7:16 kommt der nächste Spieler da sitzt ein Stein der UPS aber versuch ne dahin 7:28 stop das war zu weit ist nur den anderen Steinen noch wegmachen weg weg weg weg weg so sieht das jetzt aus also ich habe mein Brett 7:38 genau auf dem Brett habe ich jetzt sozusagen Felder möglicherweise diese kreuzungslinie die definieren muss ist aber noch wir haben natürlich Steine 7:48 und diese Steine gibt es in zwei Farben ich habe jetzt hier rot und blau genommen eigentlich sind die schwarz und weiß aber das ist Farbe ist ja im Grunde 7:57 egal man muss halt nur unterscheiden können dann habe ich natürlich ein Spieler ich habe zwei Spieler 8:04 diese Spieler können ziehen bzw in dem Fall das ist ja kein Spiel wo die Steine gezogen werden die werden eigentlich nur gesetzt aber es ist im Grunde ein ein 8:11 Spielzug deswegen habe ich jetzt ziehen genannt und ich habe wie gesagt diesen Zug also wenn ich jetzt halt eine Software haben möchte möchte ich 8:18 vielleicht später mal die Idee haben dass ich so ein Zug auch zurücknehmen kann das heißt ich muss das was passiert ist in irgendeiner Form von Zug 8:24 speichern so das ist so mal die Idee die man vielleicht hat oder möchte Tic Tac Toe implementieren dann habt ihr im Grunde so ein ähnliches System auch 8:32 wieder mit zwei Steinen und diese drei auf drei Felder oder ihr wollt aber weiß nicht mensch ärger dich nicht oder keine Ahnung also gibt viele viele kleine 8:41 kurze Spiele die man da so wunderbar motivieren kann so wenn man soweit sich das mal analysiert hat und überlegt hat das hier ist im Grunde der erste Schritt 8:50 ja dieses was ist wichtig dann kommen wir zum nächsten jetzt kann man das tatsächlich sprachlich ganz gut analysieren und zwar 8:58 kann man sagen dass alles was ich jetzt hier so ein Substantiven habe das sind sozusagen meine Klassen ja da habe ich jetzt einige davon 9:09 nehme ich das Brett und ich habe das Feld also das die Steine ich habe den Spieler vielleicht auch den Zug später noch dazu denn dass 9:20 sie jetzt im ersten Entwurf erstmal weg dass ich die wieder zurücknehmen kann also der Brett Felder Steine und Spieler und diese Substantive die sind in der 9:29 Regel Klassen die ich später brauche also ich weiß jetzt schon ich werde ein klasse Brett brauchen ich brauche wohl eine Klasse fällt ich brauche eine 9:37 klassische Stein ich brauche eine klassische Spieler so jetzt kommen wir zu dem was ich gerade eben noch zurückgenommen habe so 9:43 und diese Klassen sind teilweise halt auch Attribute von Anna Klassen also zum Beispiel diese Klasse fällt ist ein Attribut eine Eigenschaft der Klasse 9:52 Brett ja weil es einfach so ist dass da kann man jetzt sich ein bisschen bei der Datenbank Theorie bedienen ein Brett hat viele Felder und ein Feld 10:05 gehört aber auch nur zu einem Brett also diese zwei Sprüche die ich in der Datenbank benutze kann man hier tatsächlich für den ersten Entwurf auch 10:11 benutzen das heißt ich habe hier so eine Eins zu Ende Beziehung wenn man so will dabei ist allerdings wichtig dass wenn ich jetzt nicht mehr Datenbank habe 10:19 sondern das mit irgendeiner Programmiersprache wie Java oder sowas Umsätze das wird anders umgesetzt also weil 10:27 Datenbanken müsste ich jetzt okay ich mache das ganze über Fremdschlüssel und der Franz Schlüssel hier auf die Seite wo das ist das wird beim Programmieren 10:35 wird es anders gemacht hier wüsste ich jetzt zum Beispiel das Brett bekommt ein Tribut Felder oder hat oder irgendwas auch immer und das ist dann Array oder 10:46 eine Liste oder irgendwie sowas also hier ist es beim Programmieren mit Programmiersprachen ist es genau andersrum als bei Datenbanken 10:53 so also nochmal ganz kurz Substantive werden immer ups da wollte ich zeigen Substantive werden zu Klassen und die Klassen können aber auch Attribute von 11:03 anderen Klassen sein so dann gibt es natürlich noch Adjektive das ist jetzt ganz simpel das sind hier meine Steine 11:11 [Musik] machen wir mal weg so hier oben eine Steine die sind rot oder blau oder schwarz oder weiß oder ich habe 11:19 irgendwelche anderen Spielfigur die haben den Skin oder die haben irgendwelche keine Ahnung Lebenspunkte diese Verlierern oder haben irgendwelche 11:28 Punkte gesammelt die muss ich speichern also irgendwie sowas und das letzte ist sind die Verben 11:36 wenn ihr eine Verben in den Texten habt in den Aufgaben Texten hier bekommen sind das sehr häufig tatsächlich Methoden 11:44 oder sie werden in der Regel nicht gebraucht also entweder ist es eine Methode oder ist es wird halt nicht gebraucht ziehen 11:50 ja ansonsten wenn Sie irgendein anderes Spiel habt wie zum Beispiel Mühle da gibt es einen unterschiedliche Verben ja man kann ein Stein legen und später kann 12:00 man ihn tatsächlich auch bewegen das heißt da wird sie zum Beispiel dass ein Spieler sozusagen diese zwei Zustände haben muss legen oder ziehen und die 12:10 Steine müssen sich auch verändern können das wird dann entsprechend alles umgesetzt ja das war sozusagen der der Versuch zu 12:19 erklären wie man an so eine Aufgabe rangeht dass man also sich den Text oder das Problem genau anschaut und sich überlegt okay meine Substantive sind 12:28 potenzielle Kandidaten für Klassen meine Adjektive die ich sehe oder die ich mir dazu überlege sind möglich Attributen zu den Klassen und die Verben sind mögliche 12:39 Methoden für meine Klassen so und daraus sollte man jetzt schon mal ein Klassendiagramm entwickeln können und der Rest der ergibt sich dann auch 12:48 so ein bisschen vielleicht dann beim Programmieren und ich erkläre es dann auch in dem nächsten Video wie man dann weitergeht 12:53 so das war es von meiner Seite zum Thema Modellierung bis zum nächsten Video macht's gut ciao