[JAVA] Zusammenfassung der Forschungsergebnisse zur Objektorientierung [Von Zeit zu Zeit aktualisiert]

Zusammenfassung der Forschungsergebnisse zur Objektorientierung [Von Zeit zu Zeit aktualisiert]

Wir werden nach Bedarf hinzufügen und organisieren.

Was ist Objektorientierung?

Es gibt Dinge wie das Konzept selbst und keine klare Erklärung.

** "Programmierstil, der häufig geänderte Teile in Klassen extrahiert und sich auf die Teile konzentriert, die sich nicht ändern" **

Kurz gesagt, ich verstehe, dass es eine Denkweise ist, so zu programmieren, dass es einfach ist, Spezifikationen zu ändern und Funktionen später zu erweitern.

Was ist Vererbung?

** Das Wesen der Vererbung ist eine Schnittstelle, die abstrakte Konzepte zusammenbringt **

Was ist Polymorphismus?

** Programmierung für eine Schnittstelle (Zusammenfassung) **

Was ist Kapselung?

** Abfall beseitigen, verfeinern und etwas leicht verständlich machen **

--Layer unterscheidet sich von Vererbung und Polymorphismus

Wie man benennt

Vorerst werde ich nur Folgendes schützen.

--Camel Fall

5 Prinzipien (SOLID Prinzip)

Prinzip der Einzelverantwortung

** Es darf nicht mehr als einen Grund geben, eine Klasse zu ändern (Rolle = Verantwortung = Grund zur Änderung) **

Offen-Geschlossen-Prinzip

** ・ Wenn es eine Spezifikationsänderung gibt, können Sie mit der Änderung umgehen, indem Sie Verhalten hinzufügen.

Liskov-Substitutionsprinzip

Was erwünscht ist, ist die folgende Substitutionseigenschaft:

Für jedes S-Objekt o1 gibt es ein T-Objekt o2 Es gibt ein Programm p, das mit o2 definiert ist Selbst wenn zu diesem Zeitpunkt o1 anstelle von ** o2 verwendet wird, ändert sich zu diesem Zeitpunkt das Verhalten von p nicht **

Prinzip der Schnittstellentrennung

** • Erzwingen Sie nicht, dass der Client von Methoden abhängt, die der Client nicht verwendet **

-Wenn Sie von einer Methode abhängig sind, die Sie nicht verwenden, kann dies Auswirkungen auf Clients haben, die bei einer Änderung dieser Methode irrelevant sein sollten.

** - Gruppenbezogene Schnittstellen und Vorbereitung einer speziellen Schnittstelle für jeden Client ** Auf diese Weise kann der Client Abhängigkeiten von Methoden aufheben, die er nicht verwendet.

Prinzip der Abhängigkeitsinversion

-Obermodule sollten nicht von unteren Modulen abhängen, ** Beide Module sollten von "abstract" abhängen **

· "Abstract" sollte nicht von Implementierungsdetails abhängen, ** Implementierungsdetails sollten von "Abstract" abhängen **

-Wenn das obere Modul der vom unteren Modul deklarierten Schnittstelle folgt, kann gesagt werden, dass der Besitz der Schnittstelle dem unteren Modul gehört.

** • Stellen Sie Beziehungen innerhalb des Programms mit einer abstrakten Klasse oder Schnittstelle her, unabhängig von der jeweiligen Klasse ** Keine Klasse abgeleitet von einer konkreten Klasse Überschreiben Sie nicht die in der Basisklasse implementierten Methoden

Vorsicht vor Überabstraktion

** ・ Es ist genauso wichtig, nicht vorzeitig "abstrakt" zu machen und "abstrakt" zu verwenden **

Es gab eine Erklärung. Ich möchte aussagekräftige und effektive Abstraktionen identifizieren.

Recommended Posts

Zusammenfassung der Forschungsergebnisse zur Objektorientierung [Von Zeit zu Zeit aktualisiert]
[Eclipse] Zusammenfassung der Umgebungseinstellungen * Von Zeit zu Zeit aktualisiert
[Von Zeit zu Zeit aktualisiert] Ruby on Rails Praktische Methode
Memorandum Poem (von Zeit zu Zeit aktualisiert)
Zusammenfassung der Sprachen, die von nun an gelernt werden sollen
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
[Reverse] Spring Security (von Zeit zu Zeit aktualisiert)
SpringBoot nützliche Websitesammlung (von Zeit zu Zeit aktualisiert)
Zusammenfassung des Mooses beim Update von JMockit 1.4 auf 1.30
[Von Zeit zu Zeit aktualisiert] Links, die verschuldet sind
Berühren Sie alle "Anleitungen" des Frühlings (von Zeit zu Zeit aktualisiert)
Git-Befehl, auf den neue Ingenieure zurückblicken sollten [Von Zeit zu Zeit aktualisiert]
Einführung in die Programmierung für Studenten (von Zeit zu Zeit aktualisiert)
[Persönliches Memo] Häufig verwendete Java-Grammatik, die von Zeit zu Zeit aktualisiert wird
Persönlich empfohlene Intellij IDEA-Grundeinstellungen (von Zeit zu Zeit aktualisiert)
Die Illusion der Objektorientierung
Ich habe versucht, mein Verständnis der Objektorientierung um n% zu vertiefen
Hinweise zur Migration von CircleCI 1.0 auf 2.0
Von der Einführung bis zur Verwendung von byebug
[Swift] Zusammenfassung zum Löschen von Elementen aus einem Array (persönliches Memo)
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (1/3)
Zusammenfassung der Mittel, wenn Sie mit HTTP unter Android kommunizieren möchten