ESERCITAZIONE 3 1 - Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Oggetti Java.
Programmazione Ingegneria TLC
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
Fondamenti di Informatica
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Scomposizione di stringhe
Soluzione Esercizio - Classe Vettore
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Approfondimento delle classi
Selezione (=scelta) con “if-else”
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Java base IV: Java e la programmazione O.O.
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
OGGETTI COMPOSTI Una classe può contenere riferimenti a altre classi (o anche a se stessa): public class Orologio { Counter ore, minuti; } Loggetto Orologio.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Programmazione in Java Claudia Raibulet
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A /02/2008 Alessandra Toninelli
void binario(int n); …………………
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Programmazione concorrente
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Conversione da base 10 a base X (Utilizzo della pila)
1 Applet ed HTML Fondamenti di Informatica Corso D.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Programmazione in Java
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Introduzione a Java. Java Linguaggio Object-Oriented La maggior parte dei dati manipolati dai programmi e’ contenuta in oggetti La principale forma di.
Esercitazione sull’ ordinamento 20 maggio 2003
Fondamenti di informatica T-A Esercitazione 2 : Linguaggio Java, basi e controllo del flusso AA 2012/2013 Tutor : Domenico Di Carlo.
1 Java primo contatto Quando le classi fanno la differenza …
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La programmazione ad oggetti
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Esercizi.
Dalla programmazione tradizionale al paradigma OO
Transcript della presentazione:

ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore Quale signature? public static void scambia(...,... ) Forse questa? public static void scambia(int, int) NO: il passaggio sarebbe per valore!

ESERCITAZIONE 3 (continua) Serve un passaggio per riferimento. Come ottenerlo in Java su un tipo primitivo?? Java non offre scelta: i tipi primitivi passano sempre e solo per valore! Solo gli oggetti passano per riferimento. Ma allora... …basta definire una classe che incapsuli il tipo primitivo, e poi passare a scambia oggetti di quel tipo: public static void scambia( IntBuf, IntBuf )

LA CLASSE IntBuf Definiamo una classe IntBuf che incapsuli il tipo primitivo int Costruttore: costruisce un oggetto IntBuf a partire da un int Metodo getValue : recupera il valore int da un oggetto IntBuf Metodo setValue : cambia il valore int conte- nuto in un oggetto IntBuf int oggetto IntBuf public class IntBuf { private int val; public IntBuf(int v) { val = v; } public int getValue () { return val;} public void setValue (int v) { val = v;} }

LA FUNZIONE scambia La funzione scambia può quindi lavorare su due oggetti IntBuf Per scambiare i valori di due oggetti a e b si salva in un temporaneo il valore dell'oggetto a si cambia il valore dell'oggetto a rendendolo pari a b si cambia il valore dell'oggetto b rendendolo pari all'in- tero temporaneo che ospita il vecchio valore di a int oggetto IntBuf

LA FUNZIONE scambia La funzione scambia può quindi lavorare su due oggetti IntBuf public class MyLib { public static void scambia(IntBuf a, IntBuf b){ int temp = a.getValue(); a.setValue(b.getValue()); b.setValue(temp); } int oggetto IntBuf

UN MAIN DI PROVA public class Prova { public static void main(String args[]){ int x = 10, y = 30; System.out.println("x, y = " + x + ", " + y); IntBuf a = new IntBuf(x), b = new IntBuf(y); System.out.println("a, b = " + a.getValue() + ", " + b.getValue()); MyLib.scambia(a,b); System.out.println("a, b = " + a.getValue() + ", " + b.getValue()); }

UN MAIN DI PROVA C:\temp>java Prova x, y = 10, 30 a, b = 10, 30 a, b = 30, 10 public class Prova { public static void main(String args[]){ int x = 10, y = 30; System.out.println("x, y = " + x + ", " + y); IntBuf a = new IntBuf(x), b = new IntBuf(y); System.out.println("a, b = " + a.getValue() + ", "+ b.getValue()); MyLib.scambia(a,b); System.out.println("a, b = " + a.getValue() + ", "+ b.getValue()); }

UNA RIFLESSIONE La classe IntBuf prevede un me- todo che modifica il valore: Costruttore: costruisce un oggetto IntBuf a partire da un int Metodo getValue : recupera il valore int da un oggetto IntBuf Metodo setValue : cambia il valore int conte- nuto in un oggetto IntBuf int oggetto IntBuf public class IntBuf { private int val; public IntBuf(int v) { val = v; } public int getValue () { return val;} public void setValue (int v) { val = v;} }

UNA RIFLESSIONE Dunque: gli oggetti IntBuf non sono valori, sono contenitori il metodo setValue appartiene alla categoria dei trasformatori int oggetto IntBuf public class IntBuf { private int val; public IntBuf(int v) { val = v; } public int getValue () { return val;} public void setValue (int v) { val = v;} }

CLASSI WRAPPER Java prevede già classi standard per incapsula- re valori primitivi: le classi "wrapper" esse però sono valori non hanno trasformatori Il costruttore costruisce un oggetto "wrapper" a partire da un valore primitivo Un metodo permette di recuperare il valore primitivo incapsulato in un oggetto "wrapper" Dunque, le classi "wrapper" di Java non sono adatte a fungere da contenitori per ottenere il passaggio per riferimento di tipi primitivi. Servono, in effetti, per altri scopi.

TIPI PRIMITIVI E CLASSI “WRAPPER” Ogni classe wrapper definisce metodi per estrarre il valore della variabile incapsulata. int oggetto Integer

TIPI PRIMITIVI E CLASSI “WRAPPER” Per estrarre il valore incapsulato: –Integer fornisce il metodo intValue() –Double fornisce il metodo doubleValue() –Boolean fornisce il metodo booleanValue() –Character fornisce il metodo charValue() –... Per creare un oggetto da un valore primitivo: –Integer i = new Integer( valore int ) –Double d = new Double( valore double ) –Boolean b = new Boolean( valore boolean ) –Character c = new Character( valore char ) –...