Zusammenfassung – Formen-Rechner
Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 32 von 91.
Aufgabe
EinfachLassen Sie uns einen Formenkalkulator erstellen, der die Leistungsfähigkeit von Interfaces für die Erstellung von flexiblem und erweiterbarem Code demonstriert. Sie werden ein Interface erstellen, das einen Vertrag für die Berechnung von Flächen definiert, und dieses dann in verschiedenen Form-Klassen implementieren.
Sie werden Ihren Code über vier Dateien organisieren:
Calculable.php— Definieren Sie einCalculableInterface mit einer einzigen Methodensignatur:calculateArea(). Dieser Vertrag stellt sicher, dass jede berechenbare Form ihre Fläche berechnen kann.Rectangle.php— Erstellen Sie eineRectangleKlasse, dieCalculableimplementiert. Binden Sie die Interface-Datei ein. Die Klasse sollte private$widthund$heightEigenschaften haben, die über den Konstruktor gesetzt werden. Implementieren SiecalculateArea(), um die Fläche zurückzugeben (Breite multipliziert mit Höhe).Circle.php— Erstellen Sie eineCircleKlasse, die ebenfallsCalculableimplementiert. Binden Sie die Interface-Datei ein. Die Klasse sollte eine private$radiusEigenschaft haben, die über den Konstruktor gesetzt werden. Implementieren SiecalculateArea(), um die Fläche mit der Formelpi() * radius * radiuszurückzugeben.main.php— Binden Sie beide Form-Dateien ein. Erstellen Sie eine Funktion namensdisplayArea, die einenCalculableParameter und einen Formnamen (String) akzeptiert. Die Funktion sollte Folgendes ausgeben:"[name] area: [area]", wobei die Fläche mitnumber_format()auf 2 Dezimalstellen gerundet wird.
Sie erhalten vier Eingaben: Rechteckbreite, Rechteckhöhe, Kreisradius und einen Formnamen für den Kreis. Erstellen Sie ein Rectangle mit der Breite und Höhe (in Floats umwandeln) und einen Circle mit dem Radius (in Float umwandeln). Rufen Sie displayArea() zweimal auf — zuerst mit dem Rechteck unter Verwendung von "Rectangle" als Name, dann mit dem Kreis unter Verwendung des angegebenen Formnamens. Geben Sie jedes Ergebnis in einer eigenen Zeile aus.
Die displayArea() Funktion arbeitet mit jeder Form, die Calculable implementiert — sie muss nicht wissen, ob sie die Fläche eines Rechtecks, eines Kreises oder einer zukünftigen Form berechnet, die Sie hinzufügen könnten. Das ist das Schöne an der Programmierung gegen ein Interface!
Probier es selbst
<?php
// Die Shape-Dateien einbinden
require_once 'Rectangle.php';
require_once 'Circle.php';
// TODO: Erstelle eine Funktion namens displayArea
// Sie sollte einen Calculable-Parameter und einen Formnamen (String) akzeptieren
// Ausgabe: "[name] area: [area]", wobei die Fläche mit number_format() auf 2 Dezimalstellen gerundet wird
// Eingaben lesen
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: Erstelle ein Rectangle mit der Breite und Höhe
// TODO: Erstelle einen Circle mit dem Radius
// TODO: Rufe displayArea() mit dem Rechteck auf und verwende "Rectangle" als Namen
// TODO: Rufe displayArea() mit dem Kreis auf und verwende den bereitgestellten Formnamen
?>Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas $this-SchlüsselwortMethodenEigenschaftenKonstruktor (__construct)Destruktor (__destruct)Rückblick - Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDas parent:: SchlüsselwortMethoden überschreibenDas final SchlüsselwortAbstrakte KlassenZusammenfassung – Mitarbeiter-Hierarchie7Kapselung
Public, Protected, PrivateZugriffsmodifikatoren im DetailGetter und SetterInformation HidingConstructor Promotion (8.0)Zusammenfassung – Studentenverwaltungssystem2Namensräume & Autoloading
Einführung in NamensräumeDas use-SchlüsselwortPSR-4 Autoloading-StandardComposer AutoloaderZusammenfassung – Organisiertes Projekt5Interfaces & Verträge
Einführung in InterfacesInterfaces implementierenMehrfache Interface-ImplementierungInterface vs. Abstrakte KlasseType Hinting mit InterfacesZusammenfassung – Formen-Rechner8Magische Methoden
Einführung in magische Methoden__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Objekt-Klonen__serialize & __unserializeZusammenfassung - Eigene Collection11Typsystem & Fehlerbehandlung
TypdeklarationenNullable-TypenUnion- & Intersection-TypenException-KlassenEigene Exception-HierarchieTry, Catch, FinallyZusammenfassung - Formular-Validator14Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen3Klasseneigenschaften
Instanz- vs. statische EigenschaftenKonstanten in KlassenStatische Methoden & EigenschaftenPrivate & geschützte EigenschaftenReadonly-Eigenschaften (PHP 8.1)Zusammenfassung – Bankkonto-Manager6Polymorphismus
Method Overriding erneut betrachtetPolymorphismus über InterfacesType Hinting & Union TypesLate Static BindingZusammenfassung – Payment Processor9Traits
Einführung in TraitsVerwendung mehrerer TraitsKonfliktlösung bei TraitsAbstrakte Methoden in TraitsTraits vs. Vererbung12Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster15Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung