Menu
Coddy logo textTech

Rechteck-Implementierung

Teil des Abschnitts Object Oriented Programming der C-Journey von Coddy — Lektion 46 von 61.

challenge icon

Aufgabe

Einfach

Lassen Sie uns das Shape Drawer-Projekt weiter ausbauen, indem wir das Rectangle implementieren — eine weitere konkrete Form, die das Basis-Shape-Struct einbettet, genau wie wir es beim Circle getan haben.

Aufbauend auf Ihrem bestehenden Projekt werden Sie die Rechteck-Funktionalität in diesen Dateien hinzufügen:

  • shape.h: Behalten Sie Ihr Basis-Shape-Interface mit den Funktionstypen DrawFunc und AreaFunc aus den vorherigen Lektionen bei.
  • circle.h und circle.c: Behalten Sie Ihre Circle-Implementierung aus der vorherigen Lektion bei.
  • rectangle.h: Definieren Sie hier Ihr Rectangle-Struct. Ein Rechteck bettet Shape als sein erstes Mitglied ein und fügt die Felder width und height hinzu (beide double). Deklarieren Sie eine Konstruktorfunktion create_rectangle, die Breite und Höhe als Parameter entgegennimmt und ein Rectangle als Wert zurückgibt.
  • rectangle.c: Implementieren Sie das rechteckspezifische Verhalten:
    • draw_rectangle — gibt Drawing Rectangle with width: X.XX and height: X.XX aus (beide Werte mit 2 Dezimalstellen angezeigt)
    • area_rectangle — gibt Breite × Höhe zurück
    • create_rectangle — initialisiert ein Rectangle, verknüpft die Funktionszeiger des eingebetteten Shape mit den Rechteck-Funktionen, setzt die Dimensionen und gibt das Rechteck zurück
  • main.c: Demonstrieren Sie, dass beide Formen über dasselbe Interface funktionieren. Lesen Sie zwei Eingaben ein: Breite und Höhe für ein Rechteck. Erstellen Sie ein Rechteck mit Ihrem Konstruktor und rufen Sie dann sowohl draw als auch area über die Funktionszeiger des eingebetteten Shape auf. Geben Sie die Fläche mit 2 Dezimalstellen aus.

Ihr Programm erhält zwei Eingaben: width und height Werte (als Gleitkommazahlen).

Beispielhafte Ausgabe, wenn die Eingaben 4.0 und 3.0 sind:

Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00

Beispielhafte Ausgabe, wenn die Eingaben 7.5 und 2.5 sind:

Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75

Genau wie beim Circle bettet das Rectangle Shape als sein erstes Mitglied ein, was Ihnen den Zugriff auf die Funktionszeiger über das eingebettete Mitglied ermöglicht. Dieses konsistente Muster ermöglicht Polymorphismus — beide Formen können einheitlich über ihr Shape-Interface behandelt werden. Denken Sie daran, in allen Header-Dateien Include-Guards zu verwenden.

Probier es selbst

#include <stdio.h>
#include "shape.h"
#include "rectangle.h"

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: Erstellen Sie ein Rechteck mit create_rectangle(width, height)
    
    // TODO: Rufen Sie draw über den Funktionszeiger des eingebetteten Shape auf
    
    // TODO: Rufen Sie area über den Funktionszeiger des eingebetteten Shape auf
    // TODO: Geben Sie die Fläche mit 2 Dezimalstellen aus: "Area: %.2f\n"
    
    return 0;
}

Alle Lektionen in Object Oriented Programming