Visto l’interesse suscitato dal precedente post sulla relazione di ereditarietà, torno sull’argomento per mettere in risalto ulteriori vincoli da essa imposti.
Lo so, a volte anche le costrizioni possono risultare piacevoli… ed è proprio quello che accade con l’ereditarietà tra classi, certamente vincolante ma così immediata nel realizzare il riuso del codice. E allora, per allontanare questi pensieri impuri dai nostri progetti, recitiamo insieme la seguente preghiera tratta da uno dei testi sacri della programmazione ad oggetti:
In questo post voglio condividere alcune osservazioni sulle caratteristiche della relazione di ereditarietà nella programmazione object-oriented. Provo a farlo con un esempio.
Dobbiamo individuare il modello delle classi per una applicazione che gestisca l’archivio dei film di una videoteca. Per ciascun film dobbiamo memorizzare il regista e gli attori. Viene immediato individuare almeno tre classi: Film, Regista e Attore, collegate nel seguente modo:
Diagramma 1 Poiché dobbiamo realizzare delle funzionalità che operano sia sugli attori che sui registi, come ad esempio il motore di ricerca degli artisti, abbiamo bisogno del polimorfismo e quindi introduciamo una classe Artista.
Non sono un venditore di servizi cloud e quindi non starò qui a fare uno spot su queste tecnologie. Il web è ricco di dissertazioni sul cloud, sono certo che vi sarete già fatti una idea sui pro e contro. Il punto è un altro. Come progettisti di applicazioni, dovremmo in qualche modo farci ispirare dal cloud nella realizzazione del nostro prossimo progetto?
Non mi riferisco tanto alle soluzioni di tipo “Infrastructure as a Service” (IAAS), incentrate sull’offerta di server virtuali, connettività di rete, server per lo storage e backup.
Quando sviluppiamo tendiamo a trascurare gli aspetti legati al momento dell’esecuzione del codice, al così detto runtime. Questo capita maggiormente quando si ha a che fare con i linguaggi di alto livello, magari a macchina virtuale come il Java che “gira” all’interno di una JVM o il C# eseguito da una CLR, ma anche con i linguaggi di scripting come il PHP interpretato ed eseguito dallo Zend Engine. Questi ambienti di runtime infatti operano dietro le quinte, ad esempio gestendo in maniera trasparente l’allocazione dinamica della memoria.
Stavo per modificare il titolo del primo post che WordPress crea durante la sua installazione quando mi sono accorto che “Hello world!” è proprio adatto ad avviare il blog di uno sviluppatore software. Si, perché su questo diario vorrei condividere alcune personali riflessioni sulla programmazione e, più in generale, su tutto ciò che ruota attorno alla realizzazione del software.
L’attività lavorativa e lo studio dei guru della programmazione mi portano spesso a fare delle considerazioni che generalmente si limitano a ronzarmi per la testa e che solo raramente riesco a condividere con amici e colleghi davanti ad un caffè.