La Programmazione ad Oggetti

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.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unit à B2 Gli oggetti: concetti avanzati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Le basi della programmazione a oggetti.
Unified Modeling Language
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
PHP.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Programmazione orientata agli oggetti OOP Object Oriented Programming
Fondamenti di Informatica
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
Introduzione al linguaggio Java
Derivazione tra classi
Overriding.
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
Java base IV: Java e la programmazione O.O.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
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.
Componenti fondamentali di un programma Java
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Introduzione alla programmazione Object Oriented
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
I processi.
Ereditarietà e polimorfismo
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Incapsulamento e information hiding
Programmazione ad oggetti
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
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
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Primi principi della OOP
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
La programmazione ad oggetti
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
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:

La Programmazione ad Oggetti Fabio Scanu a.s. 2012/2013

Paradigmi di programmazione Programmazione non strutturata Programmazione procedurale Programmazione modulare Programmazione ad oggetti

Programmazione non strutturata Il programma è costituito da un unico blocco di codice detto "main" dentro il quale vengono manipolati i dati in maniera totalmente sequenziale

Programmazione procedurale Il concetto base è quello di raggruppare i pezzi di programma ripetuti in porzioni di codice utilizzabili e richiamabili ogni volta che se ne presenti l'esigenza; queste porzioni di codice sono chiamate procedure. Il programma è costituito da un unico file.

Programmazione modulare Lezione 1 Programmazione modulare Le procedure aventi un dominio comune (ad esempio, procedure che eseguono operazioni matematiche) vengono raggruppate in moduli separati. Il programma è costituito da più file.

Lezione 1 Programmazione orientata agli oggetti (Object Oriented Programming - OOP) E’ basato sul fatto che esistono una serie di oggetti che interagiscono vicendevolmente, scambiandosi messaggi ma mantenendo ognuno il proprio stato ed i propri dati.

Origini della programmazione ad oggetti Lezione 1 Origini della programmazione ad oggetti Anni ’60: Simula 1 e Simula 67 Anni ’70: Smalltalk Anni ’80: ADA – consacrazione della programmazione ad oggetti Tra i più noti linguaggi di programmazione ad oggetti: Java, C++, Delphi, C#, Visual Basic.NET

Motivazioni Migliorare la qualità del software Lezione 1 Motivazioni Migliorare la qualità del software I programmi di grandi dimensioni vengono scomposti in moduli, che chiameremo oggetti Ne trae beneficio la fase di manutenzione Riutilizzo del codice

Oggetti 1 Per capire cos’è un oggetto prendiamo spunto dalla vita reale: un oggetto è un’automobile, un computer, una casa, e così via Un oggetto può essere definito elencando sia le sue caratteristiche sia i suoi comportamenti, cioè le funzioni che mette a disposizione Elencando le caratteristiche e i comportamenti, diamo una definizione generica Un oggetto però è un’entità particolare, con le sue caratteristiche specifiche.

Oggetti 2 Ad un preciso oggetto assegniamo un nome: chiameremo quindi un oggetto di classe automobile auto1 Quindi l’oggetto auto1 potrà essere così descritto: - Velocità = 80 - Colore = rosso - Numero di porte = 5 - Marca = bmw

Oggetti 3 Un altro oggetto auto2 potrò avere le seguenti caratteristiche: - Velocità = 60 - Colore = nero - Numero di porte = 4 - Marca = fiat Quindi gli oggetti sono diversi a seconda del valore assunto dalle loro caratteristiche, ma condividono la stessa struttura

Oggetti 4 Nella terminologia OOP le caratteristiche di un oggetto vengono chiamate attributi, i comportamenti vengono chiamati metodi I metodi sono le operazioni che un oggetto è in grado di compiere Un oggetto è quindi formato da attributi e metodi

Classi 1 Possono esistere più oggetti che hanno gli stessi attributi, anche con valori diversi, e che dispongono degli stessi metodi. Si dice che questi oggetti appartengono alla stessa classe Una classe specifica gli attributi, senza indicarne il valore, e i metodi che devono avere gli oggetti che appartengono alla classe La classe quindi crea più oggetti tutti con gli stessi attributi e gli stessi metodi. Gli oggetti creati a partire da una classe vengono chiamati istanze della classe Due istanze della stessa classe sono distinguibili solo per il valore dei loro attributi, mentre il loro comportamento (metodo) è lo stesso

