Obiect Oriented Programming (OOP) ovvero programmazione orientata agli oggetti. Che senso può avere un tale titolo nel mondo del software dove quello che si produce non appartiene al mondo fisico ?
Per comprendere questo facciamo un passo indietro ed in modo semplice cerchiamo

di comprendere che cos'è un programma. Immaginiamo di avere un archivio e di volere ricercare nel nostro elenco clienti un nominativo e, quando trovato, poterlo evidenziare ed ottenere altre informazioni quali il numero di telefono, fax. Dovendo spiegare questo ad un computer dovremmo dire :

  • crea un elenco dei clienti

  • visualizzalo

  • aspetta che l'utente prema un tasto

  • se il tasto premuto è 'scorri elenco', ricerca e mostra altri clienti

  • se ha premuto su mostra cliente, visualizza i dati del cliente

  • Le cose si complicano ulteriormente se vogliamo presentare tutto questo in modo graficamente bello ed accettabile ricorrendo alla grafica. Si intende che costruire un programma come una sequenza di istruzioni diventa un metodo non sempre perseguibile con successo.
    Ecco che si è pensato di costruire un programma non come semplici istruzioni ma ricorrendo a piccoli programmi già pronti perciò collaudati e specializzati nel compiere specifiche funzioni; sono detti i componenti o per meglio dire classi di cui si comporrà il programma finale. L'idea non è nuova, un' analogia viene dal mondo dell'elettronica dove ad esempio si è visto che i circuiti stampati dove venivano inseriti transistor e resistenza per realizzare una funzione elettronica (amplificare un segnale, filtrare un rumore...) sono stati sostituiti da circuiti integrati ovvero piccole barre di silicio in cui trovano posto i tradizionali circuiti.
    In questa logica svolgere il compito precedentemente descritto diviene:
  • definire un oggetto lista

  • popolarlo con il risultato ricerca dati clienti

  • associare un evento scorri elenco ed un evento seleziona voce lista sull'oggetto lista

  • L'oggetto lista è soltanto un programma che descrive come visualizzare i dati, accetta dei metodi (ovvero altri piccoli programmi ) per ricercare le informazioni, sente che cosa fa l'utente ed ogni azione genera un evento in corrispondenza del quale si possono associare altri piccoli programmi. A questo dobbiamo aggiungere le caratteristiche di visualizzazione : colori, tipi di carattere, allineamento e quant' altro utile per la presentazione grafica. Tutto questo è un oggetto in ambito software. Inoltre costruito un oggetto, può essere utilizzato in più programmi o come base per la costruzione di un nuovo oggetto, del tutto uguale all'originale ma con l'aggiunta di nuove regole. In questo caso si parla di ereditarietà degli oggetti ovvero da un programma creato se ne generano altri con il vantaggio che eventuali correzioni e modifiche fatte sul primo correggono ed aggiungono funzionalità a tutti i successivi. Un esempio : creo un oggetto che calcola la data a partire da una data di riferimento ed un numero di giorni dati, se serve calcolare più intervalli giorni creo un oggetto che ripete l'operazione tante volte quante richieste dall'utente e che per ogni intervallo usa l'oggetto prima creato!
    Comprenderete come un programma costruito su mattoncini facilmente collaudabili perchè piccoli, riutizzabili in più procedure sia un vantaggio tecnico che si traduce in maggiore affidabilità del risultato finale, tempo di sviluppo passibile di riduzione, facilità di controllo del programma realizzato.
    Ma allora tutto il software è realizzato in questo modo ?
    No, questa tecnologia non è ancora diffusa nella maggioranza dei software prodotti; potremmo forse dire che alcuni le si avvicinano per alcuni aspetti ma molto del software rimane non di tipo Object Oriented. Sicuramente l'interesse informatico va verso questa direzione e lo testimoniano l'aumento di prodotti usciti sul mercato in questi anni che adottano questa tecnologia. La difficoltà tecnologica consiste nella corretta progettazione dei componenti, ovvero nella definizione delle problematiche e dell'ingegnerizzazione della soluzione software attraverso la corretta costruzione degli oggetti che rispondono al problema. L'architettura del software diviene più complessa: si passa da un modello precedente che potremmo esemplificare in sequenziale ad un modello logicamente rispondente alla logica di eventi reali.
    Artesoft da anni utilizza queste tecnologie.
    Queste sono alla base delle attività di consulenza nella costruzione del software e nella realizzazione del prodotto Dollaro nelle versioni attuali (Object based) ed in quelle di prossimo rilascio (object oriented).
    La conoscenza nei linguaggi (Java) e l'uso di strumenti di sviluppo produttivi quali Omnis7, Omnis Studio, Powerbuilder ha permesso la realizzazione di applicativi con un elevato grado di affidabilità, con possibilità di evoluzione considerevoli e con un basso impatto in termini di costi per i Clienti.

    Elio Zurletti - Artesoft