Nachdem ich verschiedene Dinge in der Geschichte des Klassendesigns untersucht hatte, ging ich allmählich zurück und kam zur Objektorientierung. Zu dieser Zeit wurde mir klar, dass die Objektorientierung nicht wirklich in Form war. Da Objektorientierung eine "Idee" ist, kann sie überhaupt genau definiert werden? Es gibt eine Frage, aber vorerst habe ich beschlossen, sie einfach auf meine eigene Weise zu organisieren.
Es gibt drei Prinzipien, die immer auftauchen, wenn Sie die Objektorientierung googeln. ·Verkapselung ・ Vererbung ・ Polymorphismus
Die Kapselung "versteckt" sich. Was bedeutet es, es zu verstecken? Vergleichen wir es also mit einem Auto.
Es gibt verschiedene Teile im Auto. Der Fahrer kann das Auto fahren, ohne die Teile einzeln zu kennen. Was der Fahrer wissen sollte ・ Gas geben = Geschwindigkeit erhöhen ・ Bremse treten = Geschwindigkeit reduzieren Alles was Sie tun müssen, ist die "Fahrmethode" wie zu kennen. Mit anderen Worten, Sie müssen nur die komplizierten Bewegungen im Inneren verbergen und wissen, wie man sie einfach benutzt.
Das Wichtigste dabei ist, dass jeder Teil eine gründliche Rolle spielt. Wenn das Gaspedal den Scheibenwischer bewegt oder wenn die Bremse ihn stört und nicht beschleunigt, selbst wenn das Gaspedal betätigt wird, handelt es sich nicht um ein Auto.
In Bezug auf die Programmierung haben "Klassen (Teile)" eine unabhängige Rolle und sollten "einfach zu bedienen" sein, ohne deren Inhalt zu verstehen. Ich kann Werte in einer Liste speichern, ohne zu wissen, was ArrayList.add implementiert ist.
Vererbung ist "Standardisierung / Abstraktion".
Vergleichen wir es noch einmal mit einem Auto. Es gibt verschiedene Arten von Autos wie leichte Autos, Limousinen und Lastwagen. Und alle Autos haben etwas gemeinsam, wie "Laufen" und "Menschen tragen". Mit anderen Worten, der Standard eines Autos kann gemeinsame Eigenschaften haben.
In Bezug auf die Programmierung entspricht es der Eltern-Kind-Beziehung einer Schnittstelle oder Klasse. Die Vererbung in Java wird häufig verwendet, um die Methoden der übergeordneten Klasse zu erben. Dies ist jedoch nur eine Funktion, und ich denke, das Wichtigste ist die Idee, dieselben Eigenschaften zusammen zu "standardisieren / abstrahieren". Eine gut standardisierte Quelle sollte klar sichtbar sein und nur wenige Korrekturen für das Hinzufügen und Ändern von Funktionen enthalten.
Polymorphismus wird Polymorphismus genannt, was bedeutet, dass dieselbe Methode unterschiedlich funktioniert. Dies wird erreicht, indem tatsächlich programmiert wird, was in der obigen Vererbung standardisiert wurde.
Im Vergleich zu den oben genannten gibt es verschiedene Arten von Autos. Der Hersteller und der Motortyp ändern sich je nach Typ. Der Treiber kann jedoch die verschiedenen installierten Motoren betreiben, ohne es zu merken. Dies liegt daran, dass das für jeden Motor geeignete Verhalten für dieselbe Methode zum "Starten des Motors" implementiert wird.
Mit anderen Worten, Car.startEngine weist Polymorphismus auf, indem verschiedene Implementierungen auf der Vererbungsseite implementiert werden.
Ich denke, dass die Idee, sich des oben genannten Drei-Generationen-Prinzips bewusst zu sein, zur Objektorientierung führt. Wenn Sie sich der Objektorientierung bewusst sind, können Sie hochgradig unabhängige und flexible Quellen schreiben. Ich denke, es wird die Quelle einfacher zu ändern und lesbarer machen.
Ich war ziemlich erfrischt, als ich organisierte, während ich auf meine eigene Weise schrieb. Natürlich glaube ich nicht, dass man sofort bewusst programmieren kann, wenn man nur das Konzept versteht. Sie können es erwerben, indem Sie Designmuster studieren und Designerfahrung sammeln. Ich werde weiterhin mein Bestes geben!
Ich werde es für eine lange Zeit leicht schreiben. Vielen Dank!
Alan Kay, der Schöpfer des Wortes, sagt, dass das Wort objektorientiert ein Fehler ist. Hervorzuheben ist nicht "Objekt", sondern "Messaging" ... [Objektorientierte Wikipedia](https://ja.wikipedia.org/wiki/Object Oriented)
Was ist Objektorientierung? Ich habe versucht, mit einem leicht verständlichen Beispiel zu erklären. Was ich gelernt habe, nachdem ich 10 Jahre lang gegen die Objektorientierung gekämpft hatte Was ist objektorientierte Programmierung?
Recommended Posts