Grundlagen d. Informatik u. Programmierung 2: 4.1 Vererbung: Einführung (SoSe 2020) Visual Computing WH https://www.youtube.com/watch?v=BJiXFZt2M4U Transkript (automatisch erstellt) 0:00 [Musik] dach zusammen wir kümmern uns jetzt um vererbung in diesem blog von videos da 0:11 sind wir eben wieder bei der objektorientierten programmierung und wir starten mit einer relativ knappen einführung in das thema und gucken uns 0:20 code an den war aus der einführung in die objektorientierte programmierung hier aus dem video schon kennt oder zumindest sollten sie den wiedererkennen 0:28 und wir gehen dann in den späteren videos 2 bis 4 zu diesem teil auch ein bisschen tiefer aber fangen mit dem einfachen beispiel 0:37 an machen aber noch mal einen schritt zurück zu dem was pianist raus druck zur objektorientierten programmierung geschrieben hat das ging so in dem 0:46 artikel probleme shake shake shake shake funktion es etwas schreibt da probleme in der programmierung gibt's bisher was nicht objektorientiert machen das war 1:11 mir generelle konzepte haben die wir nachher weiter konkretisieren oder spezialisieren und dass das wahrscheinlich nicht ganz so ausdruckbar 1:21 ist bisher dann geht's weiter expressionistischen taking advantage of the financing oriented programming ja das war im endeffekt das was ich gerade 1:30 schon gesagt hatte objektorientierte programmierung macht genau das zu greifbar oder benutzt genau das dass ich das ich mir um diese konzepte gedanken 1:40 mache dass ich eben ein generelles objektbeschreibung klasse was auch immer habe und davon dann spezialisieren kann das ist objektorientierte programmierung 1:50 jetzt geht es noch mal weiter language of construction listen to be expressed in this supports object oriented programming language ist und dadurch als 2:04 wir das zitat beim letzten mal schon hatten dahin gesagt ich kann durchaus in cee objektorientiert programmieren oder quasi objektorientiert denken und 2:14 arbeiten die sprache an sich unterstützt das konzept nicht und genau mit diesem ansatz gucken wir jetzt noch mal rein 2:23 vererbung das ist das thema dieses vier blocks gegen doch schon wenn sie ein c programmierer fragen wird der ihnen auch sagen ja klar machen wir das nc auch ja 2:35 da muss man aber schon sagen ganz kleines bisschen dann für uns seinen tricks anwenden vielleicht um dahin zu kommen dass gucken wir mal das kennen 2:46 sie wir haben unsere person die einen vornamen und einen nachnamen hat das hat man ganz am anfang an diesem beispiel wo 2:54 wir vom hohen speicher bis hin nach her zu datenstrukturen oder klassen gegangen sind wir haben die personen die hat einen vornamen hier und einen nachnamen 3:04 und alles zusammen ist in einer datenstruktur zusammengefasst und klassisch sowie das in szene üblich ist damit ich nicht strack person schreiben 3:12 muss wenn ich nachher benutzer steht da noch mal ein teil des davor und der teig der vom truck person geht daneben auf anpassen was mache ich damit ich wollte 3:23 ja dem beispiel nicht nur personen haben ich habe ja auch studierende studierender ist auch wieder eine eigene datenstruktur ebenfalls wieder mit dem 3:30 trakt jugend aufgeteilt deffte aufs jugend was steckt da drin da steckt ein personen drin und die wird jetzt erweitert oder 3:41 spezialisiert in dem aus einer allgemeinen person ein student eine studentin wird und der matrikelnummer ihm dran gehängt wird und dann in den 3:50 einführenden beispiel was wir hatten nicht nur das war block 2 haben wir dann noch eine studierende an studierenden in einem studiengang modelliert ebenfalls 4:02 wieder der datenstruktur ebenfalls wieder das tief auf genau den gleichen namen damit ich mir das truck sparte hin zu schreiben was haben wir da drin und 4:11 da haben wir auch wieder dass die datenstruktur ist jugend drinstehen spezialisieren die aber noch weiter in das ist ein student eine studentin in 4:22 einem studiengang der oder die nach einer bestimmten studienordnung studiert naja wenn wir das angewendet haben können wir 4:30 das ganz genauso schreiben wir können uns unsere erste studierende bauen jane appleseed mit der matrikelnummer dem studiengang den sie studiert und die 4:39 prüfungs ordnung eintrage eintragen nachdem sie studiert und das ganze können wir uns dann in der prüfungs liste ausgeben wenn wir so wollen wir 4:47 können uns von unserer jane den teilst jugendhaus geben und da rein gucken und jugend ist eine person und eine person hat einen vornamen leerzeichen das 4:59 gleiche spiel für den nachnamen und dann immer noch fragen unsere gute jane studiert doch mit einer matrikelnummer und anschließend jane studiert in einem 5:08 studiengang jane hat hinterher auch eine prüfungs ordnung nach der sie studiert das kriegt man in cee hin und gewissermaßen denken sie da schon 5:21 objektorientiert im sinne von unser student unsere studenten in einem studiengang erbt das student sein und dieser student diese studentin erbt auch 5:33 wieder dass personen sein wenn man ein ganz kleines bisschen genauer hinguckt ist das tatsächlich nicht vererbung genau genommen hat unser in einen 5:48 studiengang eingeschriebener student und so in eingeschriebene studentinnen in einem studiengang hat ein feld student studentin und dieser datensatz wiederum 6:00 hat ein feld person das ist nicht die ist beziehung die ich eigentlich in der färbung haben möchte ich möchte eigentlich schreiben 6:09 der student in einem studiengang ist ein student und das wiederum ist eine person das ist aber nicht diese mutation das hier ist er eine art in rotation 6:20 macht aber nix viel anderes konnte ich in zehn nicht machen guck mir noch mal hin ich musste es so schreiben und da finden 6:28 wir auch wieder dieses hat jane hat nämlich die studentin diese studenten hat wiederum eine person und diese person hat an vornamen 6:41 das sehen wir also und noch im code wenn wir zu dieser ist beziehung wollen würden wir es gerne anders schreiben und zwar so dann ist jane nämlich eine 6:54 studentin und die studentin ist gleichzeitig eine person und damit hat jain als studentin und als person den vornamen und ich muss nicht mehr den 7:04 umweg gehen schreiben wir das im ml notation sind wir genau hier dann sieht sich so aus der student die studentin in einem studiengang erbt von student oder 7:18 studentin und das hier wiederum ihr habt von personen und genau das können wir in c++ auf diese weise ausdrücken wir bauen uns die datenstruktur personen 7:30 genau wie vorher mit vor und nachnamen jetzt erbt die datenstruktur student aber öffentlich von der person also dieser pfeil mit der offenen fall spitze 7:41 nach oben ist ingo tatsächlich so ausgedrückt und hinzugefügt wird jetzt lediglich die matrikel nummer und ähnliches passiert nachher mit juden den 7:50 programmen auch hier wird wieder öffentlich geerbt für dieses beispiel von der klasse jugend und als verfeinerung kommt dazu einmal der 7:59 studiengang und die studienordnung und der anwendenden coach auf der folie ist gleich geblieben werden uns jetzt einfach mal von unten nach oben gebaut 8:06 damit sie war an der stelle die übersicht behalten ok so sehr es in c++ aus für das beispiel was ich in dieser einführung 8:18 verwendet habe von speicher hinzu klassen immer noch mal ein anderes beispiel um das vielleicht noch ein bisschen klarer zu machen was da 8:25 passiert und was da noch nebeneffekte sein können nehmen wir drei elektrowerkzeuge links ein bohrer in der mitte eine kreissäge und rechts band 8:37 schleifgerät alle drei sind ja als elektrowerkzeuge sicherlich mit einem motor ausgestattet motor im bohrer motor einer kreissäge 8:48 und ein motor im band schleifgerät in den motor kann jetzt jeweils natürlich ein anderer typ von motor verbaut sein also genauer gesagt in dem feld motor 8:58 kann jetzt ein anderer typ von motor verbaut sein aber es gibt in bora irgend etwas wo ich ein motor einstecken kann es gibt der kreissäge irgend etwas wo 9:08 ich ein motor einstecken kann und es gibt im band schleifgerät irgend etwas wo ich ein motor einstein packen kann und alle drei geräte haben sicherlich an 9:18 und ein ausschalter hier finde ich im buch den finde ich in der kreissäge und den finde ich in bands live geräte und dann haben alle drei 9:30 etwas spezifischer funktionen und eigenschaften natürlich und zwei gucken wir uns hier an der bohrer kann bohren kreissäge kein segen oder schneiden und 9:45 das band schleifgerät kann schleifen was machen wir jetzt damit das sind alles drei elektrowerkzeuge die haben ein paar gemeinsamkeiten und 9:54 die haben paar unterschiede feinheiten die sie dann wieder spezifisch für sich machen oder spezieller machen vom elektrowerkzeug hin zu dem ganz 10:03 speziellen elektrowerkzeug was dann sind und diese gemeinsamkeiten die würden wir gerne tatsächlich zusammenfassen hier an der stelle in der klasse 10:14 elektrowerkzeug warum weil diese gemeinsamkeiten wenn wir das in kot ausdrücken doppelt vorkehren der motor mit dem einen ausschalter kam empor 10:25 vorkam in der kreissäge vorkam im band schleifgerät vor war natürlich unterschiedlich waren unterschiedlicher motor bei der schalter ist auch darum 10:32 das konzept ist das gleiche jeweils das gleiche und das würde ich natürlich gerne in einer gemeinsamen eltern klasse oder basis klasse zusammenfassen was 10:43 daneben das elektrowerkzeug ist dadurch dass ein bohrer an elektrowerkzeug wird es dadurch ist eine kreissäge ein elektrowerkzeug ist 10:51 und dadurch dass ein band schleifgerät ein elektrowerkzeug ist haben die automatisch ein motor mit an- und ausschalter und dass dieses haben 11:03 automatisch kann ich durch vererbung ausdrücken weil alle drei an elektrowerkzeug sind und je nachdem wie ich durch dieses diagramm gehe habe ich 11:12 von unten nach oben oder von oben nach unten gehe generalisierte ich einmal vom bohrer zu dem generellen konzept zu der generellen klasse elektrowerkzeug oder 11:24 wenn ich von oben nach unten gehe spezialisiere ich das elektrowerkzeug hin zu einem bandschleifer da es hier wie gesagt einmal als quasi uml diagramm 11:34 ausgedrückt und jetzt nochmal in c++ code ich habe meine klasse elektrowerkzeug mit den öffentlichen methoden an und ausschalten und den 11:45 privaten attribut motor da kann ich natürlich gucken dass ich jeweils den richtigen motor ein stecker aber ich habe einfach wo ich einen motor 11:53 einbauen kann aber ein an- und ausschalter gibt es erstmal dadurch dass es ein elektrowerkzeug ist und das fach für den motor gibt es auch dadurch dass 12:02 es elektrowerkzeuge als die generelle basis klasse spezieller wird's wenn ich daraus einen bohrer mache hier oben eine kreissäge oder ein band schleifgerät 12:13 alle drei erben öffentlich vom elektrowerkzeug hier und hier auch nochmal sie erben öffentlich davon damit sind sie elektrowerkzeuge im gegensatz 12:26 zu dem einführenden beispiel haben aus c hier ist es sie sind tatsächlich elektrowerkzeuge kriegen also automatisch den an- und ausschalter mit 12:34 und kriegen automatisch auch den motor mit können dann aber etwas spezielleres spezialisieren also das werkzeug durch eine funktion zum boden durch eine 12:45 member funktion zum schneiden bei der kreissäge und durch eine member funktion zum schleifen beim bandschleifer und jetzt mal immer noch mal ein ganz 12:54 kleines bisschen von dem gemälde graben wieder rein dieses erbt von drücken wir da natürlich hier mit den pfeilen aus und dann haben wir beide diagramme 13:03 endeffekt wieder zusammengebracht haben wir den code und einmal die schreibweise im ml diagramm was haben uns angeguckt vererbung ging in cee als art und weise 13:17 zu programmieren das ist vielleicht nicht ganz so komfortabel warum es ist nicht komfortabel weil mir die sprache die ausdrucksweise nicht zur verfügung 13:25 stellt dann schlicht und ergreifend weil dadurch c nicht objektorientiert ist im sinne von die sprache ist nicht objektorientiert arbeiten kann ich da 13:34 trotzdem gewissermaßen objektorientiert und dann haben uns angeguckt da sich diese vererbung in c++ tatsächlich mit bordmitteln als echte 13:45 vererbung ausdrücken kann die sprache also dann tatsächlich objektorientiert ist im sinne von strauß druck klar es wäre sehr verwunderlich strauß trupp 13:53 hat's erfunden das c++ und wir haben uns ein ganz kleines ein führendes beispiel angeguckt einmal genau genommen zwei einmal das mit den studierenden und 14:03 einmal das mit den elektrowerkzeugen und das wird uns wahrscheinlich auch noch ein kleines bisschen begleiten [Musik]