Implementazione del rettangolo
Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 46 di 61.
Sfida
FacileContinuiamo 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 baseShapecon i tipi di puntatore a funzioneDrawFunceAreaFuncdelle lezioni precedenti.circle.hecircle.c: Mantieni l'implementazione di Circle della lezione precedente.rectangle.h: Definisci qui la structRectangle. Un rettangolo incorporaShapecome suo primo membro e aggiunge i campiwidtheheight(entrambi di tipodouble). Dichiara una funzione costruttorecreate_rectangleche accetta i parametri width e height e restituisce unRectangleper valore.rectangle.c: Implementa il comportamento specifico del rettangolo:draw_rectangle: stampaDrawing Rectangle with width: X.XX and height: X.XX(entrambi i valori mostrati con 2 cifre decimali)area_rectangle: restituisce width × heightcreate_rectangle: inizializza unRectangle, collega i puntatori a funzione dellaShapeincorporata 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 siadrawsiaareatramite i puntatori a funzione dellaShapeincorporata. 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.00Esempio 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.75Proprio 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
1Basi di programmazione modulare
File di intestazioneGuardie di inclusioneFile sorgenteFunzioni staticheRipasso: calcolatrice modulare4Incapsulamento
Il concetto di puntatori opachiDefinire struct opacheGetter e setterLa convalida nei setterRiepilogo: scatola segreta2Oggetti e metodi
Le struct come oggettiIl puntatore 'Self'Correttezza constPuntatore o valoreMetodi di supportoRiepilogo: gestore di punti5Progetto: Conto bancario semplice
Configurazione del progettoImplementazione del conto8Polimorfismo
Puntatori a funzione nelle structSimulare i metodiIl concetto di interfacciaImplementare le interfacceIterazione polimorficaRiepilogo: Greeter11Pattern di progettazione in C
Pattern SingletonPattern FactoryPattern IteratorRiepilogo: Factory di Logger3Ciclo di vita degli oggetti
Pattern del costruttorePattern del distruttoreInizializzazione sullo stackCopia profondaRiepilogo: wrapper di stringhe6Ereditarietà tramite composizione
Incorporamento delle structLa regola del primo membroAccesso ai membri della classe baseUpcastingRiepilogo: gerarchia di forme9Progetto: Disegnatore di forme
Panoramica del progettoImplementazione del cerchioImplementazione del rettangoloUtilizzo polimorficoContenitore di formeEsercitati da solo: Compilatore C online