Esercitazioni Ingegneria del So2ware 2 - Programmazione Java Ereditarietà, Visibilità, Interfacce

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazioni Ingegneria del So2ware 2 - Programmazione Java Ereditarietà, Visibilità, Interfacce"

Transcript

1 Esercitazioni Ingegneria del So2ware 2 - Programmazione Java Ereditarietà, Visibilità, Interfacce Giordano Tamburrelli tamburrelli@elet.polimi.it hfp://giordano.webfacional.com 1

2 Java: Ereditarietà Richiamo di teoria: Una classe A dichiarata sofoclasse di un'altra classe B: eredita (ha implicitamente) tufe le variabili di istanza/afribui e tur i metodi di B; può avere variabili o metodi aggiunivi; può ridefinire i metodi ereditai da B afraverso l'overriding, in modo tale che essi eseguano la stessa operazione concefuale in un modo specializzato. In Java una classe A si dichiara sofoclasse di B scrivendo: class A extends B 2

3 Java: Ereditarietà Esercizio: Modellizzare in Java le MountainBike. Le MountainBike sono delle normali biciclefe tufavia nel loro stato interno hanno un valore intero che indica il livello dell ammorizzatore. Soluzione 1: Quella che non vorreste mai implementare davani al professore. Soluzione 2: Quella correfa. 3

