Filosofia della programmazione ad oggetti Aggiungi un commento
30 gennaio 2009, 15:12Da quando mi sono avvicinato alla programmazione ad oggetti, anni fa, durante il corso di Programmazione da 12 crediti, mi è sempre parso un metodo piuttosto comodo per programmare, secondo certe esigenze. Non dico di non aver trovato di meglio, ma quasi.
Un oggetto non è altro che un insieme vivente e coerente di caratteristiche e comportamenti. Vivente perchè può nascere, morire, figliare (e i figli ne ereditano qualsiasi tratto)… ma anche perdersi, impazzire, esplodere trascinando nella tomba altri oggetti (e il programma stesso, se non si sta attenti).
Al tempo dell’esame di Programmazione, sapevo cos’è un oggetto solo secondo la patriarcale concezione Java in cui “tutto deriva da Object”, dunque qualsiasi programma si compone di oggetti, qualsiasi struttura dati è un oggetto e così via: ammirevole, perchè permette di poter richiedere, ad esempio, il campo length su qualsiasi array, ma questo l’ho scoperto solo più tardi.
La vera bellezza degli oggetti mi è stata svelata anni dopo, quando ho imparato parte di C# per poter programmare nel framework XNA. Là, potevo definire una classe “Renderable”, che definisce qualsiasi oggetto visualizzabile sullo schermo; definire una classe “Ball” figlia di Renderable, e le classi RedBall, BlueBall, BlackBall tutte figlie di Ball. Un oggetto rappresenta, quindi, numerosi livelli di astrazione prima della definizione vera e propria di un’entità. E l’approccio, se usato bene, funziona anche quando si ha bisogno (ancora) di pochi oggetti, perchè saranno comunque brevi, ben definiti e riutilizzabili: modulari.
Fin qui, tutto rose e fiori. Ma se il paradigma ad oggetti va fuori controllo, se si tenta di usare oggetti contro natura, ci si trova con un’orribile zuppa di codice piena di oggetti qua e là, magari usati una sola volta, variabili singleton, enti statici. Un ibrido di paradigma imperativo e ad oggetti, realmente nessuno dei due. Se poi non è commentata, peggio ancora: diventa inutilizzabile; ma questo vale per qualsiasi codice.
Il mio assegnamento di stage è la creazione di uno strumento interattivo per la realizzazione del metodo del simplesso. L’ho chiamato Simply. Sto creando l’interfaccia a mano, il che è già un conseguimento non da poco; ma meglio ancora, sto cercando di applicare il paradigma ad oggetti dove possibile. Ad esempio, ma finora sono solo prototipi di idee, l’algoritmo del simplesso è un oggetto, ogni variabile è un oggetto (in grado di dirmi se è una variabile di base, se è originale o slack e di rispondere con il proprio numero se interrogata), ogni parte dell’interfaccia è un oggetto in cui non avviene nessuna computazione: l’interfaccia deve preoccuparsi di fare l’interfaccia. Fare altrimenti, complicherebbe solo le cose e snaturerebbe il paradigma ad oggetti. Un cane non è anche un gatto che è un canarino, è semplicemente un cane. (Tutti sono animali, però).
Auguratemi buon lavoro e buona voglia, ne ho bisogno!
P.s.: A tutti gli amanti del Gibber Italicus, in foto: Non volevo offendere voi né il nobile animale, ma solo porre un esempio di forme non propriamente definibili con forme “standard”.














gennaio 30th, 2009 at 15:37
Premesso che va beh io la programmazione ad oggetti al di fuori di java nn l’ho vista quindi ho ben poco da dire.
MA ho letto la parola STAGE
hai già dato tutti gli esami???
e nn mi dici niente???
Dannato, devi farti sentire più spesso
PP
uffa io sto ancora a -3 DEVO darmi una mossa!!
ah già dimenticavo una cosa in merito al thread la posso dire:
Buon lavoro e Buona Voglia
gennaio 30th, 2009 at 15:45
Wow, velocissimo!!!
E’ vero che non mi son più fatto vedere su msn o da quelle parti, anzi non ce l’ho neanche più installato ^ ^’
Comunque no, sto a -1, intanto che scrivo in Java scrivo anche in C++… un gran daffare!
Io la OOP l’ho vista in Java, C# e C++ e finora mi sono andati meglio gli ultimi due, se non altro perchè Java ti obbliga a programmare ad oggetti e se non lo fai, viene fuori un bordello infinito, a meno che il programma non abbia dimensioni da Hello world.
Grazie per gli auguri!
Ciao Ciao!!