
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.
