Programmazione orientata agli oggetti in ANSI-C. Ereditarietà, Riusabilità del codice e approfondimenti

Una superclasse – Punto

In questo capitolo inizieremo a descrivere un programma di disegno alquanto rudimentale. Ecco qui un piccolo test rapido per una delle classi che dovremo e vorremo avere:

#include "Point.h"
#include "new.h"
int main (int argc, char ** argv)
{ void * p;
while (* ++ argv)
{ switch (** argv) {
case ’p’:
p = new(Point, 1, 2);
break;
default:
continue;
}
draw(p);
move(p, 10, 20);
draw(p);
delete(p);
}
return 0;
}

Per ogni comando che inizia con la lettera p avremo un nuovo punto che verrà disegnato, mosso, ridisegnato e cancellato. Il C ANSI non include funzioni standared per l'output grafico. Comunque, se insistiamo nel cercare di produrre un disegno potremmo realizzare l'output di testo che il Kernighan pic può capire:

$ points p
"." at 1,2
"." at 11,22

Le coordinate non influiscono sull'esito del test – parafrasando uno slogan commerciale: "il punto è il messaggio".

Che cosa possiamo fare un un punto? New() produce un punto e il costruttore si aspetta di avere le coordinate iniziali. Come al solito, delete() riciclerà il nostro punto e per convenzione lo renderà disponibile ad un distruttore.

draw() si occupa di "disegnare" il punto. Poichè ci aspettiamo di lavorare con altri oggetti grafici – ecco il motivo per cui abbiamo lo switch nel programma – provvederemo ad un linkage dinamico per draw().

move() cambia le coordinate di un punto in relazione a quanto specificato nell'argomento passato. Se implementassimo ogni oggetto grafico relativamente al suo punto di riferimento, allora saremmo in grado di muoverlo applicando semplicemente move() a questo punto di riferimento. Di conseguenza, anche per move() avremo bisogno di implementare il dynamic linkage.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend