Programmazione orientata agli oggetti OOP Object Oriented Programming

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

Programmazione ad oggetti
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Progettazione concettuale
Unified Modeling Language
Recupero debito quarto anno Primo incontro
Recupero debito quarto anno Secondo incontro
Estendere i linguaggi: i tipi di dato astratti
Informatica Recupero debito quarto anno Terzo incontro.
Progettazione concettuale
Programmazione object oriented in C++
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
4 – Progettazione – Introduzione e Modello E-R
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
©Carlo Tasso 1999 Object Oriented Programming Slide 1 OO Analysis Vs. OO Design OOA – Object Oriented Analysis. –Specifica COSA, IN QUALE CONTESTO il sistema.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Basi di conoscenza: rappresentazione e ragionamento (2 - Reti semantiche, Frames) Prof. M.T. PAZIENZA a.a
ENTITÀ - RELAZIONE MODELLO ENTITÀ E ATTRIBUTI DOMINI RELAZIONI
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
UML: Class Diagram Corso IS I /03
Unità Didattica 2 I Linguaggi di Programmazione
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Modello E-R Generalizzazioni
Progettazione di una base di dati
Modello E-R Generalizzazioni
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Ereditarietà e Polimorfismo
L’ingegneria del software
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
Introduzione alla programmazione Object Oriented
Introduzione a Oracle 9i
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Lazienda SC Informatica si occupa della progettazione e della realizzazione di sistemi informatici dedicati alle farmacie. Fornisce inoltre un servizio.
Scenari e Casi d’Uso (UML)
Esercitazioni di Ingegneria del Software con UML
UML.
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Programmazione ad oggetti
Diagramma delle Classi
Analisi dei requisiti Il primo passo di “qualsiasi” processo di sviluppo è la definizione dei requisiti  Definizione del Business Model  Solitamente.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 -Progettazione del software Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 4 - Progettazione del software Ernesto Damiani Università degli Studi.
La Programmazione ad Oggetti
1Ingegneria Del Software L-A Progetto realizzato da: Luca Iannario, Enrico Baioni, Sara Sabioni. A.A. 2008/2009.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Attività 1 Introduzione alla OOP
Cloud informatica V anno.
La programmazione ad oggetti
28/12/2001package 1 Package Pacchetti e interfacce.
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

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à

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. L’incapsulamento è 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. All’interno di un oggetto il codice e i dati possono essere privati per quell’oggetto, sono utilizzabili solo dall’oggetto stesso, o pubblici, possono essere utilizzati da qualunque parte del programma. Le parti pubblice di un oggetto costituiscono l’Interfaccia di accesso all’oggetto stesso.

Polimorfismo Polimorfismo è un termine derivato dal greco che significa “pluralità di forme”. È il meccanismo che permette di utilizzare un’unica interfaccia per un’intera tipologia di azioni. Esempio: Il volante di un’auto è l’interfaccia. Non è necessario, per guidare, sapere se il volante utilizza lo sterzo manuale, il servosterzo o altro. 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.

Ereditarietà L’Ereditarietà è 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.

Programmazione orientata agli oggetti Ogni cosa è un oggetto Un programma è un insieme di oggetti che si comunicano l’un l’altro cosa devono fare scambiandosi messaggi Ogni oggetto ha la sua memoria che è composta di altri oggetti Ogni oggetto ha un tipo (classe) 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 www.BruceEckel.com

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 l’esecuzione 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.

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

Unified Modeling Language UML Cos’è UML Unified Modeling Language 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. Martin Fowler, Rendal Scott UML Distilled Guida rapida allo Standard Object Modeling Language Diagrammi di casi d’uso Diagrammi di sequenza Diagrammi delle classi

UML Diagrammi di casi d’uso Ivar Jacobson “Objectority” 1992 Lo scenario è la sequenza di passi che descrivono l’interazione 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 l’acquisto. Il sistema controlla se la carta di credito è valida e conferma l’acquisto sia immediatamente che con un successivo messaggio di posta. Tuttavia la carta di credito potrebbe non essere valida, questo implica l’esistenza di un altro scenario

UML Diagrammi di casi d’uso Un caso d’uso è un insieme di scenari legati da un obbiettivo comune per l’utente. Nell’esempio precedente il caso d’uso era: Acquisto di un prodotto. Un caso d’uso può essere espresso per via testuale ma spesso è molto più semplice rappresentarlo con diagrammi Gli attori Un attore è un ruolo interpretato dall’utente nei confronti del sistema.Gli attori non sono necessariamente persone. Una buona fonte per l’identificazione dei casi d’uso sono gli eventi esterni al sistema ai quali esso deve reagire.

UML Diagrammi di casi d’uso I diagrammi di casi d’uso Caso d’Uso Attore Inclusione Generalizzazione

UML Diagrammi di casi d’uso I diagrammi di casi d’uso Vi sono tre tipi di relazione nei casi d’uso: La relazione di Inclusione serve a descrivere casi d’uso già descritti altrove. La relazione di Generalizzazione serve ad esaminare un caso particolare del caso d’uso 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 d’uso e ci si limita a quelli.

UML 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

UML diagramma delle classi 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 Rappresentazione della classe 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 sull’oggetto.

UML diagramma delle classi Rappresentazione della classe 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 l’angolo Queste operazioni costituiscono l’interfaccia. La seconda rappresentazione è analoga alla prima ma specifica anche i tipi in gioco.

UML diagramma delle classi Ereditarietà Può capitare di dover implementare due classi con caratteristiche comuni. L’ereditarietà permette di creare una classe che possegga tutte le caratteristiche di un’altra 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à 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. superclasse sottoclasse

UML diagramma delle classi Associazione 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”. Nome dell’associazione (normalmente un verbo)

UML diagramma delle classi Associazione 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. Ruolo

UML diagramma delle classi Associazione 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 * Uno 1 Zero o più 0..* Uno o più 1..* Un range 3..7 Molteplicità

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

UML diagramma delle classi Aggregazione È una relazione che risponde alla specifica di “è parte di”. Un punto è parte di un poligono . Nell’esempio 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. Nell’esempio 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.

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

UML diagramma delle classi Visibilità 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 all’uso interno della classe che li definisce. Quelli protetti possono essere usati dalla classe che li definisce e dalle sue sottoclassi. + Pubblici - Privati # Protetti

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

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

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