Object oriented

18
Dalla programmazione tradizionale all’Object-Oriented Un’importante svolta nel campo della programmazione si è avuta con l’introduzione della programmazione a oggetti, che può essere considerata una logica evoluzione della programmazione strutturata. In questo caso l’enfasi viene posta sulla fase di progettazione e propone la riduzione e la semplificazione del processo di costruzione e manutenzione del software. Per giungere alla soluzione di un problema l’uomo generalmente utilizza procedimenti quali:

Transcript of Object oriented

Page 1: Object oriented

Dalla programmazione tradizionale all’Object-Oriented

Un’importante svolta nel campo della programmazione si è avuta con l’introduzione della programmazione a oggetti, che può essere considerata una logica evoluzione della programmazione strutturata. In questo caso l’enfasi viene posta sulla fase di progettazione e propone la riduzione e la semplificazione del processo di costruzione e manutenzione del software.Per giungere alla soluzione di un problema l’uomo generalmente utilizza procedimenti quali:

Page 2: Object oriented

Il modello a oggettiIl modello a oggetti propone di mantenere, anche nella fase di sviluppo del software, la tecniche proprie dell’approccio concettuale cercando di rappresentare la realtà e non un modello della realtà (natural modelling).Un programma è quindi costituito dalla definizione di un insieme di oggetti che si richiamano tra di loro attraverso i metodi, ovvero operazioni che agiscono sull’oggetto stesso.Con la diffusione dell’approccio Object-Oriented sono stati unificati i vari approcci così da avere un unico linguaggio di modellizzazione e progettazione: UML – Unified Modelling Language.

Page 3: Object oriented

Vantaggi

Page 4: Object oriented

IncapsulamentoIl principio dell’incapsulamento afferma che l’unico modo per accedere ai dati dell’oggetto è l’invocazione dei metodi; non è quindi possibile usare la struttura in modo differente da quello per cui è stata prevista.

L’encapsulation può essere vista come un’estensione del concetto di modularità. Dal momento che le interazioni tra gli oggetti possono avvenire solamente tramite i metodi, risulta facilitata la costruzione di sistemi e la localizzazione di eventuali malfunzionamenti.

Page 5: Object oriented

Ogni entità del sistema che si vuole descrivere è rappresentata da un oggetto. Un oggetto possiede:•determinate caratteristiche strutturali (proprietà o attributi) che, globalmente, determinano lo stato dell’oggetto;•determinati comportamenti che vengono codificati in un insieme di operazioni chiamate metodi.

Gli oggetti

Page 6: Object oriented

ClasseLa classe è lo strumento che permette di definire le proprietà degli oggetti (gli attributi) e le funzioni che verranno usate per agire su di essi (i metodi). Con la classe quindi si possono costruire strutture dati che contengano non solo i dati, ma anche il codice per gestirli.La classe viene dunque descritta attraverso:•Un nome;•Un insieme di attributi per definire le caratteristiche;•Un insieme di metodi per definire quali azioni si possono eseguire.

Page 7: Object oriented

Operazioni e metodi

I metodi sono gruppi di istruzioni correlate in una classe che gestiscono un’operazione. La definizione di un metodo comprende quattro parti:

I metodi vengono richiamati facendo precedere il loro nome da quello dell’oggetto della classe dove il metodo stesso è stato definito.

Mio_libro. Restituzione();

Page 8: Object oriented

Costruttore e distruttore

A ogni classe sono sempre associati due metodi speciali detti costruttore e distruttore.

Page 9: Object oriented

Definire una classe in C++class nomeclasse {

tipo1 att1;tipo2 att2;……………..tipoN attN;

//metodipublic://costruttorenomeclasse() {…..}//distruttore-nomeclasse() {….}

tipo1 metodo1() {….}tipo2 metodo2() {….}tipoN metodoN() {…}

};

Page 10: Object oriented

