La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione orientata agli oggetti OOP Object Oriented Programming Quando si programma ad oggetti si scompone il problema nelle sue parti costituenti,

Presentazioni simili


Presentazione sul tema: "Programmazione orientata agli oggetti OOP Object Oriented Programming Quando si programma ad oggetti si scompone il problema nelle sue parti costituenti,"— Transcript della presentazione:

1 Programmazione orientata agli oggetti OOP Object Oriented Programming Quando si programma ad oggetti si scompone il problema nelle sue parti costituenti, ognuna di queste diventa un oggetto a sé stante che contiene le proprie istruzioni e i dati relativi a tale oggetto. Tutti i linguaggi di programmazione hanno tre caratteristiche comuni: Incapsulamento Polimorfismo Ereditarietà

2 Incapsulamento Tutti i programmi sono composti da codice e dati. Il codice è la parte di programma che esegue le operazioni i dati sono le entità sulle quali vengono eseguite queste operazioni. Lincapsulamento è il meccanismo di programmazione che riunisce il codice e i dati da esso manipolati proteggendoli da interferenze esterne e da un utilizzo scorretto. Il codice e i dati collegati in questo modo costituiscono un oggetto. Allinterno di un oggetto il codice e i dati possono essere privati per quelloggetto, sono utilizzabili solo dalloggetto stesso, o pubblici, possono essere utilizzati da qualunque parte del programma. Le parti pubblice di un oggetto costituiscono lInterfaccia di accesso alloggetto stesso.

3 Polimorfismo Polimorfismo è un termine derivato dal greco che significa pluralità di forme. È il meccanismo che permette di utilizzare ununica interfaccia per unintera tipologia di azioni. Esempio: Il volante di unauto è linterfaccia. Non è necessario, per guidare, sapere se il volante utilizza lo sterzo manuale, il servosterzo o altro. Esempio: Una coda funzione con criterio FIFO (primo ad entrare, primo ad uscire) se accade di dover inserire un intero piuttosto che un float o una struttura più complessa, dovremmo definire una funzione con nome diverso per ogni tipo da inserire. Il polimorfismo è la caratteristica di poter utilizzare la stessa interfaccia in ogni caso. Quando si sa inserire un tipo di dato, quindi, si sa come inserire anche gli altri.

4 Ereditarietà LEreditarietà è il processo mediante il quale un oggetto acquisisce le proprietà di un altro oggetto in base al concetto di classificazione gerarchica. Esempio: Se ho una mela questa fa parte della classe mela, che a sua volta fa parte della classe frutto, che è compresa nella classe cibo. Ciò vuol dire che la classe cibo ha proprietà come: commestibilità, digeribilità ecc. La classe frutto, oltre ad essere commestibile e digeribile, è anche dolce e succosa infine la classe mela ha tutte le caratteristiche delle classi da cui deriva ed in più ha la proprietà di crescere sugli alberi, di non essere un frutto tropicale ecc. La mela che io posseggo è unica ed ha tutte le proprietà descritte.

5 1.Ogni cosa è un oggetto 2.Un programma è un insieme di oggetti che si comunicano lun laltro cosa devono fare scambiandosi messaggi 3.Ogni oggetto ha la sua memoria che è composta di altri oggetti 4.Ogni oggetto ha un tipo (classe) 5.Tutti gli oggetti di una particolare classe possono ricevere gli stessi messaggi Thinking in C++, 2nd ed. Volume 1 ©2000 by Bruce Eckel Available from Programmazione orientata agli oggetti

6 Ogni oggetto appartiene ad una classe Ogni oggetto è unico, ma fa anche parte di una classe di oggetti. Gli oggetti che sono identici, tranne che per il loro stato durante lesecuzione di un programma, sono raggruppati insieme in classi di oggetti. Le classi sono tipi astratti di dati. Esse funzionano quasi come i tipi elementari (int, char ecc..). Si può dichiarare, quindi, una variabile appartenente a quella classe. La variabile si chiama istanza della classe o più semplicemente oggetto.

7 Interfaccia Per utilizzare un oggetto dobbiamo sapere quali messaggi mandargli. Linsieme dei possibili messaggi ad un oggetto viene chiamato interfaccia. Linterfaccia è definita dalla classe. Nome della classe Interfaccia Lampadina lampada1; lampada1.accenditi(); La classe è: Lampadina Loggetto è: lampada1 Linterfaccia è: accenditi(),spegniti();

