Zusammenfassung – Formen-Rechner
Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy. Lektion 32 von 91.
Aufgabe
EinfachErstelle einen Formrechner, der die Leistungsfähigkeit von Schnittstellen beim Erstellen flexiblen, erweiterbaren Codes demonstriert. Du erstellst eine Schnittstelle, die einen Vertrag zur Berechnung von Flächen definiert, und implementierst sie anschließend in verschiedenen Formklassen.
Du organisierst deinen Code auf vier files:
Calculable.php: Define eineCalculable-Schnittstelle mit einer einzelnen method-Signatur:calculateArea(). Dieser Vertrag stellt sicher, dass jede berechenbare Form ihre area berechnen kann.Rectangle.php: Create eineRectangle-class, dieCalculableimplements. Include die Schnittstellendatei. Die class sollte private$width- und$height-properties besitzen, die über den constructor gesetzt werden. ImplementcalculateArea(), um die area (width multiplied mit height) zu return.Circle.php: Create eineCircle-class, die ebenfallsCalculableimplements. Include die Schnittstellendatei. Die class sollte eine private$radius-property besitzen, die über den constructor gesetzt wird. ImplementcalculateArea(), um die area mithilfe der formulapi() * radius * radiuszu return.main.php: Include beide Formdateien. Create eine function namensdisplayArea, die einenCalculable-parameter und einen Formnamen (Zeichenkette) accepts. Die function sollte Folgendes Print:"[name] area: [area]", wobei die area mithilfe vonnumber_format()auf 2 Dezimalstellen gerundet wird.
Du erhältst vier inputs: die Rectangle-width, die Rectangle-height, den Circle-radius und einen Formnamen für den Circle. Create ein Rectangle mit width und height (in Gleitkommazahlen umwandeln) sowie einen Circle mit dem radius (in eine Gleitkommazahl umwandeln). Call displayArea() zweimal auf: zuerst mit dem Rectangle und "Rectangle" als Namen, danach mit dem Circle und dem provided Formnamen. Print jedes Ergebnis in einer eigenen Zeile.
Die function displayArea() funktioniert mit jeder Form, die Calculable implements. Sie muss nicht wissen, ob sie die area eines Rectangle, eines Circle oder einer beliebigen zukünftigen Form berechnet, die du möglicherweise hinzufügst. Das ist die Schönheit der Programmierung gegen eine Schnittstelle!
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
// Ausgeben: "[name] area: [area]", wobei area 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 Rectangle auf und verwende "Rectangle" als Namen
// TODO: Rufe displayArea() mit dem Circle 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Übe selbstständig: Online-PHP-Compiler