Uno dei piccoli trucchi che si imparano pian piano programmando in OOP in AmigaE, è quello di non ereditare direttamente un oggetto per crearne un altro, ma di incapsulare il vecchio oggetto all'interno del nuovo, in modo da nasconderlo completamente dalla vista dell'utilizzatore.
Questo metodo di programmazione ha alcuni vantaggi: in primo luogo, il nuovo oggetto non disporrà di tutti i metodi dell'oggetto originario, e questo, anche se a prima vista può apparire più un limite che una caratteristica interessante, assicura che la lista dei metodi non cresca a dismisura man mano che ereditiamo un oggetto sopra ad un altro. Come secondo vantaggio, possiamo ridefinire dei metodi con un numero di parametri differenti dai metodi origirari, senza incorrere in alcuna segnalazione da parte del compilatore. Terzo, senza utilizzare il comando SUPER il nostro codice appare più chiaro e pulito.
Questo accorgimento di programmazione, infine, permette di ottenere degli oggetti più piccoli, a livello di occupazione di memoria del modulo, e più funzionali: i metodi presenti sono quelli che, effettivamente, servono all'oggetto e non uno strascico derivato dall'aver ereditato in maniera canonica un oggetto.
A questo punto bisogna effettivamente valutare quanto sia utile ereditare realmente un oggetto, piuttosto che inglobarlo all'interno di uno nuovo. I vantaggi, ma anche gli svantaggi, derivanti dalla scelta errata del metodo di implementazione. Se, per esempio, intendiamo scrivere un oggetto che sia realmente una estensione del precedente, è meglio considerare veramente la possibilità di utilizzare le capacità di "inheritance". Il nuovo oggetto erediterà tutti i metodi del precedente, partendo già, quindi, con un bagaglio di informazioni considerevoli. E' molto probabile, quindi, che ci troveremo ad utilizzare un nuovo oggetto che ha troppi metodi. Sicuramente molti di più di quanti ne desiderassimo, a meno che il nostro nuovo oggetto non intenda semplicemente ridefinire o ampliare l'oggetto precedente.
Una seconda possibilità, viene quindi dallo scrivere un nuovo oggetto che contiene al suo interno l'oggetto precedente. In questo modo, i metodi dell'oggetto originale non entreranno a far parte dei metodi dell'oggetto che stiamo creando, a meno che non vengano definiti nuovamente. Questo approccio, abbastanza singolare, alla programmazione a oggetti ha anche degli svantaggi: se nel nuovo oggetto alcuni metodi eseguono esattamente le stesse cose dei metodi dell'oggetto precedente, dovremo, comunque, scrivere del codice e riscrivere dei metodi, facendo crescere il codice finale del nostro oggetto.
Comunque, credo che ci si possa avvicinare alla OOP anche tramite questo particolare metodo di programmazione, inglobando un oggetto in un altro: a volte i vantaggi sono superiori agli svantaggi.
Scritto da: Fabio Rotondo e-mail: fsoft@intercom.it C.so Vercelli 9 28100 Novara ITALY tel: (ITA) - (0)321 459676