Operatore Giuridico d Impresa Informatica Giuridica A.A 2003/2004 II Semestre Progettazione orientata agli oggetti e UML prof. Monica Palmirani Origini storiche Il paradigma orientato agli oggetti è una metodologia di sviluppo di sistemi informatici che abbraccia tutte le fasi di sviluppo del software: OOA - Object Oriented Analisys - analisi OOD - Object Oriented Design - progettazione OOP - Object Oriented Programming - programmazione OOST - Object Oriented Software Testing - collaudo Il paradigma di progettazione orientata ad oggetti nasce negli anni 60 ma solo negli anni 90 trova la sua applicazione: Cox-86, Stroustup-88 Booch-91, Coad e Yourdon-91,
Il perché del successo consente di utilizzare lo stesso paradigma in tutte le fasi di sviluppo del software consente un alto grado di riutilizzo del software migliora la manutenzione del software e minimizza gli errori ad ogni intervento di modifica i sistemi progettati sul paradigma OO sono più adattabili ai cambiamenti nel tempo Struttura del paradigma OO -(I) Il mondo viene modellato partendo dagli oggetti reali gli oggetti reali si aggregano in classi di oggetti uniformi ad ogni classe si possono associare attributi ovvero caratteristiche dell oggetto che descrive ad ogni classe si possono associare dei comportamenti che l oggetto può compiere detti metodi o servizi le classi comunicano scambiandosi messaggi mediante i metodi
Esempio Notazione Classe Oggetto Nome classe attributi metodi Automobile Prezzo Motore Impianto elettrico Impianto idraulico Acquista Rottama Fiat Punto Prezzo Motore Impianto elettrico Impianto idraulico Acquista Rottama Struttura del paradigma OO - (II) Oggetti e classi - le classi sono un astrazione degli oggetti e gli oggetti sono istanze della classe ovvero gli oggetti sono le entità che esistono in un certo tempo e spazio Attributi e metodi - gli attributi e i metodi definiscono i dati e le operazioni della classe Messaggi - sono le operazioni che consentono la comunicazione fra gli oggetti
I principi del paradigma OO Incapsulamento Ereditarietà Polimorfismo Relazione di composizione Incapsulamento la classe e gli oggetti che ne derivano chiudono in se stessi come in un pacchetto i dati e le operazioni nascondendone i dettagli da parte di oggetti esterni Si dice che le classi e gli oggetti incapsulano i loro dettagli sollevando chi li usa dal sapere cosa c è dentro Motore Imp. Idraulico Imp. elettrico Caburatore Pompa Batteria Accensione raffredda Avviamento
Gerarchia ed Ereditarietà Spesso si rende necessario astrarre le classi con un raggruppamento di sovra-classe o metaclasse o superclasse. Nasce la gerarchia delle classi Le classi figlie ereditano dalle classi padre tutti i loro attributi e le loro operazioni Le classi figlie possono aggiungere dettagli rispetto agli attributi e alle operazioni ereditate Le classi figlie possono ereditare attributi ed operazioni da più classi padre - multieredità,, Esempio - ereditarietà Autoveicolo TIR Trazione Carica PULMAN Abitacolo Passeggeri Carica Passeggeri
Esempio - multiereditarietà Automobile Abitacolo Casa mobile Bagno, letti Aggancia Carica Passeggeri Camper Abitacolo Bagno, letti Aggancia Carica Passeggeri Polimorfismo E la proprietà di poter flessibilmente eseguire una operazione di una sottoclasse in base al tipo di oggetto richiamato Esempio: tracciare un grafico comporta a) acquisizione dati b) scelta del tipo di grafico - variabile tipografico c) disegno del grafico scelto
Esempio - polimorfismo dati disegna Grafico Report Testo, disegni, immagini Messaggio[tipografico.disegna, dati] Torta dati disegna Istogrammi dati disegna Se la variabile tipografico è = a istogrammi il messaggio viene indirizzato alla classe istogrammi Se la variabile tipografico è = a torta il messaggio viene indirizzato alla classe torta La relazione di composizione Una proprietà delle classi e la loro scomponibilità in parti in modo da riciclare i loro componenti Le classi quindi possono essere degli aggregati di altre classi più atomiche Esempio: il funzionamento di una automobile si può dividere nelle sue componenti in modo da poter riciclare le definizioni dei componenti anche per alti usi. Motore, ruota, impianto elettrico, impianto idraulico, etc sono componenti della classe AUTOMOBILE. Non ha senso descrivere tutto nella classe AUTOMOBILE risulta più conveniente e più facile da progettare dividere la complessità
Relazione di composizione Automobile Abitacolo, Motore, Imp. Idraulico, Ruota 1 1 4 1 1 1 Motore Imp. Idraulico Ruota Caburatore Pompa Larghezza tipo Accensione raffredda aderisce Javascript Javascript è un linguaggio di scripting che si inserisce direttamente nelle pagine HTML Orientato agli oggetti E un linguaggio interpretato e l interprete è incluso nel browser Lo schema degli oggetti è basato sugli elementi delle finestre e dei documenti DOM Document Object Model
Reprinted from Netscape's JavaScript Guide Notazione Javascript per gli oggetti Nome-Classe.nome-attributo auto.modello Nome-Classe.nome-metodo(par1, par2, par3,,par n ) auto.acquisto(prezzo, num_fattura, codice_cliente) Nome-Oggetto = new Nome-Classe FIAT = new auto FIAT.modello = PUNTO
Esempi Javascript If while oggetto