Classi 2 <nome classe> <attributo1> <attributo2> Diagramma delle classi Classi 2 La struttura di una classe è la seguente: <nome classe> <attributo1> <attributo2> … <metodo1> <metodo2>

Classi 3 Automobile Esempio: Velocità Colore Numero di porte Marca Avviati Accelera Fermati Gira Cambia marcia Rifornisciti

Classi 4 Usando questa classe possiamo creare gli oggetti auto1 e auto2, e dopo averli creati possiamo interagire con essi usando l’invio di messaggi oppure modificando direttamente gli attributi. Possiamo impostare alcune caratteristiche dell’oggetto auto1: - auto1.colore = blu - auto1.numero_di _porte = 5 oppure possiamo usare i metodi dell’oggetto auto2 sfruttando i seguenti messaggi: - auto2.avviati() - auto2.accelera()

Esempi usando il linguaggio Java 1 Un’applicazione Java è costituita da una o più classi; una classe solamente contiene il metodo main(): l’esecuzione di un’applicazione java comincia eseguendo questo metodo. class saluti { public static void main (String args[]) System.out.println(“hello world”); }

Esempi usando il linguaggio Java 2 public indica che il metodo è pubblico ed è visibile static indica che il metodo è associato alla classe e non può essere richiamato dai singoli oggetti della classe. void indica che non ci sono valori di ritorno Parametri Il metodo main possiede come parametro un array di stringhe (indicato con args[]) che corrisponde ai parametri passati dalla riga di comando quando viene eseguita l’applicazione

Esempi usando il linguaggio Java 3 Questo semplice esempio dichiara una classe chiamata saluti, contenente il metodo main che è formato da un’unica istruzione, ossia una chiamata del metodo println(). Usando la terminologia OOP diciamo che viene inviato all’oggetto System.out il messaggio println. L’oggetto System.out indica lo standard output.