4 Java: Ereditarietà Esercizio: Modellizzare in Java le MountainBike. public class MountainBike { int cadence=0; int speed=0; int gear=1; int damperlv=1; void changedamperlevel(int newvalue){ damperlv=newvalue; Ho copiato e incollato il 90% del codice della biciclefa. E se la definizione di biciclefa dovesse cambiare? Dovrei cambiare MountainBike void changecadence(int newvalue) { void changegear(int newvalue) { void speedup(int increment) { void applybrakes(int decrement) { void printstates() { 4

5 Java: Ereditarietà Esercizio: Modellizzare in Java le MountainBike. public class MountainBike extends Bicycle{ int damperlv = 1; void changedamperlevel(int newvalue){ damperlv=newvalue; La keywork extends definisce che la MountainBike è una biciclefa. Ha pertanto gli stessi campi interni e gli stessi metodi. In aggiunta a una normale biciclefa ha un livello di ammorizzazione e un metodo che mi permefe di cambiare tale livello. 5

6 Java: Ereditarietà Esercizio: Cosa stampa? class MountainBikeDemo { public static void main(string[] args) { Bicycle bike1 = new Bicycle(); Bicycle bike2 = new MountainBike(); /* * Testiamo */ bike1.changecadence(50); bike1.speedup(10); bike1.changegear(2); bike1.printstates(); bike2.changecadence(40); bike2.speedup(10); bike2.changegear(3); bike2.changedamperlevel(2); bike2.printstates(); Errore: L oggefo bike2 è stato dichiarato come Bicycle. Pertanto non possiede il metodo changedamperlevel. A run2me gli viene assegnata una MountainBike. Soluzione 1: DowncasIng ((MountainBike) bike2).changedamperlevel(); Soluzione 2: Dichiarare come MountainBike se sappiamo che la useremo cosi. 6

7 Java: Ereditarietà Esercizio: Cosa stampa? class MountainBikeDemo { public static void main(string[] args) { Bicycle bike1 = new Bicycle(); MountainBike bike2 = new Bicycle(); /* * Testiamo */ bike1.changecadence(50); bike1.speedup(10); bike1.changegear(2); bike1.printstates(); bike2.changecadence(40); bike2.speedup(10); bike2.changegear(3); bike2.changedamperlevel(2); bike2.printstates(); Errore: L oggefo bike2 è dichiarato come MountainBike. Pertanto deve essere garanito che offrirà tur i servizi di una MountainBike. Se gli assegnate una istanza di biciclefa semplice non potrà offrire il servizio di changedamperlevel(); Soluzione: MountainBike bike2=new MountainBike(); 7

8 Java: Ereditarietà Esercizio: Cosa stampa? class MountainBikeDemo { public static void main(string[] args) { Stampa: Bicycle bike1 = new Bicycle(); MountainBike bike2 = new MountainBike(); /* * Testiamo */ bike1.changecadence(50); bike1.speedup(10); bike1.changegear(2); bike1.printstates(); bike2.changecadence(40); bike2.speedup(10); bike2.changegear(3); bike2.changedamperlevel(2); bike2.printstates(); La stampa della MountainBike è idenica alla stampa della Bicycle. CorreFo, in quanto non abbiamo toccato il metodo printstates(). Ci interesserebbe però che quando richiamiamo printstates() su una MountainBike ci venisse stampata anche l informazione sul livello dell ammorizzatore. 8

9 Java: Overriding Richiamo di teoria: L overriding permefe a una determinata sofoclasse di ridefinire una determinata implementazione di un metodo che è già presente in una delle sue superclassi. L implementazione nella sofoclasse overrides (sosituisce) l implementazione della superclasse. Questo significa che quando andremo a invocare un metodo su un determinato oggefo, il metodo che verrà effervamente eseguito dipende dall oggefo sul quale lo siamo invocando. In Java la sofoclasse deve definire un metodo con lo stesso nome, gli stessi parametri (nome e Ipo), e lo stesso Ipo di ritorno (o sofoipo). 9

10 Java: Overriding Esercizio: Ridefinire il metodo printstates di MountainBike. public class MountainBike extends Bicycle{ int damperlv = 1; void changedamperlevel(int newvalue){ damperlv=newvalue; Poiché printstates() ha la stessa testata di quella che troviamo nella classe padre questa definizione sosituisce quella di Bicycle. void printstates() { System.out.println("cadence:"+cadence + speed:"+speed +" gear:"+gear +"damperlevel: +damperlv); 10

11 Java: Overriding Esercizio: Ridefinire il metodo printstates di MountainBike (migliorato) public class MountainBike extends Bicycle{ int damperlv = 1; void changedamperlevel(int newvalue){ damperlv=newvalue; Se un determinato metodo fa overriding allora è possibile richiamare il metodo che state ridefinendo mediante la keyword super. void printstates(){ super.printstates(); System.out.println("and damperlevel: +damperlv); Il vantaggio è di poter quindi estendere il metodo che state ridefinendo. 11

12 Java: super vs this Esercizio: Date le segueni definizioni di classe class Persona{ String nome; String cognome; Persona(){ nome="sconosciuto"; cognome="sconosciuto"; Persona(String nome, String cognome){ this.nome=nome; this.cognome=cognome; class Studente extends Persona{ int matricola; Studente(int matricola){ //super() this.matricola=matricola; Studente(String nome, String cognome, int matricola){ super(nome, cognome); this(matricola); void mipresento(){ System.out.println( "Mi chiamo " + nome + " " + cognome); void mipresentostudente(){ super.mipresento(); this.mipresento(); void mipresento(){ System.out.println( "Sono uno studente con matricola " + matricola + ". "); 12

13 Java: super vs this Esercizio: cosa stampa? public class SuperAndThis { public static void main(string[] args){ Persona p=new Persona("Alfredo", "Motta"); p.mipresento(); Studente s=new Studente("Alfredo", "Motta", 123); s.mipresento(); Studente t=new Studente(123); t.mipresento(); Stampa: Mi chiamo Alfredo MoFa Mi chiamo Alfredo MoFa Sono uno studente con matricola 123. Mi chiamo Sconosciuto Sconosciuto Sono uno studente con matricola

14 Java: Overriding vs Overloading class Super{... class B extends A{ class Sub extends Super{... class A{ public Super f1(int a){... protected void f2(super a){... public Object f1(int a){... //errore: Object è ancestor di Super //Il tipo di ritorno deve essere un sottotipo di quello usato dal padre. Perché? public Super f1(long a){... //overloading: Cambia il tipo dei parametri public Super f1(int a, int b){... //overloading: Cambia il numero dei parametri public Sub f1(int a){... //overriding: Valido perchè Sub è figlia di Super private Sub f1(int a){... //errore: Non posso diminuire la visibilità quando faccio overriding //posso solo aumentarla protected void f2(sub a){... //overloading: anche se Sub è figlio di Super non stiamo ridefinendo f2 public void f2(super a){... //overriding: la visibilità passa da protected a public. Nessun problema. 14

15 Java: Overriding Esercizio: Creare una classe PrivateOverride con un metodo privato f(). Successivamente dichiarare la classe Derived sofoclasse di PrivateOverride avente metodo pubblico f(). Discutere il problema dell overriding del metodo privato f() di PrivateOverride da parte del metodo pubblico f() di Derived. 15

16 Java: Overriding public class PrivateOverride { private void f() { print("private f()"); public static void main(string[] args) { PrivateOverride po = new Derived(); po.f(); class Derived extends PrivateOverride { I metodi privai sono automaicamente di Ipo final pertanto non sarà possibile in nessun modo fare overriding di tali metodi. In questo esempio il programma stampa public void f() { print("public f()"); private f() Dichiarando la variabile po come Derived avremmo invece in output private f() 16

17 Java: Overriding Esercizio: Cosa stampa il seguente programma class Super { public int field = 0; public int getfield() { return field; Stampa sup.field = 0, sup.getfield() = 1 sub.field = 1, sub.getfield() = 1, sub.getsuperfield() = 0 class Sub extends Super { public int field = 1; public int getfield() { return field; public int getsuperfield() { return super.field; class FieldAccess { public static void main(string[] args) { Super sup = new Sub(); // Upcast System.out.println("sup.field = " + sup.field + ", sup.getfield() = " + sup.getfield()); Sub sub = new Sub(); System.out.println("sub.field = " + sub.field + ", sub.getfield() = " + sub.getfield() + ", sub.getsuperfield() = " + sub.getsuperfield()) ; 17

18 Java: Polimorfismo Richiamo di teoria: il polimorfismo è una proprietà del codice in grado di comportarsi diversamente in diversi contesi di esecuzione. Nella programmazione orientata agli ogger il polimorfismo è legato alle relazioni di eredità tra classi. L overriding appena visto rende possibile che gli ogger apparteneni a delle sofoclassi di una stessa classe rispondano diversamente alle stesse istruzioni. Il duck typing (che non esiste in Java ma esiste in linguaggi come Ruby e Python è un esempio estremo di polimorfismo. 18

19 Java: Polimorfismo Esercizio: Le Figure si dividono in Cerchi, QuadraI e Triangoli. Ogni figura mefe a disposizione i metodi draw() e erase() per rispervamente stampare e cancellare la figura. IpoIzzando che draw() e erase() stampino semplicemente delle stringhe che riportano l operazione che si sta eseguendo, modellizzare la gerarchia di classi che discende da Figura. 19

20 Java: Polimorfismo public class Shape { public void draw() { public void eraseo { Molto semplice, ci serve per svolgere i prossimi 2 esercizi. public class Circle extends Shape { public void draw() { System.out.println("Circle.draw()"); public void erase() {System.out.println("Circle.erase() ") ; public class Square extends Shape { public void draw() {System.out.println("Square.draw()"); public void erase() {System.out.println("Square.erase() ") ; public class Triangle extends Shape { public void draw() {System.out.println("Triangle.draw()"); public void erase() {System.out.println("Triangle.erase() ") ; 20

21 Java: Polimorfismo Esercizio: Creare una classe RandomShapeGenerator che mediante un metodo next() ritorni in modo random un istanza di Circle, Square o Triangolo. public class RandomShapeGenerator { private Random rand = new Random(47); public Shape next() { switch(rand.nextlnt (3)) { default: case 0: return new Circle(); case 1: return new Square(); case 2: return new Triangle(); UIlizziamo la classe Random offerta da Java, inizializzata con un opportuno seed. Andare a guardare la Java documentaion per ulteriori defagli. 21

22 Java: Polimorfismo Esercizio: UIlizzando la classe RandomShapeGenerator creare un metodo main che mi permefa di disegnare delle figure generate casualmente. public class Shapes { private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(string[] args) { Shape[] s = new Shape[9]; // Fill up the array with shapes: for(int i = 0 ; i < s.length; i++) s[i] = gen.next() ; // Make polymorphic method calls: for(shape shp : s) shp.draw(); 22

23 Java: Polimorfismo Esercizio: UIlizzando la classe RandomShapeGenerator creare un metodo main che mi permefa di disegnare delle figure generate casualmente. public class Shapes { private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(string[] args) { Shape[] s = new Shape[9]; // Fill up the array with shapes: for(int i = 0 ; i < s.length; i++) s[i] = gen.next() ; // Make polymorphic method calls: for(shape shp : s) shp.draw(); StaIcamente a livello di codice io ho deciso di disegnare delle figure, tufavia a run- Ime il metodo draw() cambia a seconda del Ipo dinamico che siamo considerando. L output di questo programma è impredicibile 23

24 Java: Polimorfismo Esercizio: Cosa stampa? class A{ void f1(){ System.out.println("f1InA()"); void f1(int a){ System.out.println("f1InA(int a)"); void f2(){ System.out.println("f2inA()"); class B extends A{ void f1(int b){ System.out.println("f1InB(int b)"); class D extends B{ void f1(){ System.out.println("f1InD()"); class C extends A{ void f1(char c){ System.out.println("f1InC(char c)"); public class Polimorphism { public static void main(string[] args){ A St_A Dy_D=new D(); B St_B Dy_C=new C(); B St_B Dy_D=new D(); St_A Dy_D.f1(); St_A Dy_D.f1(2); St_B Dy_C.f1('c'); St_B Dy_D.f2(); Stampa: f1ind() Stampa: f1inb(int b) Stampa: f2ina() B D A C 24

25 Java: Polimorfismo Esercizio: Cosa stampa? public class Polimorphism5 { public static void main(string[] args){ Scarpa s=new Scarpa(); s.stampa(); Scarpa g=new ScarpaDaGinnastica(); g.stampa(); class Scarpa{ static void stampa(){ System.out.println("Scarpa"); Stampa: Scarpa Scarpa Non è possibile fare overriding di un metodo staico. In altre parole Il binding dinamico dei metodi esiste solo per quelli non- staici. Se avessimo dichiarato g come ScarpaDaGinnasIca in quel caso il metodo stampa() avrebbe dato come output Scarpa da ginnasica class ScarpaDaGinnastica extends Scarpa{ static void stampa(){ System.out.println("Scarpa da ginnastica"); 25

26 Java: Visibilità Richiamo di teoria: Le keyword di visibilità si possono applicare alle classi, agli afribui e ai metodi. Una classe può essere: public: la classe è visibile a tur package- private: la classe è visibile solo all interno del suo package. E il valore di default quando non si specifica nessuna visibilità. AFribuI e metodi possono essere: public, private, protected, package- private Anche qui se viene omesso si intende package- private 26

27 Java: Visibilità La prima colonna ci dice che la classe può sempre accedere ai suoi membri indipendentemente dal livello di accesso. La seconda colonna ci dice i permessi relaivi alle classi dichiarate nello stesso package (indipendentemente dalla parantela) La terza colonna ci dice i permessi relaivi alle sofoclassi dichiarate in altri package. L ulima colonna ci dice i permessi del mondo esterno. 27

28 Java: Visibilità Esercizio: Visibile? package Prova; public class A { private int private_int = 1; int package_int = 2; protected int protected_int = 3; public int public_int = 4; private void privatemethod() {... void packagemethod(){... protected void protectedmethod(){... public void publicmethod(){... public static void main(string[] args) { A a = new A (); // Crea un oggetto di classe A a.privatemethod(); a.packagemethod(); a.protectedmethod(); a.publicmethod(); System.out.println("private_int: " + a.private_int); System.out.println("package_int: " + a.package_int); System.out.println("protected_int: " + a.protected_int); System.out.println("public_int: " + a.public_int); Nessun errore: Dall interno della classe posso sempre accedere a qualsiasi afributo/metodo, indipendentemente dalla sua visibilità 28

29 Java: Visibilità Esercizio: Visibile? package Prova; public class B { public static void main(string[] args) { A a = new A(); a.privatemethod(); a.packagemethod(); a.protectedmethod(); a.publicmethod(); Il metodo privato non è visibile da una classe esterna. System.out.println("private_int: " + a.private_int); System.out.println("package_int: " + a.package_int); System.out.println("protected_int: " + a.protected_int); System.out.println("public_int: " + a.public_int); L afributo privato non è visibile a una classe esterna. 29

30 Java: Visibilità package ProvaB; import Prova.*; public class C extends A { public static void main(string[] args) { A a = new A(); a.privatemethod(); a.packagemethod(); System.out.println("private_int: " + a.private_int); System.out.println("package_int: " + a.package_int); Sono fuori dalla classe e dal package a.publicmethod(); System.out.println("public_int " + a.public_int); a.protectedmethod(); System.out.println("protected_int: "+ a.protected_int); C c = new C(); c.protectedmethod(); System.out.println("protected_int: " + c. protected_int); E consenito ad una istanza di una classe figlia far riferimento ai metodi e alle proprietà implementate nella classe padre ma non è permesso accedere ad essi afraverso una istanza della classe padre. 30

31 Java: Visibilità Esercizio: Date le segueni classi public class O1 { private O2 o2=new O2(); public O2 geto2(){ return o2; public class O2 { public String nome; public void stampa(){ System.out.println(o2.nome); Posso modificare dall esterno lo stato di O1? 31

32 Java: Visibilità Soluzione: Certo che posso. Basta accedere ad o2 che è l unico afributo di O1 e modificarlo. public static void main(string[] args){ O1 o1=new O1(); O2 o2=o1.geto2(); o2.nome="ciao"; o1.stampa(); L inconveniente nasce dal fafo che O2 dichiara il suo afributo come pubblico. Una volta ofenuto un riferimento all afributo di O1 posso modificarlo e O1 vedrà queste modifiche. 32

33 Java: Interface Esercizio: Modellizzare in Java un applicazione in cui le Persone si suddividono in StudenI e Lavoratori Possono esistere Persone semplici, StudenI, Lavoratori, ma anche degli StudenILavoratori. 33

34 Java: Interface Prima (pessima) idea public class Persona{ String nome; String getnome(){ return nome; public class Studente extends Persona{ public class StudenteLavoratore extends Lavoratore{ int matricola; int getmatricola(){ return matricola; int matricola; int getmatricola(){ return matricola; In Java non esiste l ereditarietà mulipla, ovvero non è possibile avere più di una classe padre. Questo mi crea una serie di limitazioni (superabili). public class Lavoratore extends Persona{ float salario; float getsalario(){ return salario; Questa soluzione eredita il comportamento di Lavoratore ma mi costringe a ricopiare il codice di Studente. Decisamente poco pulito. 34

35 Java: Interface La soluzione è nell uilizzo delle interfacce. Java ammefe la possibilità di implementare interfacce muliple. Definiamo quindi public interface Persona { String getnome(); public interface Studente extends Persona { int getmatricola(); public interface Lavoratore extends Persona{ float getsalario(); public class PersonaImpl implements Persona{ private String nome; public PersonaImpl(String nome) { this.nome = nome; public String getnome() { return nome; Le interfacce rappresentano un contrafo tra classi. Chi implementa una determinata interfaccia dovrà fornire una implementazione del metodo dichiarato nell interfaccia stessa. In questo caso PersonaImpl mefe a disposizione il metodo getnome() che deve essere garanito in accordo con l interfaccia Persona. 35

36 Java: Interface public class StudenteLavoratore extends PersonaImpl implements Studente, Lavoratore { private int matricola; private float salario; public StudenteLavoratore(String nome, int matricola, float salario) { super(nome); this.matricola = matricola; this.salario = salario; public int getmatricola() { return matricola; public float getsalario() { return salario; Lo StudenteLavoratore è una Persona, quindi può invocare il suo costrufore passando il suo nome. Lo StudenteLavoratore fornisce i servizi garanii dalle interfacce che implementa: Studente, Lavoratore Anche in questo caso sarò costrefo a ricopiare buona parte dell implementazione di Studente dentro StudenteLavoratore. TuFavia qui è esplicitato sintarcamente in Java il fafo che Studente fornisce tur i servizi fornii da Studente e da Lavoratore. Molto più ordinato. 36

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione 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

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti 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

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica II 17. Esercitazione/Laboratorio 6 Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

Dettagli

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

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - 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,

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

Dettagli

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) 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 Informatica 3 Lezione 7 -

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Java Relazioni Associazioni 1 Associazione Uno a Zero-Uno Un esempio Un autovettura ha al più un proprietario 0..1 Dato il verso di navigazione specificato è necessario avere una

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente

Dettagli

Main System Monitor Keyboard

Main System Monitor Keyboard Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

13. Chain of Responsibility

13. Chain of Responsibility Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD Introduzione alla programmazione Java Dott. Ing. M. Banci, PhD Obiettivi del corso Creare, compilare, e eseguire programmi Java Tipi di dato primitivi Flusso di controllo Java Metodi Arrays Introduzione

Dettagli

Esercitazione di Basi di Dati

Esercitazione di Basi di Dati Esercitazione di Basi di Dati Corso di Fondamenti di Informatica 6 Maggio 2004 Come costruire una ontologia Marco Pennacchiotti pennacchiotti@info.uniroma2.it Tel. 0672597334 Ing.dell Informazione, stanza

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili 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 Corso di

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

Esempio: il conto bancario

Esempio: il conto bancario Ereditarietà Prof. Francesco Scarcello D.E.I.S., Università della Calabria Corso di Informatica 2 Esempio: il conto bancario public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Thread versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 11 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist

20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist 20. Appunti sulle liste (gestione in linguaggio C#) 16/04/2015 Arraylist Esamina il codice seguente, eseguilo passo passo (F11) e rispondi ai quesiti: using System; using System.Collections; class Program

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1 Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

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

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA ES 02 - ORGANIZER Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono

Dettagli

Introduzione a Classi e Oggetti

Introduzione 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

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni delle prove al calcolatore Esercizio 7 (esame del 08/01/2009) class TabellaDiNumeri{ private double[][] tabella;

Dettagli

Tale attività non è descritta in questa dispensa

Tale attività non è descritta in questa dispensa Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa

Dettagli

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages 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 Corso di

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Civile Elementi di Informatica Programmi e Oggetti Software Settembre 2006 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il punto di

Dettagli

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche. Testo Esercizio Si consideri la realizzazione di un semplice programma grafico per il disegno di figure geometriche in due dimensioni. Si analizzino i requisiti e se ne rappresentino i risultati in UML

Dettagli

DESIGN PATTERNS Parte 6. State Proxy

DESIGN PATTERNS Parte 6. State Proxy DESIGN PATTERNS Parte 6 State Proxy STATE Il Design Pattern State nasce dall'esigenza di poter gestire gli stati di una classe senza dover usare dei costrutti come gli Enum e quindi delle switch. Prendiamo

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09 SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli

Dettagli

Esempi di esercizi d esame

Esempi di esercizi d esame Esempi di esercizi d esame Fondamenti di Informatica L-B 1 Cellulare Testo esercizio: 1.Specifiche Si richiede di realizzare una classe che implementa il funzionamento di un telefono cellulare Tale classe

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Design Pattern in Java

Design Pattern in Java Design Pattern in Java Claudio Di Ciccio, Massimiliano de Leoni (con la supervisione del docente Massimo Mecella) Università di Roma La Sapienza - Sede di Latina Corso di Progettazione del Software A.A.

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

LA MOLTIPLICAZIONE IN CLASSE SECONDA

LA MOLTIPLICAZIONE IN CLASSE SECONDA LA MOLTIPLICAZIONE IN CLASSE SECONDA Rossana Nencini, 2013 Le fasi del lavoro: 1. Proponiamo ai bambini una situazione reale di moltiplicazione: portiamo a scuola una scatola di biscotti (. ) e diamo la

Dettagli