Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

04.4.1 Polymorphie angewendet, Teil 1

Jörn Loviscach18:30 3.265 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 116 Zeilen
Herunterladen
  1. wie gehe ich nun damit um ich habe gesagt die kindklassen Instanzen der kindklassen dürfen die Instanzen der Mutterklasse vertreten dass das der
  2. erste wesentliche Schritt zur Polymorphie ist für den lückendex Nummer 9 führe ich das jetzt mal tatsächlich vor was dieses vertreten heißt Sie
  3. können sagen auch ich brauche mal ein neues Meeting das heißt von mir aus
  4. M aber ich baue da jetzt kein neues Meeting das könnte ich ja ich könnte da jetzt ein neues Meeting bauen warum baue ich nicht einfach ein neues business
  5. meeting eine Instanz der Kindklasse die jetzt eben eine Instanz der Mutterklasse vertritt schreibe ich jetzt blöderweise rein wahrscheinlich DateTime DateTime
  6. now auf die Schnelle irgendeine Uhrzeit zu habenss irgendeine timpanp from was auch immer so so viel
  7. Stunden irgendein Titel was wollen wir noch wir wollten ein Budget haben 20,0 dezimal wir wollten ein Topic haben
  8. Deff ser einfallsreich so damit habe ich ein business meeting gebaut der konstraktor von business meeting wird
  9. aufgerufen aber das business meeting verwende ich jetzt um hier das Meeting zu vertreten da steht m ist die Hausnummer kann sich erinnern
  10. m ist die Hausnummer eines Meetings und ich weiß ins geheim dieses Meeting ist eigentlich gar kein meeting sondern stillschweigend ein business meeting
  11. aber das stört mich ja gar nicht weil das business meeting öffentlich all das kann was das Meeting kann deshalb kann das dieses Meeting da vertreten und ich
  12. kann jetzt hier z.B Fragen in P m.piority nach der Priorität Fragen und diese Priorität wird hoffentlich jetzt nicht Null sein für
  13. das nackte Meeting wäre die Priorität Null aber dieses Meeting ist ja einfachgabtes business meeting wenn Sie das hier nicht sehen würden würden sie
  14. meinen h da müsste jetzt ja null rauskommen weil das Meeting die Priorität Null hat aber eigentlich ist das Meeting ein business meeting deshalb
  15. wird jetzt hoffentlich die Priorität 10 rauskommen to da sind vi und die Priorität ist c also ich rufe ihr die Eigenschaft
  16. priority von einem Meeting augenscheinlich auf aber ins geheim wissen wir das Meeting ist ein business meeting und deshalb kommt
  17. da als Priorität 10 raus es wird also immer bei den virtuellen und bei den überschriebenen dann überschriebenen Methoden wird immer die richtige Methode
  18. aufgerufen genauso bei den virtuellen und danach überschriebenen properties wird die richtige aufgerufen die für das jeweilige
  19. Ding so Stopp wenn m stoppen lässt so das funktioniert soweit also da kommt tatsächlich ze
  20. raus gibt ze schreibe ich da mal hin bau mal weiter ich kann auch eine Liste anlegen von
  21. Meetings in der Liste von Meetings müssen nicht unbedingt nur Meetings stehen es dürfen auch business meetings stehen oder Dinners
  22. stehen Ableitungen davon Meetings natürlich erstmal bauen diese Liste so weil die Instanzen der Kindklasse
  23. Instanzen der Mutterklasse vertreten können darf ich jetzt sagen ich bau noch mal so ein neues business meeting ups ich da noch eine Klammer ne
  24. so baue ein neues business meeting ne baue ein neues business meeting nur business meeting blablabla und füge das zu dieser Liste
  25. an Meetings hinzu das ist also streng genommen kein echtes meeting sondern was verfeinertes aber das stört mich nicht
  26. wieder eine Instanz der Kindklasse die die Mutterklasse vertritt also in dieser Liste Meetings müssen nicht nur Meetings drin sein es darf alles an Kinden und
  27. Enkeln und Urenkeln und was auch immer drin sein in so einer Liste dann weil die auch alle das können was die Eltern schon gekonnt haben genauso kann in
  28. dieser Liste ein neues Dinner rein die darf ich also lustig mischen ich sage okay da kommt ein neues Ding ein neues Abendessen so das hat
  29. netterweise ein standardkonstraktor ohne Parameter alle lustig gemischt hauptsache es sind Meetings alles was in der Liste drin steht müssen Meetings
  30. sein oder in Klammern Ableitungen davon das frisst die Liste und dann kann ich natürlich hier genauso mir angucken was ist denn
  31. P m ne nicht m Meetings gibt mir Meeting 1 in der Liste also nicht Meeting 0 sondern Meeting 1 in der Liste
  32. gib mir Meeting ein in der Liste das ist also dieses Dinner gib mir dessen priority wie groß wird diese priority jetzt
  33. sein das wird Null sein weil das ein Dinner ist und das Dinner hat keine Überschreibung für priority
  34. wenn man in Dinner guckt ist Dinner DIN Dinner Dinner Dinner hier ist das Dinner Dinner überschreibt die priority nicht das heißt beim Dinner wird die priority
  35. funktionieren wie in der Mutterklasse und in der Mutterklasse gibt sie null des wir da null rauskommen und wenn ich
  36. nach dem nach der priority von Null Frage wird es natürlich wieder 10 sein weil in Meetings Null steht ein business meeting bevor ich Unsinn erzähle
  37. probieren wir es lieber einmal aus also den hier ausführen nächste Schritt
  38. den hier ausführen in P steht 10 drin weil Meetings von Null auch wenn das eine Meeting Liste ist eigentlich gar kein Meeting ist sondern ein business
  39. meeting und deshalb gibt hier die priority 10 und wenn ich zum nächsten gehe Meeting 1 ist ein Dinner und das hat die priority Null als dummes
  40. Beispiel sowas wie sowas dann in Aktion aussehen kann also sie können sich dann nachher nicht mehr drauf verlassen wenn Klasse irgendwo als Meeting auftaucht
  41. dass das im Kern auch wirklich ein Meeting ist es kann auch ein Kind davon sein eine Instanz der Kindklasse davon sein das kann überraschende Effekte
  42. haben aber typischerweise hat es sehr hilfreiche Effekte was ist einem z.B ererspart ist ein Switch Case wenn Sie früher sowas hatten oh ich habe eine
  43. Liste an Meetings und ich muss jetzt das wichtigste rausfinden denn sie erstmal rausfinden müssen was ist der Typ vom jeweiligen meeting und dann haben sie
  44. für den jeweiligen für das jeweiligen für den jeweiligen Typ an Meeting haben Sie eine bestimmte priority und entscheiden sich dann das wird dann
  45. typischerweise irgendwas mit einem Switch Case ich gehe die Liste durch und habe für jeden Eintrag irgendein Switch Case mit dem ich alle Typen dann durch
  46. dekliniere das ist hier nicht mehr nötig ich frage einfach jedes Ding direkt gib mir was du meinst was richtig ist tu was du meinst was richtig ist wenn sie in
  47. objektorientierter Programmierung irgendwo ein Switch Case haben ist typischerweise was faul an der konstruk die meisten Switch cases kann man durch
  48. solche Konstruktionen beseitigen indem man nur richtig ableitet wir sehen das sowieso in Aktion hier bei dem main
  49. window was das Ableiten so alles natürlich nicht da sondern hier was das Ableiten so alles nettes tut hier steht ja mein main window
  50. ert von der vorgefer dichten Klasse window so funktioniert das Ganze deshalb ist da alles mögliche schon eingebaut sie können sich ja angucken was denn
  51. schon eingebaut ist und Punkt alle diese Methoden und properties und was auch immer da stehen
  52. noch andere Sachen Events alle diese Sachen alle diese Sachen ich sollte vielleicht nicht sagen alle diese Sachen fast alle diese Sachen
  53. sind von der Mutterklasse geerbt ein paar andere können noch paar einzelne können noch anders stehen falls sich jemals gewundert haben dass hier
  54. partial steht ein Teil dieser Klasse steht in ein anderen Datei deshalb steht hier partial nur eine fußnot ignorieren sie das
  55. ansonsten diese Mutterklasse stellt praktisch alle diese Methoden und properties und andere Sachen bereit die Erbe ich so funktioniert das überhaupt
  56. deshalb muss ich das nicht alles schreiben deshalb funktioniert das mehrter automatisch ich sage nur was mein window mein main window besonders
  57. macht insbesondere braucht es konstraktor der wird ja nicht geerbt der konstraktor es kriegt so ein paar Funktionen zur
  58. Ereignisbehandlung und das war's hier dann sogar schon in dem Fall und ein paar Sachen die vor ihren Augen versteckt sind weil sie in anderen Datei
  59. stehen die ich jetzt auch lieber gar nicht zeigen will weil sie eher fürchterlich aussehen also da sehen sie diese
  60. Polymorphie in Aktion mein window was ich hier baue ist ein Spezialfall eine Erweiterung von window was mir Microsoft vorprogrammiert
  61. hat es gibt eine Klasse von der man automatisch erbt ohne dass es dabei steht das hat glaube ich im Praktikum schon zu einigen Verwirrungen
  62. geführt was eigentlich immer dabei steht ist folgendes ich Erbe von der Klasse Object das ist so das die
  63. Minimalausstattung in c# in in Java ist das genauso in C++ nicht in in Java und Shar gibt es so ein Objekt mit Minimalausstattung von dem
  64. ich grundsätzlich Erbe das kann ich nicht ändern ich erbe immer davon Punkt das steht dann auch nicht dabei man könnte es dazu schreiben das wäre ein
  65. bisschen affig es steht einfach nicht dabei weil sowieso immer davon geerbt wird und diese Klasse Object was auch lustig ist dass eine Klasse Objekt heißt
  66. kann ich auch nichts für hat sich so eingebürgert diese objectklasse hat so ein paar Standard Sachen die ich überschreiben
  67. kann sie können ja einfach weiß hier Meeting scheint war nichts zu erben aber wenn sie jetzt overright tippen bietet ja trotzdem bisschen was
  68. an das kommt nicht aus dem irgendwo wir sehen object equals und doch ja object getthh Code und vor allen D object to String das ist der
  69. spannendste von den drei die ich hier per se Erbe also ich Erbe von einer Klasse die heißt object die Mutterklasse für
  70. alles und insbesondere Erbe ich damit hier diese mit Methode to String die wollte ich noch mal ausdrücklich vorführen also sie können
  71. in jeder Klasse die sie schreiben können Sie to String überschreiben weil jede Klasse auch ohne dass sie sagen von Object erbt deshalb haben Sie überall
  72. diese virtuelle Methode drin können sie überschreiben und sollten Sie auch überschreiben ganz sinnvoll wäre hier zurückzugeben was man den so ein
  73. wichtigen Daten hat M sagen wir mal was haben wir hier das wäre nachdenk nachdenk
  74. nachdenk Meeting Meeting Plus und dann gebe ich einfach die wesentlichen Angaben plus when ne tit soll ich vielleicht
  75. zuerstt Plus und ein Lehrzeichen und wann und ein Lehrzeichen und wie lange übrigens ganz stillschweigend was da schon passiert hier steht plus when
  76. das ist eigentlich schon komisch dass das geht das ist eine Zeichenkette das ist eine Zeichenkette das ist eine Zeichenkette Plus für Zeichenketten in
  77. Java genauso soll heißen Zeichenketten aneinander hängen und jetzt wird plötzlich ein when addiert aber when ist keine Zeichenkette
  78. wen ist eine DateTime ein Zeitpunkt mit Datum und Uhrzeit was hierinter im Hintergrund passiert ist das automatisch für das
  79. aufgerufen wird wenn das geschrieben wird passiert automatisch das hier na ma wir das hier das ist was automatisch passiert wenn Sie das Schreiben diese du
  80. stringfunktion kommt an allen und Ecken Ecken und Enden automatisch vor in dem Framework wo immer irgendwas zu einer Zeichenkette werden soll ruft das
  81. Framework to String auf hier passiert es automatisch ich schreib analog hier auch noch mal in den in die dinnerklasse so und bei der
  82. business meeting auch noch in die Klasse rein natürlich nicht Dinner sondern business
  83. meeting Meeting sobald irgendeine Instanz von diesen Klassen sich jetzt in eine
  84. Zeichenkette verwandeln soll wird diese überschriebene virtuelle Methode aufgerufen wir könnten das wir jetzt super blödes Beispiel mache ich das
  85. gerade mal ich kann z.B den Inhalt von meinem Knopf der hieß ne warte wenn ich dafffe Button 1 davon nehme ich mal den Inhalt Content und den setze ich jetzt
  86. mal auf habe ich ein reines Meeting habe ich hier gar nicht egal nehme ich den
  87. nicht Meetings von Null den setze ich mal auf Meetings von Null von Null ist ja eigentlich ein
  88. Meeting ich brauche aber eine Zeichenkette und der wird jetzt hoffentlich einfach dafür to String aufrufen um die Zeichenkette zu
  89. generieren das heißt sobald ich den Knopf klicke passiert das hier oben und dann wird zum Abschluss hier noch aus dem Meeting Meetings Null das heißt
  90. diesem business meeting hier dieingfunktion aufrufen um den Inhalt vom Knopf zu setzen das mal klappt das heißt auf den Knopf müsste stehen
  91. business meeting denn das habe ich eben als z stringfunktion gehabt und Achtung business meeting das ist natürlich die völlig unsinnige Anwendung dafür aber
  92. sie sehen wie das dann in Aktion aussieht sobald irgendwas in dem Framework eine Zeichenkette haben will ruft es im Zweifelsfall ihre eigene to
  93. String Funktion auf kommenti ich mal wieder aus und was total hilfreich ist ist dass der die
  94. Bagger auch ihre ting Funktion aufruft ich gehe hier noch mal rein dann guck gucken wir uns die Werte die wager
  95. an ja D sehen Sie hier die Variable a halt a wo ist a ach so die gab's vorher
  96. schon bei der Variablen a steht jetzt business meeting bei derblen B na gut das ist ein M das Meeting m ist ein business meeting
  97. offensichtlich da sehen sie Meeting m wird als business meeting da wiedergegeben ich könnte noch mal in Meetings reingehen
  98. hier die mal auf im Meetings rein dann sehen Sie hier A0 ist ein business meeting und eins ist ein Dinner der ruft mir hier schön fleißig immer die toing
  99. Funktion auf für alles was drinnen steht so kommen die Zeichenketten hier zustande wenn Sie die to String Funktion nicht selbst
  100. überschreiben kommt automatisch einfach der Name der Klasse dann Stund die hier sowieso sowieso Punk business meeting und hier Stund sowieso sowieso Punkt
  101. Dinner aber das lustige ist wenn ich jetzt eben die toingfunktion selbst überschreibe kann ich auch sowas veranstalten ich nehme mal noch
  102. irgendeine variable Meeting baue ein neues [Musik] Meeting Q ein neues
  103. Meeting Meeting und schreibe wirklich mal was rein kopiere das mal ganz 30i von dem business
  104. meeting dass H wirklich was tut gehe mal hierhin und gucke was mir der diebagger dann anzeigt
  105. dieingfunktion für das Meeting als solches hatte ich ein bisschen raffinierter gebaut sie sehen hier steht Q noch auf 0 das ist noch nicht
  106. ausgeführt worden ich stehe vor der Zeile deshalb ist Q noch 0 der Verweis ist noch 0 erst jetzt im nächsten Schritt wird das nu ausgeführt
  107. werden und und hier kann ich direkt ablesen was drinnen steht mit der to String Funktion auch an dieser Stelle wird die to String Funktion aufgerufen
  108. Meeting bla war der Titel die Uhrzeit und die Länge hintereinander so wie ich das in der to stringfunktion angegeben habe also schon
  109. aus dem Grund sollte man den eigenen Klassen dieingfunktion überschreiben dass man hier in der Liste oder wenn man mit der
  110. Maus drüber geht sofort sehen kann was drinen steht sie können hier im Prinzip auch das Aufklappen und sehen dann noch mal im Detail was drin steht aber
  111. spätestens hier wenn Sie so eine Liste haben von hunderten von Sachen W s jetzt nicht mehr aufklappen da soll sofort stehen was da drin ist und das ist total
  112. hilfreich dann dann die toing Funktion überschrieben zu haben das ist dann genauso eine virtuelle Funktion wie alle anderen
  113. auch die man beliebig überschreiben kann das einzig komische ist dass diese virtuelle Funktion in einer Klasse steht die bisher gar nicht vorgekommen war
  114. weil die so natürlich ist ist dieser Form weil die so natürlich ist dass man sie gar nicht mehr hinschreibt über object müssen sie erstmal nichts
  115. mehr wissen denke ich als to String dass sie das Überschreiben können ach so das W lentex 10 gehesen wir hier
  116. den nach wo ist die String Funktion

Zum Nachlesen