Esempi usando il linguaggio Java 4 Esempio di dichiarazione di una classe: class <nome della classe> { //attributi //metodi }

Esempi usando il linguaggio Java 5 Esempio di dichiarazione di attributi: class automobile { private int velocità, numero_porte; String colore, marca; } Esempio di dichiarazione di metodi void accelera() { …} public void sposta() { …}

Esempi usando il linguaggio Java 6 Esempio di creazione ed uso di oggetti: supponiamo che esista la classe Automobile; dichiariamo le seguenti istanze di classe: - Automobile auto1 ; - Automobile auto2; per creare l’oggetto si usa l’operatore new seguito dal nome della classe - auto1 = new Automobile(); - auto2 = new Automobile();

Interazione tra oggetti 1 Un programma ad oggetti è formato da tanti oggetti che comunicano ed interagiscono tra loro. L’interazione tra gli oggetti avviene con un meccanismo chiamato scambio di messaggi Un oggetto, inviando un messaggio ad un altro oggetto, può richiedere l’esecuzione di un metodo Un oggetto può interagire con un altro oggetto per diversi motivi: per modificarne lo stato, per richiedere un’informazione o per attivare un comportamento

Interazione tra oggetti 2 Un messaggio è costituito da 3 parti: un destinatario, cioè l’oggetto verso il quale il messaggio è indirizzato; il metodo che si vuole attivare, che deve essere uno dei metodi messi a disposizione dall’oggetto destinatario; l’insieme dei parametri che vengono passati all’oggetto quando si richiede l’attivazione del metodo

Interazione tra oggetti 3 Per esempio, se abbiamo una classe automobile e una classe autista, un oggetto di classe autista, per esempio autista1 per inviare all’oggetto auto1 di classe automobile il messaggio che richiede di aumentare la velocità può scrivere: auto1.accelera()

Caratteristiche della OOP Incapsulamento Ereditarietà Polimorfismo

Incapsulamento Con il termine incapsulamento si indica la proprietà degli oggetti di incorporare al loro interno sia gli attributi che i metodi, cioè le caratteristiche e i comportamenti dell’oggetto. Tutto ciò che si riferisce ad un certo oggetto è racchiuso e contenuto all’interno dell’oggetto stesso Gli attributi e i metodi sono incapsulati nell’oggetto. In questo modo tutte le informazioni utili che riguardano un oggetto sono al suo interno. Questo è uno dei vantaggi della programmazione ad oggetti

Interfaccia Un oggetto può essere utilizzato inviando ad esso i messaggi. L’insieme dei messaggi, che consentono l’interazione con gli oggetti, rappresenta la sua interfaccia L’interfaccia è costituita dall’elenco dei metodi identificati dal loro nome. Per ogni metodo occorre indicare anche il numero e il tipo dei parametri e il valore di ritorno del metodo Chi utilizza l’oggetto deve conoscere solo la sua interfaccia. In questo modo può sapere quali metodi possono essere invocati, quali sono i parametri da passare e che cosa ricaverà come valore di ritorno

Accesso agli attributi 1 Anche gli attributi sono nascosti nell’oggetto Per poter leggere o modificare il valore di un attributo, si dovrebbe utilizzare un metodo che esegue l’operazione richiesta Per esempio, se volessimo conoscere il valore della velocità dell’oggetto auto1 dovremmo usare il seguente messaggio: auto1.leggiVelocità() Questo garantisce l’information hiding, ma comporta che per ogni attributo dell’oggetto siano definiti il metodo per leggere e il metodo per modificare il suo valore

Accesso agli attributi 2 Alcuni linguaggi hanno cercato di superare questa difficoltà consentendo un modo diverso per manipolare gli attributi; in questo caso ci si riferisce direttamente agli attributi: auto1.velocità Questa modalità di accesso agli attributi viola la regola dell’information hiding, perché gli attributi non restano più nascosti all’interno dell’oggetto, ma offre la facilitazione di poter manipolare gli attributi senza usare i messaggi

Ereditarietà 1 L’ereditarietà è lo strumento che permette di costruire nuove classi utilizzando quelle già sviluppate Quando una classe viene creata attraverso il meccanismo di ereditarietà a partire da un’altra classe, essa riceve in eredità tutti gli attributi e i metodi della classe generatrice

Ereditarietà 2 La classe che è stata derivata da un’altra usando l’ereditarietà prende il nome di sottoclasse. La classe generatrice di una sottoclasse si chiama sopraclasse Queste relazioni tra le classi individuano una gerarchia che nasce da un processo di specializzazione. Infatti le classi che si trovano in cima alla gerarchia sono le più generali e man mano che si scende si trovano classi più specializzate

Ereditarietà 3 Mezzi di trasporto Veicoli a motore Mezzi non a motore Bicicletta Cavallo Auto Moto Autobus

Ereditarietà 4 La sottoclasse eredita dalla sopraclasse tutti gli attributi e tutti i metodi con la possibilità di inserire le differenze. La nuova classe si differenzia dalla sopraclasse in due modi: - per estensione, quando la sottoclasse aggiunge nuovi attributi e metodi che si sommano a quelli ereditati - per ridefinizione, quando la sottoclasse ridefinisce i metodi ereditati, viene cioè data un’implementazione diversa di un metodo

Ereditarietà 5 L’ereditarietà serve a definire nuove classi, derivate da altre, che ereditano gli attributi e i metodi, con la possibilità di ridefinirli o di aggiungerne di nuovi.

Ereditarietà 6 Esistono due tipi di ereditarietà: singola multipla

Ereditarietà Singola Si parla di ereditarietà singola quando una sottoclasse deriva da un’unica sopraclasse sopraclasse sottoclasse sottoclasse

Ereditarietà Multipla Si parla di ereditarietà multipla quando una classe deriva da due o più sopraclassi Mezzi di trasporto Animali Cavallo

Esempi usando il linguaggio Java Class veicoli { // attributi // metodi … } class automobile extends veicoli Eredita attributi e metodi della classe veicoli … e ne può aggiungere di nuovi

Lezione 3 Polimorfismo Il polimorfismo indica la possibilità per i metodi di assumere forme, cioè implementazioni, diverse all’interno della gerarchia delle classi Tutti i veicoli a motore possiedono il metodo accelera - Le sottoclassi automobile e moto ereditano il metodo accelera, ma è probabile che lo ridefiniscano per adeguarlo alle particolari esigenze - Il metodo accelera dell’automobile si manifesterà con la pressione del pedale, mentre nella moto sarà implementato con il movimento della manopola Queste due diverse implementazioni evidenziano l’aspetto polimorfico del metodo accelera

Lezione 3 Polimorfismo Durante l’esecuzione del programma, un’istanza della classe veicoli a motore può rappresentare sia una automobile che una moto Non è possibile sapere, prima dell’esecuzione, se si tratta di una automobile o di una moto Il collegamento dinamico garantisce che, richiamando il metodo, tra tutte le implementazioni venga scelta quella corretta che corrisponde all’oggetto interessato