[JAVA] Fortsetzung: Das Gleichnis von OOP (weggelassen)

Es ist heiß

Ich habe diesen Artikel schon einmal geschrieben, aber nach langer Zeit hat sich der Trend mit OOP-Material geändert. ~~ Es brennt ~~ Brennt es nicht heiß? Denken Sie also etwas mehr darüber nach Als Ergebnis der Organisation die abstrakten Klassen und Schnittstellen, an die ich denke So was! Ich möchte die Idee ausdrücken. Meine Gedanken sind Es ist eine Aussage, dass dies der Fall ist. Denken ist Java-ähnlich.

Was ist eine Schnittstelle?

Die Runnable-Oberfläche von Java ist leicht zu verstehen, repräsentiert jedoch die Funktionalität, die Sie implementieren möchten Der Griff (das Bild eines Autogriffs, eines Korbgriffs oder eines Türknaufs) Denken. In Bezug auf die Runnable-Schnittstelle

Es bietet eine sehr bequeme Funktion. Die implementierte Klasse ist Es wird erwartet, dass die Schnittstellenfunktionalität ohne Wissen von irgendjemandem garantiert wird Dem Implementierer steht es also frei, die Schnittstelle zu implementieren, und der Benutzer ist die Methode Es kann verwendet werden, indem man sich nur auf die Funktion von konzentriert.

Es ist unmöglich, eine solche Funktion in der Realität zu implementieren, sondern als Mittel, um Bedeutung auszudrücken Betrachten Sie dann die Schnittstelle eines Autogriffs.

CarHandle.java


public interface CarHandle
{
    int turnRight(int angle); //Gibt den Winkel nach der Ausführung zurück
    int turnLeft(int angle);
    void hold();
    void release(); //Lassen Sie den Griff los und lassen Sie ihn sich natürlich bewegen
}

Die CarHandle-Schnittstelle repräsentiert die Funktion eines Fahrzeuggriffs. Daher spielt es keine Rolle, auf welcher Art von Fahrzeug das Betonobjekt montiert ist. Entsprechend den Eigenschaften von Objekten wie leichten Autos, Limousinen und One-Boxen Der Implementierer kann den Betrieb der Schnittstelle implementieren.

Das zu implementierende Concrete-Objekt verfügt außerdem über eine CarHandle-Schnittstelle. Es ist auch gut, das implementierte Handle-Objekt zu empfangen. Sie müssen nicht wissen, was die Eigenschaften des Handles sind, aber die Schnittstelle drückt aus Die zu erledigende Funktion ist implementiert.

Hersteller echtes Griffobjekt mit CarHandle-Schnittstelle Oder ich werde es anpassenMomoste Objekt! Lustige Dinge wie Wird erstellt.

Was ist eine abstrakte Klasse?

Mit einem Wort, ich denke, dies ist ein halbfertiges Kit-Teil. Zum Beispiel. Im gleichen Alter wie ich (Apropos Leute, die stecken bleiben) Einige Leute mögen von ihrem eigenen PC begeistert sein. Fall, Netzteil, Mutter, allein Ich habe eine CPU, eine Festplatte, ein Speichermodul und eine GPU in Teilen gekauft und es gefällt mir. Das Zusammenbauen und Betreiben eines Leistungs- und Kostenleistungs-PCs ist genau das Es war ein aufregendes Stück.

Und die Zeit vergeht und BTO-Macher sind überfüllt. Bestelldaten des Käufers im Internet Es wird ein nach Ihren Wünschen angepasster PC in Form eines fertigen Produkts geliefert. Aber im Laden Daher variiert der Inhalt, der angepasst werden kann, und erreicht nicht die idealen Spezifikationen. Manchmal habe ich diesen Laden nicht gewählt.

Übrigens (obwohl es eine lange Einführung war), gibt es einen BTO-Shop, der PCs als Halbzeuge verkauft. Es erschien schließlich (vorausgesetzt, es existiert nicht wirklich). Vom Käufer Teile, die weniger wichtig sind (Fälle, Mütter, Festplatten usw.), sind anständig Spezifikationen können ausgewählt werden und wichtige Kernteile (CPU, GPU, Speichermodul) Ist ein Geschäft, das PCs mit Dummies verkauft. Natürlich von den Kit-Teilen Funktioniert nicht im Status (kann nicht instanziiert werden).

