Home
Accesso / Registrazione
 di 

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

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.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 3 utenti e 43 visitatori collegati.

Ultimi Commenti