Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"

Documenti analoghi
Determinazione del tipo

Sezione: Upcast - downcast

La Pila in Java - 1. package strutture; public class Pila { int size; int defaultgrowthsize; int marker; int contenuto[];

Esercizio: Costruite una Coda analoga alla Pila

Pila.h. #define DEFAULTGROWTHSIZE 5 struct Pila { int size; int marker; int * contenuto; } ;

Il nostro esempio guida: La costruzione di uno stack

Esercizio: Costruite una Coda analoga alla Pila

Pila 1. Pila 2. Pila 4. Pila 3. Attenti all ordine! public: Pila() { size=initialsize; defgsize =initialsize; marker=0; contenuto=new int[size]; }

3LOD 3LOD. public class Pila { class Pila { protected: int size; int defgsize; int marker; int * contenuto; const int initialsize=3;

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Overloading - Overriding

Unified Modeling Language

Polimorfismo parametrico vs polimorfismo per inclusione

Overloading - Overriding

Metodi static. Esempio. public class Financial { { return (p / 100) * a; } //... }

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Conversioni forzate tra tipi riferimento: casting

LETTURA DI DATI DA INPUT. Gli stream di byte consentono già di leggere dati (numeri di vario tipo), tramite la classe DataInputStream

TIPI PRIMITIVI E CLASSI WRAPPER

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

#include <iostream.h> #include <cassert> #define DEBUG. contenuto. struct Pila { int size; int defaultgrowthsize; int marker; int * contenuto; } ;

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Esempio su strutture dati dinamiche: ArrayList

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Introduzione a Java e all'ambiente di sviluppo

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

Corso di Reti di Calcolatori L-A

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

COGNOME NOME MATRICOLA DATA

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

SEZIONE 2 Introduzione al copy constructor e ad operator overloading

Linguaggi di Programmazione I Lezione 8

Linguaggi di Programmazione I Lezione 11

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

LETTURA DI DATI DA INPUT

Linguaggi di Programmazione I Lezione 9

Tipi di dato F n o d n am ent en ali

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Le basi del linguaggio Java

Programmazione ad Oggetti. Java Parte II

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

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

Programmazione Java: Polimorfismo

Sommario. I Uso degli oggetti 39

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

COGNOME NOME MATRICOLA DATA

Java Classi wrapper e classi di servizio. Classi di servizio

Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane

Capitolo 13: Gestione delle eccezioni. Capitolo 13. Gestione delle eccezioni Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Fondazione ITS A. Volta linguaggi Flavia Lollis 1

Linguaggi di Programmazione I Lezione 10

Oggetti e dati primitivi 1

Esempio su strutture dati dinamiche: ArrayList

Esempi in Java di program.ne O-O

Corso sul linguaggio Java

! Riassunto. ! for. ! Cicli annidati. ! Esempi, esercizi, errori tipici. ! Programmazione strutturata. ! break e continue I1; I2; I3;

TIPI PRIMITIVI: LIMITI

Esempio su strutture dati dinamiche: ArrayList

Wrappers e Autoboxing

Richiami Java e Arrays

Costrutti per il controllo del flusso di esecuzione

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP?

Programmazione II Linguaggi di Programmazione Mod. 1

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

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

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza

Programmazione II Linguaggi di Programmazione Mod. 1

Introduzione a Java. Riferimenti

Laboratorio di Informatica I

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella)

Le basi del linguaggio Java

Esonero del corso di Programmazione a Oggetti

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Keywords abstract default if private this boolean do implements protected throw extends null**

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Programmazione Orientata agli Oggetti in Linguaggio Java

Cenni su programmazione con tipi generici (generics)

Prova d Esame Compito A

Il paradigma di programmazione a oggetti

Oggetti. Interfacce e sottotipi

Programmazione II Linguaggi di Programmazione Mod. 1

Il paradigma di programmazione a oggetti

Esempio su strutture dati dinamiche: ArrayList

Elementi di C++ di base. Arrays (vettori) Gli array sono collezioni di elementi omogenei

Unità A1 Funzioni MODULO Java 2

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation

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

Transcript:

1 Classi Wrapper classe "wrapper" int Integer float Float char Char byte Byte double Double Generano oggetti che hanno come variabile di istanza un tipo di dato primitivo con nome uguale Integer int Float float

2 Sezione: Pila Polimorfa - richiami Una Pila Polimorfa

3 La Pila in Java - 1 package strutture; public class Pila { int size; int defaultgrowthsize; int marker; Object contenuto[]; final int initialsize=3; Pila() { size=initialsize; defaultgrowthsize=initialsize; marker=0; contenuto=new Object[size];

4 La Pila in Java - 2 Abilita lo static binding final void inserisci(object k) { if (marker==size) {cresci(defaultgrowthsize); contenuto[marker]=k; marker++; Object estrai() { assert(marker>0):"estrazione da Pila vuota"; return contenuto[--marker];

5 La Pila in Java - 3 private void cresci(int dim){ Object temp[ ]=new Object[size]; for (int k=0;k<size;k++) temp[k]=contenuto[k]; contenuto=new Object[size+defaultGrowthSize]; for (int k=0;k<size;k++) contenuto[k]=temp[k]; size+=defaultgrowthsize;

6 La Pila in Java - 5 public static void main(string args[]) { int dim=10; Pila s=new Pila(); for (int k=0;k<dim;k++){ Integer o=new Integer(k); s.inserisci(o); for (int k=0;k<3*dim;k++) { Integer i = s.estrai(); int w=i.intvalue(); System.out.println(w);

7 La Pila in Java - 5 public static void main(string args[]) { int dim=10; Pila s=new Pila(); for (int k=0;k<dim;k++){ Integer o=new Integer(k); s.inserisci(o); for (int k=0;k<3*dim;k++) { Integer i = s.estrai(); int w=i.intvalue(); System.out.println(w); ERRORE! Non posso mettere un Object in un Integer!

8 La Pila in Java - 6 public static void main(string args[]) { int dim=10; Pila s=new Pila(); for (int k=0;k<dim;k++){ Integer o=new Integer(k); s.inserisci(o); for (int k=0;k<3*dim;k++) { Integer i = (Integer)s.estrai(); int w=i.intvalue(); System.out.println(w);

9 La Pila in Java - 4 public static void main(string args[]) { int dim=10; Pila s=new Pila(); for (int k=0;k<dim;k++){ Integer o=new Integer(k); s.inserisci(o); for (int k=0;k<3*dim;k++) System.out.println(s.estrai()); // end of class Pila

10 Sezione: Upcast - downcast Upcast & downcast

11 public class Test { public static void main(string a[]) { new Test(); Test() { A a; cast B b = new B(); OK: upcast implicito a=b; NO: "method f2 not found a.f1(); in class A" (compiler) a.f2(); class A { void f1() {System.out.println("f1"); class B extends A { void f2() {System.out.println("f2"); class C extends B { void f3() {System.out.println("f3");

12 public class Test { public static void main(string a[]) { new Test(); Test() { A a; B b = new B(); a=b; a.f1(); ((B)a).f2(); OK: upcast implicito OK: downcast corretto cast class A { void f1() {System.out.println("f1"); class B extends A { void f2() {System.out.println("f2"); class C extends B { void f3() {System.out.println("f3");

13 public class Test { public static void main(string a[]) { new Test(); Test() { A a; cast B b = new B(); OK: upcast implicito a=b; NO: downcast illecito (runtime) a.f1(); java.lang.classcastexception ((C)a).f3(); class A { void f1() {System.out.println("f1"); class B extends A { void f2() {System.out.println("f2"); class C extends B { void f3() {System.out.println("f3");

14 Type conversion - cast Si può applicare cast SOLO all interno di una gerarchia di ereditarietà È consigliabile usare l'operatore instanceof per verificare prima effettuare un downcast if (staff[1] instanceof Manager) { Manager n = (Manager)staff[1];...

15 La Pila in Java 8a public static void main(string args[]) { int dim=10; Pila s=new Pila(); //INSERIMENTO for (int k=0;k<dim;k++){ Object o; if (Math.random()<0.5) o=new Integer(k); else o=new Float(k*Math.PI); s.inserisci(o);

16 La Pila in Java 8b // ESTRAZIONE for (int k=0;k<dim;k++) { Object o = s.estrai(); if (o instanceof Integer) { Integer i = (Integer) o; int w = i.intvalue(); System.out.println("an int:"+w); else if (o instanceof Float) { Float i = (Float) o; float w = i.floatvalue(); System.out.println("a float:"+w); else System.out.println("Unknown class!");

17 La Pila in Java 8c OUTPUT: a float:28.274334 an int:8 an int:7 a float:18.849556 an int:5 an int:4 a float:9.424778 a float:6.2831855 a float:3.1415927 a float:0.0

18 Lettura di stringhe con GUI import javax.swing.joptionpane; public A() {... String input = JOptionPane.showInputDialog( "How are you?"); System.out.println(input); System.exit(1); Essenziale! Altrimenti la thread che gestisce la GUI rimane viva, e il processo non termina

19 Fondamenti di Java Polimorfismo a tutto campo, con Pile e Code...

20 Trasformare la Pila in Coda package strutture; public class Coda extends Pila{ Object estrai() { assert(marker>0):"estrazione da Coda vuota"; Object retval=contenuto[0]; for (int k=1; k<marker; k++ ) contenuto[k-1]=contenuto[k]; marker--; return retval;

21 public static void main(string args[]) { try { Pila s=null; int type=0; do { try { type =Integer.parseInt( JOptionPane.showInputDialog( "Pila (1) o Coda (2)?")); catch (Exception e) {type=0; while (type<1 type>2); switch (type) { case 1: s=new Pila(); break; case 2: s=new Coda(); break; Usare Pile e Code

22 for (int k=0;k<10;k++) if (k%2!=0) s.inserisci(new Integer(k)); else s.inserisci(new Float(k*Math.PI)); for (int k=0;k<11+1;k++) System.out.println(s.estrai()); catch (AssertionError a){ a.printstacktrace(); finally { System.exit(0); Usare Pile e Code Dynamic binding