Daher kaufte der Käufer (Implementierer) die Kernteile (Kit-Teile-Klasse). Die CPU ist Core i9, die GPU ist GeForce RTX, der Speicher ist 8 GB DDR4 Sie können einen PC wie diesen mit 4 Karten und 32 GB erstellen.

AbstractPC.java


public abstract class AbstractPC
{
    public int case()  //Da der Fall von BTO ausgewählt wird, wurde er bereits implementiert
    {
        //Ich glaube nicht, dass es sich um eine Fallbearbeitung handelt
    }
    public int powerUnit() //Da das Netzteil von BTO ausgewählt wird, ist es bereits installiert
    {
        //Ich glaube nicht, dass es Power Processing ist
    }
    public int motherBoard() //Mutter ist bereits implementiert, da sie von BTO ausgewählt wird
    {
        //Ich denke nicht, dass es ein Prozess der Mutter ist
    }
    abstract int cpu(int model_no); //Kaufen Sie die CPU selbst
    abstract int gpu(int model_no); //Kaufen Sie Ihre eigene GPU
    abstract int memory(int model_no, int nums); //Kaufen Sie RAM selbst
}

Erben Sie diesen Kerl und kaufen (implementieren) Sie CPU, GPU, Speichermodul Dies ermöglicht die Herstellung von Super-Cospa-PCs und High-End-PCs. Streng hohe Leistung Bei der Herstellung eines PCs gibt es Details wie Stromversorgungskapazität und Wärmeabgabewirkungsgrad des Gehäuses, aber Ich werde vorerst nicht darüber nachdenken.

In Bezug auf die Vorteile und die Bequemlichkeit der Abstract-Klasse wurde dies bereits behoben. Implementieren Sie nur den Teil des Frameworks, der von Spezifikationsänderungen nicht leicht betroffen ist, selbst wenn er implementiert ist Die Verarbeitung, auf die Sie reagieren möchten, wird jedoch entsprechend dem jeweiligen Bereich angepasst. Ich denke, dass es möglich ist, die Nachfrage nach Umsetzung zu befriedigen.

Um ehrlich zu sein, sind abstrakte Klassen nützlicher als die Bequemlichkeit der Benutzeroberfläche. Ich habe den Eindruck, dass es schwierig und selten verwendet wird. Noch teilweise implementiert Die Bequemlichkeit, nur das Kernteil optimal implementieren zu können, ist wertvoll.

Apropos···

Ich habe in der Zwischenzeit unterschiedlich gesucht, aber in einer typischen Evolutionstheorie Ich kann nicht anders, als zu verzweifeln, weil ich verrückt nach Menschen bin, die davon abhängig sind. Nein, Ich verstehe den Wunsch, in der Evolutionstheorie zu erklären. Aber wie ein Hund oder eine Katze, Gibt an, ob Sie ein Objekt implementieren oder erben, das keinen Dienst bereitstellt Ich weiß nicht, was bequem ist. Ich kann die Bedeutung des Machens nicht spüren.

Um klar zu sein, ist es ** "nicht übertragen" **. Es ist eine Schnittstelle, es ist eine abstrakte Klasse. Sie müssen programmieren, um ein etwas kompliziertes Konzept zu erklären Ich kann nicht sagen, was der Gewinn ist. Das glaube ich nicht.

Wenn Sie dies aus der Sicht der anderen Partei mit der Absicht erklären, einen Vortrag vor einem Dritten zu halten ** Wenn Sie nicht den Eindruck erwecken, dass "Ja, Sie können so etwas bequemes tun" ** Dies ist die zweite Vorlesung in Japan. Der Eindruck ist tief in mein Gedächtnis eingraviert.

Recommended Posts

Fortsetzung: Das Gleichnis von OOP (weggelassen)
Die Welt der Clara-Regeln (2)
Beurteilung des Kalenders
Die Welt der Clara-Regeln (4)
Die Welt der Clara-Regeln (1)
Die Welt der Clara-Regeln (3)
Die Welt der Clara-Regeln (5)
Die Idee der schnellen Sortierung
Die Idee von jQuery
Über den Umgang mit Null
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
Informationen zur Beschreibung von Docker-compose.yml
Das Spiel der Instanziierung von java.lang.Void
Medianwert von drei Werten
Die Illusion der Objektorientierung