
La programmazione per la grafica offre molte possibilità di sviluppare e approfondire il concetto di ereditarietà: un punto e una lunghezza di lato definiscono un quadrato, un punto e un paio di coordinate di offeset definiscono un rettangolo, un punto e un array di coppie di offset definiscono un poligono o addirittura una spline.
Prima che si proceda a definire tutte queste classi, possiamo realizzare interessanti esempi con punti e testo, con colori o altre caratteristiche visuali.
Conferire a move() il linking dinamico è difficile ma sempre interessante: gli oggetti bloccati potrebbero decidere di mantenere il loro punto di riferimento fisso e muovere la loro porzione di testo.
L'ereditarietà può essere rilevata anche in altre aree: sets, bags e altre collezioni di oggetti come liste, stack, code e così via, per non disdegnare inoltre le stringhe, gli atomi e le variabili con nome e valore.
Le superclassi possono essere impiegate per impacchettare gli algoritmi. Vediamo cosa significa. Se assumiamo l'esistenza di metodi dinamicamente linkati per confrontare o scambiare gli elementi di una collezione di oggetti basati su qualche indice positivo, possiamo implementare una superclasse che contiene un algoritmo di ordinamento.
Le sottoclassi dovranno implementare il confronto e lo scambio di posizione dei loro oggetti in qualche array, ma andranno ad ereditare l'abilità di essere ordinate.