8 UML U nified M odeling L anguage Un linguaggio di modellazione è la notazione usata per descrivere le caratteristiche di un progetto. UML è un linguaggio di modellazione per i progetti Object Oriented (OO), ed è un linguaggio standardizzato. È nato dalla fusione delle tecniche più usate di modellazione OO. Cosè UML Martin Fowler, Rendal Scott UML Distilled Guida rapida allo Standard Object Modeling Language Diagrammi di casi duso Diagrammi di sequenza Diagrammi delle classi

9 UML Diagrammi di casi duso Diagrammi di casi duso Lo scenario è la sequenza di passi che descrivono linterazione fra un utente e un sistema. Esempio: Il cliente naviga nel catalogo e raccoglie gli articoli desiderati in un carrello della spesa. Quando il cliente desidera pagare, descrive la modalità di spedizione e fornisce la necessaria informazione riguardante la propria carta di credito prima di confermare lacquisto. Il sistema controlla se la carta di credito è valida e conferma lacquisto sia immediatamente che con un successivo messaggio di posta. Tuttavia la carta di credito potrebbe non essere valida, questo implica lesistenza di un altro scenario Ivar Jacobson Objectority 1992

10 UML Diagrammi di casi duso I casi duso Un caso duso è un insieme di scenari legati da un obbiettivo comune per lutente. Nellesempio precedente il caso duso era: Acquisto di un prodotto. Un caso duso può essere espresso per via testuale ma spesso è molto più semplice rappresentarlo con diagrammi Un attore è un ruolo interpretato dallutente nei confronti del sistema.Gli attori non sono necessariamente persone. Una buona fonte per lidentificazione dei casi duso sono gli eventi esterni al sistema ai quali esso deve reagire. Gli attori

11 UML Diagrammi di casi duso I diagrammi di casi duso Attore Caso dUso Generalizzazione Inclusione

12 UML Diagrammi di casi duso I diagrammi di casi duso Vi sono tre tipi di relazione nei casi duso: La relazione di Inclusione serve a descrivere casi duso già descritti altrove. La relazione di Generalizzazione serve ad esaminare un caso particolare del caso duso da cui deriva. Dovrebbe avere tutte le caratteristiche del caso da cui deriva (eventualmente ridefinite) più altre relative al caso specifico. La relazione di Estensione è un caso particolare di generalizzazione. Si dichiarano i punti in cui si vuole estendere il caso duso e ci si limita a quelli.

13 UML diagramma delle classi Diagramma delle classi Descrive il tipo degli oggetti che compongono il sistema e le relazioni statiche esistenti fra loro Esistono tre tipi di diagrammi delle classi che descrivono tre diversi punti di vista: Diagramma delle classi Concettuale Diagramma delle classi di Specifica Diagramma delle classi di Implementazione

14 Diagramma delle classi concettuale Rappresenta i concetti propri del dominio che si sta studiando. Questi concetti saranno legati in modo naturale con le classi destinate ad implementarli ma non è necessaria una corrispondenza diretta. Questo diagramma dovrebbe essere disegnato con poco o nessun riguardo per il software che lo dovrà implementare. Diagramma delle classi di specifica La prospettiva riguarda il software, ma al livello di interfaccia e non di implementazione. Diagramma delle classi di implementazione Ci si riferisce, in pratica, proprio alla descrizione del codice. UML diagramma delle classi

15 Il nome della classe inizia con la lettera maiuscola ed è privo di underscore. Gli attributi sono un insieme di caratteristiche i cui valori identificano un oggetto, o istanza della classe, e ne costituiscono lo stato; ogni attributo ha un nome, che inizia con la lettera minuscola, ed opzionalmente un tipo (classe). Le operazioni costituiscono un insieme di funzioni che possono essere espletate sulloggetto. Rappresentazione della classe

16 UML diagramma delle classi Esempio: un punto su di un piano cartesiano. Ha due attributi x e y. Un oggetto appartenente a questa classe può essere manipolato con le operazioni: xval() che restituisce il valore di x yval() che restituisce il valore di y rval() che restituisce il modulo tval() che restituisce langolo Queste operazioni costituiscono linterfaccia. La seconda rappresentazione è analoga alla prima ma specifica anche i tipi in gioco. Rappresentazione della classe

