Object-Oriented Programming
|
|
|
- Gabriela Colucci
- 8 anni fa
- Просмотров:
Транскрипт
1 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
2 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à?
3 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
4 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
5 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
6 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
7 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
8 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.
9 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
10 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.
11 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
12 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
Ingegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
Gerarchia di classi Java 1
Costruttori della sottoclasse Gerarchia di classi Java Parte 2 Corso di laurea in Comunicazione digitale I costruttori non vengono ereditati, non essendo membri di classe Vengono definiti esplicitamente
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
La programmazione ad oggetti: chiamate di metodi. Overloading. This
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.
Programmazione ad Oggetti
Programmazione ad Oggetti Analisi e Progettazione OO Origini Le metodologie ad oggetti nascono negli anni 70 ma si affermano solo negli anni 80 grazie alla nascita dei linguaggi di programmazione ad oggetti
Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione,
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
OOP in Python L O R E N Z O D I S I L V E S T R O
L O R E N Z O D I S I L V E S T R O w w w. d m i. u n i c t. i t / ~ d i s i l v e s t r o d i s i l v e s t r o @ d m i. u n i c t. i t Imperativo Paradigmi di programmazione 2 i programmi sono sequenze
Introduzione alla programmazione Object Oriented. Luca Lista
Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
Introduzione alla OOP Object Oriented Programming
Introduzione alla OOP Object Oriented Programming Programmazione Orientata agli Oggetti I livelli dei linguaggi livelli di tensione porte logiche codice binario linguaggio assembler linguaggi procedurali
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
La programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
La classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.
Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo
Ereditarietà & Polimorfismo Ereditarietà Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un altra (classe base) La classe base modella un concetto generico La classe
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
Principi della programmazione orientata agli oggetti. I principi della programmazione ad oggetti
Principi della programmazione orientata agli oggetti I principi della programmazione ad oggetti Roadmap Introduzione alle tecniche di programmazione Principi base del paradigma OO Astrazione Classi ed
Principi di OOP con JAVA
Principi di OOP con JAVA lezioni 08 - gen - 2004 15 - gen - 2004 Tommaso Di Noia [email protected] OOP (elementi) Programmazione Procedurale e Orientata agli Oggetti. FUNZIONI OGGETTI STRUTTURE DATI METODI
Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
Linguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
File binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi [email protected] Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
20. LA PROGRAMMAZIONE AD OGGETTI
Premessa 20. LA PROGRAMMAZIONE AD OGGETTI All inizio del nostro studio della programmazione il nostro obiettivo primario è stato quello di iniziare a programmare (ossia a codificare). Per fare ciò abbiamo
Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina
Programmazione I di programmazione Traduzione Fabrizio Messina [email protected] www.dmi.unict.it/~messina di programmazione I linguaggi di programmazione sono classificati in tre livelli: linguaggi
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:
SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Programmazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,
Spazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - [email protected] // The function name says it all int stack_overflow (){
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Fondamenti di Informatica T-1. Costruttori Ereditarietà
Costruttori Ereditarietà 2 Costruttori Si occupano della creazione e dell'allocazione in memoria degli oggetti. public class Persona{ //Variabili di istanza private String nome; private String cognome;
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Esercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
