Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
|
|
- Muzio Rosa
- 7 anni fa
- Visualizzazioni
Transcript
1 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013
2 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi
3 Variabili statiche Se una variabile di una classe ha il modificatore static, non esisterà una copia per ogni oggetto creato, ma sarà unica per tutte le istanze della classe. public class MyClass { public static int i = 10; public int j = 10; public void incrementa(){ i++; j++; public class TestMyClass { public static void main(string[] args) { MyClass a = new MyClass(); MyClass b = new MyClass(); a.incrementa(); // a.i == 11 e a.j == 11 b.incrementa(); // b.i == 12 e b.j == 11 // a.i e b.i sono la stessa variabile: MyClass.i
4 Variabili statiche Se un metodo ha il modificatore static può essere utilizzato senza creare un istanza della classe Un metodo statico non può accedere a variabili non statiche. public class MyClass { public static int i = 10; public int j = 10; public static void incrementa(){ i++; j++; // non consentito public class TestMyClass { public static void main(string[] args) { MyClass.incrementa();
5
6 Quando si usano metodi e attributi statici Un metodo che non dipende dallo stato dell oggetto (non accede agli attributi non statici dell oggetto) è un buon candidato a diventare static. In genere nelle librerie di funzioni i metodi sono tutti statici(es: i metodi della classe Math). Gli attributi il cui valore deve essere condiviso da tutti gli oggetti di una classe devono essere dichiarati static. In genere le costanti (final) vengono dichiarate static
7 Esercizio ContoCorrente Creare una classe ContoCorrente che permetta di gestire un conto corrente bancario caratterizzato dai seguenti attributi: nome dell intestatario (String); cognome dell intestatario (String); numero di conto corrente (long); saldo residuo (double). Il costruttore deve avere come parametri il nome, il cognome ed il saldo iniziale. Il numero di conto corrente deve essere calcolato automaticamente in maniera incrementale (si può realizzare usando una variabile statica). Realizzare i metodi: deposita, che permette di depositare denaro sul conto corrente; preleva, che permette di prelevare denaro dal conto corrente; print, che stampa a video le informazioni sul conto corrente (numero, intestatario, saldo residuo)
8 Esercizio ContoCorrente Per testare il corretto funzionamento della classe ContoCorrente, realizzare la classe TestConto ed il relativo metodo main che esegue le seguenti operazioni: Crea due conti correnti intestati a due persone diverse. Effettua un operazione di bonifico dal primo al secondo conto (utilizzano i metodi preleva e deposita). Stampa a video le informazioni dei conti prima e dopo il bonifico.
9 public class ContoCorrente { /* Dati personali intestatario */ private String nome; private String cognome; /* Numero di conto corrente */ private long numeroconto; /* Saldo attuale */ private double saldoattuale; /* Contatore interno per l'assegnazione del * numero di c/c per ogni nuovo conto */ private static long prossimonumeroconto = 1; /* Costruttore */ public ContoCorrente(String n, String c, double saldoiniz) { nome = n; cognome = c; numeroconto = prossimonumeroconto; saldoattuale = saldoiniz; /* Incremento il contatore statico: la prossima * invocazione del costruttore assegnerà * il valore successivo */ prossimonumeroconto++; Soluzione
10 public class ContoCorrente { public void deposita(double ammontare) { saldoattuale += ammontare; public void preleva(double ammontare) { saldoattuale -= ammontare; /* Stampa a video */ public void print() { System.out.println("Il signor " + cognome + " " + nome + " è titolare del c/c n. " + numeroconto + " con saldo pari a " + saldoattuale); Soluzione
11 public class TestConto { public static void main(string[] args) { ContoCorrente cc1; cc1 = new ContoCorrente("Mario", "Rossi", 5000); ContoCorrente cc2; cc2 = new ContoCorrente("Fabio", "Pagani", 15000); cc1.print(); cc2.print(); cc1.preleva(500); cc2.deposita(500); cc1.print(); cc2.print(); Soluzione
12 Incapsulamento ed Ereditarietà L incapsulamento rappresenta una tecnica per rendere robusto il programma mentre l ereditarietà è considerata un valido strumento di sviluppo e semplificazione;
13 Incapsulamento L incapsulamento è uno dei principio fondamentali della programmazione a d oggetti. Il contenuto informativo di una classe deve rimanere nascosto all utente, in modo tale che i metodi siano l unica via per interagire con gli oggetti corrispondenti. L incapsulamento ha due grandi vantaggi: permette al programmatore di disciplinare l accesso agli attributi di una classe, in modo da evitare che ne venga fatto un uso sbagliato; permette all utente (della classe) di concentrarsi esclusivamente sull interfaccia di programmazione, tralasciando ogni aspetto legato all implementazione.
14 Vantaggi dell ereditarietà L ereditarietà facilita il riutilizzo di software estendendone o ridefinendone caratteristiche e comportamenti; è possibile adattare una classe preesistente alle nuove esigenze. Specificare le differenze da una classe simile piuttosto che ridefinire completamente la classe facilita enormemente lo sviluppo di nuovi progetti eliminando ridondanza di codice. L ereditarietà non è un meccanismo di inclusione del codice di una classe base in una derivata. Non c è copia di codice, ogni modifica della struttura di una classe base si ripercuote automaticamente nelle sue classi derivate
15 Ereditarietà: estensione Una classe derivata può differenziarsi dalla classe base in quanto aggiunge nuove caratteristiche senza alterare il comportamento delle funzionalità offerte dalla classe base, Si definisce ereditarietà per estensione la situazione in cui nella classe derivata vengono aggiunti nuovi attributi e/o nuovi metodi
16 Ereditarietà: ridefinizione Una classe derivata potrebbe però fornire le stesse caratteristiche della classe base e differenziarsi invece solo per il comportamento. In questo caso i metodi della classe derivata avranno la stessa firma (nome e lista di tipi dei parametri) ma differente corpo. Si definisce ereditarietà per ridefinizione (overriding) la situazione in cui uno o più metodi della classe base siano ridefiniti nella classe derivata
17 Estensione e ridefinizione È possibile incontrare classi derivate in cui è applicato sia l overloading (overloading) di metodi che la ridefinizione (overriding) di metodi ovviamente su metodi diversi L esempio relativo alle classi Persona e Studente è un esempio di ereditarietà per estensione e ridefinizione
18 Un esempio di overriding
19 Overriding e overloading Attenzione a non confondere il sovraccarico dei metodi (overloading) situazione in cui oltre al corpo del metodo è differente anche la sua firma con la ridefinizione (overriding) situazione in cui la firma del metodo è identica ma è differente il corpo
20 Binding Il meccanismo che determina quale metodo deve essere invocato in base alla classe di appartenenza dell'oggetto si chiama binding ( bind significa legare ). Si dice che si ha Binding statico ( early binding ) quando il metodo da invocare viene determinato in fase di compilazione. Si dice che si ha Binding dinamico ( late binding ) quando il metodo viene determinato durante l'esecuzione (a run time).
21 Binding Overloading Stesso nome per due metodi distinti Static binding (method resolution) Overriding Permette la ridefinizione di metodi nella sottoclasse Dynamic binding
22 Binding Il meccanismo di overriding è concettualmente molto diverso da quello di overloading, e non deve essere confuso con esso. L'overloading consente di definire in una stessa classe più metodi aventi lo stesso nome, ma che differiscano nella firma, cioè nella sequenza dei tipi dei parametri formali. Per l overloading è il compilatore che determina quale dei metodi verrà invocato, in base al numero e al tipo dei parametri attuali. Per l'overriding, invece, che consente di ridefinire un metodo in una sottoclasse: il metodo originale e quello che lo ridefinisce hanno necessariamente la stessa firma, e solo a tempo di esecuzione si determinerà quale dei due deve essere eseguito.
23
24 Gerarchia di classi L ereditarietà può estendersi a più livelli generando quindi una gerarchia di classi. Una classe derivata può, a sua volta, essere base di nuove sottoclassi. Sportivo è sottoclasse di Persona ed è superclasse di Nuotatore, Motociclista e Calciatore. Nella parte alta della gerarchia troviamo le classi generiche, scendendo aumenta il livello di specializzazione.
25 Un esempio class Persona { class Sportivo extends Persona { class Nuotatore extends Sportivo { class Motociclista extends Sportivo { class Calciatore extends Sportivo {
26 Gerarchia di classi: Esercizio Codificare in Java la gerarchia di classi riportata in figura.
27 Esempio class Computer { class PC extends Computer { class Server extends Computer { class Notebook extends PC { class Desktop extends PC {
28 Classi astratte Man mano che si sale nella gerarchia dell ereditarietà, le classi diventano sempre più generiche e spesso più astratte. Ad un certo punto la classe superiore diventa a tal punto generica che la si può pensare come una base (classe astratta) per le altre classi piuttosto che come una classe concretamente utilizzabile.
29 Classi e metodi abstract Classi astratte Sono usate come superclassi astratte per sottoclassi concrete e per dichiarare riferimenti a variabili. Diverse gerarchie di ereditarietà hanno superclassi astratte che occupano i livelli più alti. Va usata la parola chiave abstract Per dichiarare la classe abstract Usata anche per dichiarare i metodi abstract (solo definiti non implementati) Tipicamente le classi abstract contengono uno o più metodi abstract Tutte le sottoclassi concrete DEVONO fare l override dei metodi astratti
30 Esempio abstract class Figura { protected double base; protected double altezza; Figura(double b,double h) { base=b; altezza=h; Figura protected double base protected double altezza + Figura(double b, double h) + setbase(double ba) abstract public void setbase(double ba) { base=ba; public double getbase() { return base; + double getbase() + setaltezza(double al) + double getaltezza() + double area (double a, double h) abstract
31 Esempio public void setaltezza(double al) { altezza=al; public double getaltezza() { return altezza; Figura protected double base protected double altezza + Figura(double b, double h) + setbase(double ba) + double getbase() + setaltezza(double al) + double getaltezza() abstract abstract double area(double a,double h); + double area (double a, double h) abstract
32 Esempio class Rettangolo extends Figura { Rettangolo(double b,double h) { super(b,h); Figura protected double base protected double altezza + Figura(double b, double h) + setbase(double ba) + double getbase() abstract public double area(double b,double h) { double ar=base*altezza; return ar; Rettangolo + setaltezza(double al) + double getaltezza() + double area (double a, double h) abstract Triangolo + Rettangolo(double b, double h) + double area (double a, double h) + Triangolodouble b, double h) + double area (double a, double h)
33 Esempio class Triangolo extends Figura { Triangolo(double b,double h) { super(b,h); Figura protected double base protected double altezza + Figura(double b, double h) + setbase(double ba) + double getbase() abstract + setaltezza(double al) public double area(double b,double h) { + double getaltezza() + double area (double a, double h) double ar=(base*altezza)/2; abstract return ar; Rettangolo Triangolo + Rettangolo(double b, double h) + double area (double a, double h) + Triangolodouble b, double h) + double area (double a, double h)
34 Esempio Metodi e classi astratte sono in corsivo class UsaFigura { public static void main(string[] args) { double arearet,areatri; Figura protected double base protected double altezza + Figura(double b, double h) abstract Metodi e classi astratte sono in corsivo Rettangolo objr=new Rettangolo(6.6,3.0); + setbase(double ba) arearet=objr.area(6.6,3.0); + double getbase() System.out.println("l'area del rettangolo:" +arearet); + setaltezza(double al) + double getaltezza() triangolo objt=new triangolo(10.2,7.5); areatri=objt.area(10.2,7.5); + double area (double a, double h) abstract System.out.println("l'area del triangolo:" +areatri); Rettangolo Triangolo + Rettangolo(double b, double h) + Triangolodouble b, double h) + double area (double a, double h) + double area (double a, double h)
35 class UsaTriangolo { public static void main(string[] args) {int ar,al,bas; Triangolo objs=new Triangolo(3,6); ar=objs.area(); System.out.println("valore dell'area:" +ar); Esempio Figura protected double base abstract objs.setaltezza(10); protected double altezza objs.setbase(20); ar=objs.area(); System.out.println("la nuova area:" +ar); + Figura(double b, double h) + setbase(double ba) + double getbase() al=objs.getaltezza(); bas=objs.getbase(); System.out.println("la nuova altezza:" +al); System.out.println("la nuova base:" +bas); + setaltezza(double al) + double getaltezza() + double area (double a, double h) abstract Rettangolo Triangolo + Rettangolo(double b, double h) + double area (double a, double h) + Triangolodouble b, double h) + double area (double a, double h)
36 Ereditarietà singola e multipla In genere nella progettazione OO sono possibili due tipi di ereditarietà: ereditarietà singola ereditarietà multipla
37 Ereditarietà multipla L ereditarietà multipla si ha quando una sottoclasse deriva da più superclassi
38 Ereditarietà singola e multipla In genere nella progettazione OO sono possibili due tipi di ereditarietà: ereditarietà singola ereditarietà multipla L ereditarietà singola impone ad una sottoclasse di derivare da una sola superclasse. L esempio presentato precedentemente è un caso di ereditarietà singola: ogni sottoclasse ha una sola classe base, mentre è possibile da una superclasse avere più classi derivate. Vari linguaggi ad oggetti pongono il vincolo dell ereditarietà singola per problemi di chiarezza e semplicità d implementazione, Java è uno di questi. Quindi non è possibile una definizione di classe del tipo: class A extends B,C
39 Java e l ereditarietà multipla Java non prevede l ereditarietà multipla fra classi L ereditarietà multipla si ha quando una sottoclasse deriva da più superclassi La classe Quadrato ha due superclassi: PoligonoRegolare e Parallelogramma Si può ovviare a questa limitazione con l introduzione delle Interfacce
40 Esempio di interfaccia interface Figure { /* gli oggetti delle classi che realizzano questa interfaccia sono caratterizzati da RadiceFigure un tipo un area protected double dim1 */ protected double dim2 String tipo(); double area(); + RadiceFigurae(double b, double h) + String tipo() + double area () Figure class RadiceFigure { protected double dim1; protected double dim2; RadiceFigure(double a, double b) { dim1 = a; dim2 = b; Rettangolo + Rettangolo(double b, double h) + String tipo + double area (double a, double h)
41 Esempio di uso di interfaccia class Rectangle extends RadiceFigure implements Figure{ Rectangle(double a, double b) { super(a, b); protected double dim1 RadiceFigure Figure // definisce area() di Figure public double area() { return dim1 * dim2; protected double dim2 + RadiceFigurae(double b, double h) + String tipo() + double area () // definisce tipo() di Figure public String tipo() { return "Rectangle "; Rettangolo + Rettangolo(double b, double h) + String tipo + double area (double a, double h)
42 Esempio di uso di più interfacce class Rectangle extends RadiceFigure implements A,B,C{ Rectangle(double a, double b) { super(a, b); // definisce area() di Figure public double area() { return dim1 * dim2; // definisce tipo() di Figure public String tipo() { return "Rectangle ";
Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012
Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente
DettagliLa 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
DettagliEreditarietà 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
Dettagli18 - 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/
DettagliEreditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
DettagliEsempio Principio di sostituibilità
Ereditarietà E uno dei concetti chiave delle tecniche orientate agli oggetti Esprime le somiglianze tra le classi, semplificando la definizione di una classe e riducendola a una o più classi simili Rappresenta
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliRiassunto. La programmazione OO. Oggi. Esempio
Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 17 29 novembre
DettagliProgrammazione Java: Polimorfismo
Programmazione Java: Polimorfismo romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Polimorfismo» Upcasting» Selezione dei metodi» Comportamento dei metodi polimorfi dentro i costruttori»
DettagliFondamenti 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
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliProgrammazione 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,
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
DettagliIntroduzione. Java. Esempio. Esempio
Java polimorfismo G. Prencipe prencipe@di.unipi.it Introduzione È un altro degli ingredienti fondamentali della OOP Permette di organizzare il codice e la leggibilità e di ottenere programmi estensibili
DettagliOggetti e classi. Cos è un oggetto
Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,
DettagliIntroduzione alla Programmazione in Java attraverso un esempio commentato
Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria
DettagliClassi 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
DettagliLezione 13 Classi interne
Lezione 13 Classi interne Questa lezione chiude la parte del corso più squisitamente dedicata alla programmazione orientata agli oggetti con Java. Sarà esaminato un nuovo tipo di classi, finora taciuto,
DettagliProgrammazione. 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
DettagliIL CONCETTO DI CLASSE
IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
DettagliProprietà 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
DettagliClassi 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
DettagliFondamenti 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;
DettagliPrincipi di Progettazione del Software. Principi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2016-2017 Fondamenti di Java Ing. Principi di Progettazione del Software https://twitter.com/rvergallo 2 1 Obiettivi della lezione Introduzione alla programmazione
DettagliClassi, Ereditarietà e Polimorfismo. Lezione 7
Classi, Ereditarietà e Polimorfismo Lezione 7 Scopo della Lezione Presentare il concetto di classe ed oggetto come istanza della classe; Affrontare il concetto di ereditarietà tra classi e le sue ricadute
DettagliIn questa lezione. Polimorfismo
In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo
DettagliEreditarietà. 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
DettagliProgrammazione. 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
DettagliFondamenti di Informatica T-1. Classi e metodi astratti
Classi e metodi astratti 2 Classi astratte L'ereditarietà è utile per rappresentare tassonomie e gerarchie di entità reali. Non sempre però tutti i livelli della gerarchia rappresentano entità concrete.
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliClassi 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
DettagliIngegneria 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
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliCorso di Fondamenti di Informatica I
Corso di Fondamenti di Informatica I Generics in Java Fabio Patrizi, Silvia Bonomi Dipartimento di Ingegneria Informatica, Automatica e Gestionale Facoltà di Ingegneria dell Informazione, Informatica e
DettagliEredità e Polimorfismo in Java
Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello
DettagliProgrammazione 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.
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
DettagliVariabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
DettagliLezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
DettagliModificatori di visibilità
Modificatori di visibilità Attenzione nell overriding dei metodi: la restrizione di visibilità può essere allentata, ma mai resa più restrittiva. In particolare non si può ridefinire come privato un metodo
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliCLASSI ASTRATTE - ESERCIZIO
CLASSI ASTRATTE - ESERCIZIO Definire una tassonomia di forme geometriche non esiste la generica forma geometrica! esistono triangoli, quadrilateri, pentagoni,... Forme può ben essere una classe astratta
DettagliGerarchia 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
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando
Dettaglipublic BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }
Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double
DettagliIntroduzione 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:
Dettaglipublic double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40
DettagliProgrammazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato
DettagliProgrammazione è gestione di eventi
FUNZIONI Ed Eventi Programmazione è gestione di eventi Evento 1 (tasto premuto) Evento 2 (mouse) Evento 3 (cambio frame) Oggetto Evento 4 (fine di un brano audio) Azioni per evento 1 1. Azione 1 2. Azione
DettagliDiagrammi di classe e sistemi orientati agli oggetti
Appendice D Diagrammi di classe e sistemi orientati agli oggetti ANDREA GINI Un effetto della strategia di incapsulamento è quello di spingere il programmatore a esprimere il comportamento di un sistema
DettagliClassi. 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 -
DettagliSubtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo
Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile
DettagliI costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard
I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
DettagliISTITUTO 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
DettagliProgrammazione orientata agli oggetti
Programmazione orientata agli oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che prevede di raggruppare in un unica entità (la classe)
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliProgrammazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
DettagliDefinizione di metodi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Classi e metodi astratti Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 15 Classa astratta: definizione
DettagliEsercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
DettagliEsempio: Costruttori ed ereditarietà
Esempio: 1 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il costruttore di default (quello senza parametri) Se in un costruttore
DettagliIl paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
DettagliLaboratorio di Informatica 4 Novembre 2005
Laboratorio di Informatica 4 Novembre 2005 Marco Iarusso Programmazione Java Ringraziamenti Parte della presente dispensa materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliJava: loading dinamico e reflection
Java: loading dinamico e reflection Scopo del corso integrativo: Presentare le caratteristiche avanzate di Java che lo rendono un linguaggio molto flessibile pur senza rinunciare ai vantaggi di un typechecking
DettagliJava Le stringhe. Stringhe
Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String
DettagliPubblico e privato. Per capire il concetto di pubblico e privato è possibile pensare a diversi oggetti del mondo reale. Ad esempio: bancomat.
Pubblico e privato Per capire il concetto di pubblico e privato è possibile pensare a diversi oggetti del mondo reale. Ad esempio: bancomat. La tessera bancomat esegue operazioni sul conto corrente, ma
DettagliDefinizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
DettagliEccezioni. Comportamento di default (esempio) Propagazione delle eccezioni
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di
DettagliFondamenti di Informatica I
Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:
DettagliJava Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
DettagliModulo 2: Strutture fondamentali della programmazione Java
Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti
DettagliInformatica I. Ingegneria Medica. Prof. Diego Salamon
Informatica I Ingegneria Medica Prof. Diego Salamon Java: Classi e Oggetti Prof. Diego Salamon Metafore Classi e Oggetti sono un astrazione della realtà. I linguaggi orientati agli oggetti contengono livelli
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliLa 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.
DettagliOOP - Object Oriented Programming
OOP - Object Oriented Programming Python linguaggio versatile, supporta, sia programmazione procedurale/funzionale sia, programmazione a oggetti (in maniera non esclusiva) Programmazione orientata agli
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliProgrammazione ad oggetti Prova scritta 15 Gennaio 2013
Programmazione ad oggetti Prova scritta 15 Gennaio 2013 Nome: Matricola: Istruzioni Scrivete il vostro nome sul primo foglio. Scrivete le soluzioni nello spazio riservato a ciascun esercizio. Studenti
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliJava Native Interface Appunti
Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per
DettagliEsercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:
Esercitazione n 3 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Linguaggio Java: Ereditarietà delle classi Utilizzo di costruttori e metodi di superclasse Classi astratte Visibilità:
DettagliIntroduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliProva d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
DettagliIl linguaggio Java: aggiunte in Java 1.5
.. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:
DettagliIntroduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime
Java riconoscere i tipi G. Prencipe prencipe@di.unipi.it Introduzione Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime In particolare determina il tipo
DettagliOOP: Object Oriented Programming
OOP: Object Oriented Programming Riferimenti per questa parte: 1. Capitoli 7 e 8 del testo di riferimento 2. https://docs.python.org/3.6/tutorial/classes.html OOP: Idea Principale L idea principale della
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliProf. Pagani corrado JAVA
Prof. Pagani corrado JAVA NASCITA DI JAVA Java è stato creato, a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta, da un gruppo di esperti sviluppatori capitanati da
Dettaglioggetti: Cenni generali Programmazione ad Ingegneria Informatica e dell'informazione Michelangelo Diligenti
Programmazione ad oggetti: Cenni generali Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@dii.unisi.it Argomenti Programmazione ad oggetti Motivazioni Classi Metodi e membri
DettagliInterfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato
Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione
Dettagli