Object-Oriented Programming

Похожие документы
Ingegneria del Software

Gerarchia di classi Java 1

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Programmazione ad Oggetti

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Ereditarietà e Polimorfismo

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

OOP in Python L O R E N Z O D I S I L V E S T R O

Introduzione alla programmazione Object Oriented. Luca Lista

Programmazione orientata agli oggetti. Ivan Lanese

Introduzione alla OOP Object Oriented Programming

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

18 - Classi parzialmente definite: Classi Astratte e Interfacce

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Proprietà delle Classi e degli Oggetti in Java

Programmazione con Java

La programmazione ad oggetti (OOP)

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

La classe java.lang.object

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Laboratorio di programmazione

Programmazione ad oggetti

Gestione dinamica della memoria

Principi della programmazione orientata agli oggetti. I principi della programmazione ad oggetti

Principi di OOP con JAVA

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Linguaggi di programmazione e astrazione

File binari e file di testo

Programmazione a oggetti

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

20. LA PROGRAMMAZIONE AD OGGETTI

Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Spazio di indirizzamento virtuale

Primi passi col linguaggio C

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Programmazione Orientata agli Oggetti in Linguaggio Java

Esercitazione n 2. Obiettivi

Транскрипт:

Object-Oriented Programming Una metodologia di programmazione che consente di modellare la realtà in modo più naturale e vicino all uomo Concetti fondamentali Oggetto Incapsulazione Messaggio Classe Ereditarietà Polimorfismo

Oggetto A software bundle of variables and related methods Stato mantenuto in variabili Comportamento implementato con metodi Esempio bicicletta variabili di stato velocità (12 Km/h) cadenza di pedalata (90 giri/min) marcia (cambio) (5 a ) stato corrente metodi frenare cambiare la cadenza di pedalata cambiare marcia... cambiare velocità?

Incapsulazione di variabili e metodi in una stessa custodia protettiva Benefici Metodi Variabili Information hiding variabili e/o metodi privati idealmente variabili private e metodi pubblici, ma in pratica... per nascondere dettagli implementativi per cambiare marcia in bici non bisogna conoscere il meccanismo di cambio... basta girare la leva Modularità il codice sorgente di un oggetto può essere scritto e mantenuto indipendentemente da altri oggetti

Messaggi Un oggetto preso singolarmente è incapace di compiere alcuna attività... per ottenere funzionalità di più alto livello e comportamenti più complessi è necessaria l interazione tra oggetti la bicicletta è utile solo quando un altro oggetto (la persona) interagisce con essa (iniziando a pedalare) Oggetti interagiscono e comunicano scambiandosi messaggi Messaggio L invocazione di un metodo di un oggetto da parte di un altro oggetto con relativo scambio di parametri cambia marcia (marcia più bassa) la bicicletta di Pippo Pippo

Messaggi Componenti di un messaggio L oggetto a cui inviare il messaggio (bicicletta) Il nome del metodo da eseguire (cambia marcia) I parametri di cui il metodo ha bisogno (marcia più bassa) Benefici dei messaggi Il comportamento di un oggetto è espresso attraverso i suoi metodi, per cui il meccanismo del passaggio dei messaggi supporta tutte le possibili interazioni tra oggetti sebbene sia sconsigliato, è comunque possibile accedere direttamente alle variabili pubbliche di un oggetto

Classi e Istanze Nel mondo reale ci sono oggetti dello stesso tipo... la bicicletta di Pippo è solo una delle tante biciclette nel mondo: essa è una istanza della classe di oggetti noti come biciclette. Un oggetto è una istanza di una classe di oggetti che condividono lo stesso stato e comportamento NB: lo stato di un istanza è indipendente dallo stato di un altra istanza Classe: Un prototipo che definisce le variabili e i metodi comuni a tutti gli oggetti di un certo tipo Instanziazione: Creazione di una istanza di una classe istanze della stessa classe condividono la stessa implementazione dei metodi

Ereditarietà Classi (sottoclassi o discendenti) possono essere definite a partire da classi preesistenti (superclassi o antenate) Gerarchia di Classi... può raggiungere qualsiasi profondità Bikes Ogni sottoclasse eredita stato (nella forma di dichiarazione di variabili) e metodi dalla superclasse può aggiungere variabili e metodi a quelli forniti dalla superclasse e... sovrascrivere (override) metodi ereditati fornendone implementazioni specializzate Mountain Bikes Racing Bikes Tandem Bikes

Riuso Benefici dell Ereditarietà Le sottoclassi forniscono comportamenti specializzati sulla base di elementi comuni forniti dalle superclassi. Grazie all ereditarietà i programmatori possono riusare il codice delle superclassi più volte. Classi astratte Definiscono comportamenti generici. La superclasse astratta definisce e può implementare parzialmente il comportamento, ma molto della classe è lasciato indefinito e non implementato. Dettagli specifici sono completati nelle sottoclassi specializzate.

Classi astratte: un esempio... visualizzare ed animare insetti sullo schermo... Insetti alati Insetti Insetti non alati Mosche Farfalle Formiche Stato: la posizione dell insetto una coppia (X, Y) di coordinate Metodi: Inizializza (X0, Y0) Visualizza Cancella Sposta (Xn, Yn) Insetti, Insetti alati e Insetti non alati sono classi astratte (non hanno una immagine definita): l implementazione dei metodi Visualizza e Cancella di tali classi può quindi restare non specificata

Polimorfismo... stesso nome per diverse forme Ad un metodo viene assegnato un determinato nome condiviso dagli oggetti di una gerarchia, dove ogni oggetto implementa il metodo nel modo più appropriato Metodi statici Tutti i riferimenti a tali metodi sono risolti a tempo di compilazione. Metodi Virtuali I riferimenti sono risolti a tempo di esecuzione.

Metodi Statici vs Metodi Virtuali Riconsideriamo la gerarchia di insetti: l implementazione del metodo Sposta è la stessa per ogni classe, ma dipende dai metodi Cancella e Visualizza... metodi statici Sposta deve essere reimplementato in ciascuna sottoclasse altrimenti non verrebbero richiamati i metodi Cancella e Visualizza appropriati metodi virtuali Sposta (Xn, Yn) Cancella; (X,Y) := (Xn, Yn); Visualizza; può essere ereditato il metodo Sposta della classe Insetti Necessità di un costruttore per inizializzare la tabella dei metodi virtuali

Oggetti Dinamici Oggetti possono essere allocati nello heap e manipolati con puntatori come qualsiasi variabile dinamica Distruttore Se un oggetto contiene a sua volta puntatori ad altre variabili e/o oggetti dinamici, può essere usato un distruttore per deallocare completamente tutta l area di memoria non più necessaria. Distruttori possono essere ereditati e dichiarati virtuali