17 Può capitare di dover implementare due classi con caratteristiche comuni. Lereditarietà permette di creare una classe che possegga tutte le caratteristiche di unaltra classe e ve ne aggiunga delle altre. Un cerchio, ad esempio, è una forma geometrica particolare, quindi può essere derivata dalla classe forma. Così come Triangolo e Quadrato superclasse sottoclassi UML diagramma delle classi Ereditarietà

18 La classe Punto si dice superclasse mentre la classe Pixel si dice sottoclasse. La classe Pixel eredita tutte le caratteristiche della classe punto e ve ne aggiunge delle nuove. Questa relazione è di tipo è un. Un oggetto della classe Pixel è un punto colorato. Si dice anche che la classe Pixel è una specializzazione della classe Punto, o ancora che la classe Punto è un generalizzazione della classe Pixel. UML diagramma delle classi Ereditarietà superclasse sottoclasse

19 Una associazione o relazione è un legame logico tra classi che esprime una correlazione. Ad esempio la classe Corso è in associazione con la classe Studente. Dal punto di vista di Corso si può dire che la relazione è è frequentato da mentre dal punto di vista di Studente la relazione è frequenta. UML diagramma delle classi Associazione Nome dellassociazione (normalmente un verbo)

20 Si può specificare il ruolo a ciascuna delle classi in relazione. Ad esempio: un oggetto della classe Persona può avere il ruolo di insegnante poiché esiste la relazione insegna fra le due classi. UML diagramma delle classi Associazione Ruolo

21 La molteplicità di una relazione indica il numero di oggetti che partecipano ad ogni associazione. Uno studente può frequentare da 1 a 4 corsi. Ed ogni corso è frequentato da molti studenti. Esempi di molteplicità: Molti* Uno1 Zero o più0..* Uno o più1..* Un range3..7 UML diagramma delle classi Associazione Molteplicità

22 Permette di aggiungere degli attributi e delle funzioni alla relazione, senza necessariamente aggiungere dei campi alle classi che partecipano allassociazione. UML diagramma delle classi Classe di Associazione Classe di associazione

23 UML diagramma delle classi Aggregazione È una relazione che risponde alla specifica di è parte di. Un punto è parte di un poligono. Nellesempio un poligono è formato da almeno 3 punti (molteplicità) e un punto può appartenere ad un solo poligono. Navigabilità La navigabilità di una relazione è rappresentata da una freccia ad un suo capo. Nellesempio un oggetto della classe Corso deve dichiarare quale persona è il docente. Mentre un appartenente alla classe Persona non deve necessariamente dichiarare se è docente di un corso.

24 Diremo che due classi sono dipendenti se si prevede che le relative istanza possano scambiarsi messaggi. La dipendenza implica che se cambia limplementazione di una classe potrebbe essere necessario cambiare anche quella delle classi dipendenti. UML diagramma delle classi Dipendenza

25 Ogni classe ha degli elementi pubblici, degli elementi privati e degli elementi protetti. Quelli pubblici possono essere usati dalle altre classi. Quelli privati sono riservati alluso interno della classe che li definisce. Quelli protetti possono essere usati dalla classe che li definisce e dalle sue sottoclassi. +Pubblici -Privati #Protetti UML diagramma delle classi Visibilità

26 Un package è un raggruppamento di classi a livello più alto. UML Package Package

27 UML Diagramma di Sequenza I diagrammi di Sequenza Allinterno di un diagramma di sequenza, ogni oggetto viene rappresentato come un rettangolo posto in cima ad una linea tratteggiata verticale chiamata linea di vita delloggetto. I messaggi che gli oggetti si scambiano sono rappresentati dalle frecce. Se loggetto richiama una sua funzione, chiamata interna (self call), è come se mandasse un messaggio a se stesso.

28 UML Diagramma di Sequenza Oggetto o Classe messaggio ritorno condizione Linea di vita Self call


Scaricare ppt "Programmazione orientata agli oggetti OOP Object Oriented Programming Quando si programma ad oggetti si scompone il problema nelle sue parti costituenti,"

Presentazioni simili


Annunci Google