Menu
Coddy logo textTech

Implementazione del rettangolo

Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 46 di 61.

challenge icon

Sfida

Facile

Continuiamo a costruire il progetto Shape Drawer implementando Rectangle: un'altra forma concreta che incorpora la struct base Shape, proprio come abbiamo fatto con Circle.

Partendo dal progetto esistente, aggiungerai le funzionalità per i rettangoli nei seguenti file:

  • shape.h: Mantieni l'interfaccia base Shape con i tipi di puntatore a funzione DrawFunc e AreaFunc delle lezioni precedenti.
  • circle.h e circle.c: Mantieni l'implementazione di Circle della lezione precedente.
  • rectangle.h: Definisci qui la struct Rectangle. Un rettangolo incorpora Shape come suo primo membro e aggiunge i campi width e height (entrambi di tipo double). Dichiara una funzione costruttore create_rectangle che accetta i parametri width e height e restituisce un Rectangle per valore.
  • rectangle.c: Implementa il comportamento specifico del rettangolo:
    • draw_rectangle: stampa Drawing Rectangle with width: X.XX and height: X.XX (entrambi i valori mostrati con 2 cifre decimali)
    • area_rectangle: restituisce width × height
    • create_rectangle: inizializza un Rectangle, collega i puntatori a funzione della Shape incorporata alle funzioni del rettangolo, imposta le dimensioni e restituisce il rettangolo
  • main.c: Dimostra il funzionamento di entrambe le forme tramite la stessa interfaccia. Leggi due valori in input: width e height per un rettangolo. Crea un rettangolo usando il tuo costruttore, poi chiama sia draw sia area tramite i puntatori a funzione della Shape incorporata. Stampa l'area con 2 cifre decimali.

Il programma riceverà due valori in input: width e height (come numeri in virgola mobile).

Esempio di output quando i valori in input sono 4.0 e 3.0:

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

Esempio di output quando i valori in input sono 7.5 e 2.5:

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

Proprio come Circle, Rectangle incorpora Shape come primo membro, consentendoti di accedere ai puntatori a funzione tramite il membro incorporato. Questo schema coerente permette il polimorfismo: entrambe le forme possono essere gestite uniformemente tramite la loro interfaccia Shape. Ricordati di usare le guardie di inclusione in tutti i file header.

Provalo tu

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

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: Crea un rettangolo usando create_rectangle(width, height)
    
    // TODO: Chiama draw tramite il puntatore a funzione di Shape incorporato
    
    // TODO: Chiama area tramite il puntatore a funzione di Shape incorporato
    // TODO: Stampa l'area con 2 cifre decimali: "Area: %.2f\n"
    
    return 0;
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C online