Object-Oriented Programming

Documenti analoghi
Ingegneria del Software

Programmazione è gestione di eventi

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.

Object-Oriented Technology. Giuliano Armano 1

Oggetti e classi. Cos è un oggetto

Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via

Ereditarietà e Polimorfismo

Corso di Programmazione a oggetti

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

Oggetto software. stati o proprietà (variabili) comportamenti o metodi (funzioni)

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Linguaggi. - lezione 02 - Introduzione alla programmazione Object-Oriented. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A.

Progettazione orientata agli oggetti

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

Verifica e Validazione del Software

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Introduzione alla OOP Object Oriented Programming

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Progettazione orientata agli oggetti e UML

Richiami su oggetti e OOP

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

OO programming. Dott. Ing. M. Banci, PhD

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

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

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

Corso di Informatica

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Corso di Fondamenti di Informatica II

Dispensa di Informatica III.1

Java: la programmazione ad oggetti

Proprietà delle Classi e degli Oggetti in Java

Programmazione con Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

La programmazione ad oggetti (OOP)

Sul pattern Strategy

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

RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

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

Paradigma a oggetti. Oggetti nel mondo reale. Oggetto Software. Oggetto Software. Classe Ogni oggetto appartiene ad una determinata

Programmazione orientata agli oggetti

Laboratorio di programmazione

Programmazione orientata agli oggetti Ereditarietà

Programmazione ad oggetti

Gestione dinamica della memoria

Programmi e Oggetti Software

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

Programmi e Oggetti Software

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Principi di OOP con JAVA

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Linguaggi di programmazione e astrazione

Ereditarietà e polimorfismo

Lettura e scrittura di file di dati input/output

File binari e file di testo

Programmazione a oggetti

Fondamenti di Informatica T-1

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Principi di Progettazione del Software. Principi di Progettazione del Software a.a

Java: Definire Classi e Creare Oggetti

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

20. LA PROGRAMMAZIONE AD OGGETTI

1 Il Paradigma ad Oggetti

Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina

OOP - Object Oriented Programming

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

L ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà

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

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

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

Allocazione dinamica

Esercitazione di Basi di Dati

Programmazione a Oggetti. Ereditarieta

Programmazione orientata agli oggetti Classi astratte e interfacce

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

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

Esonero del corso di Programmazione a Oggetti

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Spazio di indirizzamento virtuale

CloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this

Esame di Metodi Computazionali della Fisica I 17 marzo 2010

Primi passi col linguaggio C

Fondamenti di Informatica T-1. Costruttori Ereditarietà

La programmazione a oggetti e il C++ (introduzione)

Programmazione ad oggetti

Programmazione Orientata agli Oggetti in Linguaggio Java

Esercitazione n 2. Obiettivi

Transcript:

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