Metodologia UMLMetodologia UMLTra tutte le metodologie Object-Oriented quella che è diventata lo standard è l’UML che ha il pregio di gestire appieno gli aspetti temporali sfruttando, per gli aspetti statici, le metodologie preesistenti.La peculiarità dell’UML consiste nel coprire gli aspetti funzionali, temporali e dei dati delle metodologie tramite un modello degli oggetti, un modello dinamico e un modello funzionale. L’utilizzo di uno stesso formalismo in entrambe le fasi è conseguenza del fatto che, nell’approccio Object-Oriented, si parla di oggetti dalla fase di analisi fino all’implementazione. Questi ultimi racchiudono sia la parte funzionale sia dati: ne risulta una forte corrispondenza tra le entità che costituiscono il dominio e gli oggetti individuati durante la fase di analisi.

Page 11: Object oriented

Class DiagramI diagrammi di classe mostrano le diverse classi presenti nel sistema e le relazione tra di esse.Le classi vengono rappresentate graficamente utilizzando la metodologia UML attraverso il diagramma delle classi ovvero un rettangolo contenente il nome della classe, l’elenco degli attributi e l’elenco dei metodi. Esempio:

Persona

CognomeNomeEtàIndirizzo

StampaDati()IncrementaEtà()StampaIndirizzo()

Nome Classe

Attributi: in UML gli attributi sono mostrati con il loro nome e possono mostrare anche il loro tipo, il valore inziale e altre proprietà

Operazioni: le operazioni (metodi) sono anch’esse mostrate con il loro nome, i loro parametri e i tipi restituiti

Page 12: Object oriented
Page 13: Object oriented

Modello dinamicoIl modello dinamico mostra il comportamento, dipendente dal tempo, del sistema e degli oggetti in esso contenuto. Vengono individuati e formalizzati dapprima i casi d’uso, cioè l’interazione degli oggetti a fronte degli eventi provenienti dal mondo esterno. Quindi per ogni caso d’uso viene creato un diagramma che rappresenta la sequenza temporale delle interazioni tra gli oggetti del dominio.

Page 14: Object oriented

Un caso d’uso descrive, dal punto di vista dell’attore ovvero un’entità esterna che interagisce con esso attraverso un caso d’uso, un gruppo di attività in un sistema. Praticamente descrive l’interazione tra un utente e il sistema, rappresenta l’interfaccia del sistema con l’esterno, indicando ciò che fa il sistema ma non come lo fa. I tipi più comuni di relazioni con altri casi d’uso sono:

Specifica che un caso d’uso eredita le caratteristiche del «sovra» caso d’uso, e può sostituirne alcune o aggiungerne nuove.

Specifica che in certe situazioni, o a un certo punto, un caso d’uso sarà esteso da un altro.

Specifica che un caso d’uso avviene all’interno di un altro caso d’uso.

Page 15: Object oriented

Sequence diagram

I diagrammi di sequenza mostrano lo scambio di messaggi, cioè la chiamata ai metodi, tra diversi oggetti in una situazione temporale precisa.

Nei diagrammi di sequenza gli oggetti sono rappresentanti con linee verticali tratteggiati.

L’asse temporale è verticale, in modo che i messaggi che si trovano nella parte alta del diagramma siano quelli inviati prima. L’invio di un messaggio è indicato con una freccia.

Page 16: Object oriented
Page 17: Object oriented

EreditarietàL’ereditarietà (inheritance) consente la definizione di un nuovo oggetto mediante il raffinamento di un oggetto già esistente: è cioè possibile creare proprietà e metodi del nuovo oggetto modificando opportunamente quelli dell’oggetto preesistente e aggiungendo ulteriori proprietà e/o metodi caratterizzanti.

Page 18: Object oriented

PolimorfismoLa ridefinizione dei metodi è possibile grazie al concetto di polimorfismo, una delle caratteristiche dell’Object-Oriented, grazie a cui una nuova stessa operazione può avere comportamenti differenti per classi differenti.Vi sono due modi per ridefinire un metodo: