• Non ci sono risultati.

Introduzione all ’ ’ uso degli oggetti in Java uso degli oggetti in Java (parte II)

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione all ’ ’ uso degli oggetti in Java uso degli oggetti in Java (parte II)"

Copied!
25
0
0

Testo completo

(1)

Introduzione all

Introduzione all ’ ’ uso degli oggetti in Java uso degli oggetti in Java (parte II)

(parte II)

Walter Didimo

Walter Didimo

(2)

Esercizio all

Esercizio all ’ ’ uso di oggetti uso di oggetti

Nel corso viene fornita una classe i cui oggetti permettono di leggere dati immessi dalla

tastiera – la classe InputWindow InputWindow

• vogliamo imparare ad usare gli oggetti ti tipo InputWindow

InputWindow

• vogliamo anche esercitarci ad usare oggetti di

altre classi già definite

(3)

La classe

La classe InputWindow InputWindow

Un oggetto di tipo InputWindow InputWindow permette di

acquisire dati immessi da tastiera attraverso un

piccolo pannello grafico

(4)

Creazione di oggetti

Creazione di oggetti InputWindow InputWindow

La classe InputWindow InputWindow mette a disposizione un solo costruttore per creare i suoi oggetti

InputWindow InputWindow ( ) ( )

Per creare un oggetto di tipo InputWindow InputWindow occorre dunque scrivere

new InputWindow new InputWindow ( ) ( )

(5)

Lettura di dati con

Lettura di dati con InputWindow InputWindow

Ad un oggetto di tipo InputWindow InputWindow possiamo chiedere di leggere dati di vario tipo immessi da tastiera: numeri interi (int), numeri reali

(double), stringhe (String), ecc.

La trattazione sistematica dei tipi di dato tipi di dato in

Java sarà oggetto di una prossima lezione; per

ora procediamo con degli esempi

(6)

Metodi di

Metodi di InputWindow InputWindow

Per ogni tipo di dato che un oggetto InputWindow

InputWindow può acquisire da tastiera, esiste un metodo apposito che acquisisce tale dato e lo restituisce

int int readInt readInt (); ();

double

double readDouble readDouble (); ();

String

String readString readString (); ();

.. ..

(7)

Il semplice programma

Il semplice programma “ “ Echo Echo ” ”

Come primo esempio, realizziamo un semplice programma che acquisisce una stringa immessa da tastiera dall’utente, e che visualizza tale

stringa in una finestra sullo schermo

• Il programma sarà formato dalle classi InputWindow

InputWindow ed OutputWindow OutputWindow (già definite), e dalla classe Echo, che dobbiamo definire Echo

• La classe Echo Echo conterrà il solo metodo main main ed

utilizzerà oggetti di InputWindow InputWindow ed OutputWindow OutputWindow

(8)

Schema del programma Schema del programma

Echo

void main(…)

InputWIndow

String readString ()

…..

….

in:InputWIndow

String readString ()

…..

….

out:OutputWindow

void write(String s)

…..

….

OutputWindow

void write(String s)

…..

….

1: Avvia il programma

2: new InputWindow( )

3: new OutputWindow(“Echo”)

4: readString( )

5: wr ite(s)

(9)

Il codice della classe

Il codice della classe Echo Echo

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Discutiamo nel seguito le varie linee di codice del

metodo main main della classe Echo Echo

(10)

Creazione di un oggetto

Creazione di un oggetto InputWindow InputWindow

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Utilizza il new new ed un costruttore per creare un oggetto di

tipo InputWindow; il riferimento viene memorizzato nella InputWindow

variabile in in

(11)

Creazione di un oggetto

Creazione di un oggetto OutputWindow OutputWindow

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Analogamente viene creato un oggetto OutputWindow OutputWindow

ed il suo riferimento è memorizzato nella variabile out; out

la finestra di output avrà il titolo “ Echo” Echo

(12)

Leggere un dato da tastiera Leggere un dato da tastiera

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Questa istruzione è una istruzione composta: legge una stringa immessa da tastiera e la memorizza in una

variabile riferimento opportuna

(13)

Leggere un dato da tastiera Leggere un dato da tastiera

in in .readString .readString () ()

Quando si invoca il metodo readString readString () () sull’oggetto in, in tale metodo apre una finestra sullo schermo …

… ed attende che l’utente

immetta una stringa e prema OK

… quindi il metodo termina, ed all’espressione in in .readString .readString () ()

rimane associata la stringa inserita

(14)

Stringhe ed oggetti

Stringhe ed oggetti String String

Una stringa (sequenza di caratteri) viene

rappresentata in Java tramite un oggetto, la cui classe è la classe String String

• La classe String String è predefinita nella API di Java ed offre molte funzionalità utili (le studieremo in seguito)

• Il metodo readString readString () () restituisce il riferimento ad

un oggetto di tipo String, che rappresenta la stringa String

immessa dall’utente

(15)

Memorizzare una stringa Memorizzare una stringa

Possiamo memorizzare il riferimento restituito da readString

readString () () in una opportuna variabile di tipo String, utilizzando l’operatore di assegnamento “ =” =

String

String str str = in.readString = in .readString () ()

La variabile che stiamo usando ha il nome str str

(16)

Visualizzare la stringa Visualizzare la stringa

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Invocando il metodo write write sull’oggetto out, visualizziamo out nella finestra dal titolo “Echo Echo” la stringa inserita

dall’utente, cioè quella memorizzata in str str

(17)

Visualizzare la stringa Visualizzare la stringa

class Echo{

/* Visualizza una stringa inserita dall’utente*/

public static void main (String[] args){

InputWindow in = new InputWindow ();

OutputWindow out = new OutputWindow (“Echo”);

String str = in.readString();

out.write(str);

} }

Il metodo write write accetta una stringa come parametro; questo

significa che possiamo passare ad esso anche riferimenti ad

oggetti String, oltre che letterali stringa String

(18)

Il risultato

Il risultato

(19)

Ancora sui metodi di

Ancora sui metodi di InputWindow InputWindow

Il metodo readString readString () () di un oggetto di tipo InputWindow InputWindow apre un pannello con un messaggio (“ Insert Insert a string a string”) che chiede di inserire una stringa

Esiste anche una variante, readString readString (String ( String s), che s)

permette di cambiare il messaggio “ Insert Insert a a string” con il string messaggio s s passato come parametro

in in .readString .readString (“ ( “Inserisci una stringa Inserisci una stringa” ”) )

(20)

Un altro programma Un altro programma

Vogliamo scrivere ora un programma che risolve equazioni di secondo grado

• Il programma utilizzerà una classe,

EquazioneDiSecondoGrado, che immaginiamo sia già stata definita

• Un oggetto di tipo EquazioneDiSecondoGrado EquazioneDiSecondoGrado è in grado di rappresentare un’equazione di secondo

grado nella forma ax ax 2 2 + + bx bx + c = 0 e di restituirci le + c = 0

sue soluzioni reali

(21)

I metodi di

I metodi di EquazioneDiSecondoGrado EquazioneDiSecondoGrado

/* il costruttore – permette di creare un oggetto della classe, che rappresenta l’equazione ax

2

+ bx + c = 0 */

EquazioneDiSecondoGrado

EquazioneDiSecondoGrado (double ( double a, a, double double b, double b, double c) c)

/* visualizza le soluzioni (reali) sullo standard output (finestra non grafica) */

void void stampaSoluzioni stampaSoluzioni () ()

/* visualizza le soluzioni (reali) sulla finestra grafica rappresentata dall’oggetto OutputWindow passato come parametro */

void void stampaSoluzioni stampaSoluzioni (OutputWindow ( OutputWindow out) out)

(22)

Overloading

Overloading di metodi di metodi

• La classe EquazioneDiSecondoGrado EquazioneDiSecondoGrado ha due metodi con lo stesso nome, i metodi stampaSoluzioni stampaSoluzioni () () e

stampaSoluzioni

stampaSoluzioni ( ( OutputWindow OutputWindow out) out)

• Essi hanno però diversa diversa signature signature

• Una classe può avere molti metodi con lo stesso nome

( overloading overloading di metodi) ma non due metodi con la stessa di metodi

signature!!

(23)

Specifiche del programma Specifiche del programma

Il programma chiederà all’utente di inserire i coefficienti dell’equazione da calcolare e poi

visualizzerà le soluzioni, sia su finestra grafica sia sullo standard output

L’equazione si assume nella forma

ax ax 2 2 + + bx bx + c = 0, dove ciascuno dei coefficienti + c = 0, a, a

b e c può essere un numero reale a piacere c

(24)

Struttura del programma Struttura del programma

Il programma si comporrà delle seguenti classi:

EquazioneDiSecondoGrado EquazioneDiSecondoGrado (già scritta)

InputWindow InputWindow (già scritta)

OutputWindow OutputWindow (già scritta)

CalcolaEquazione CalcolaEquazione (da scrivere) – contiene il solo

metodo main main

(25)

Il codice della classe

Il codice della classe CalcolaEquazione CalcolaEquazione

class CalcolaEquazioni{

public static void main (String[] args){

InputWindow in = new InputWindow ();

double a = in.readDouble ("Inserisci il coeff. a");

double b = in.readDouble ("Inserisci il coeff. b");

double c = in.readDouble ("Inserisci il coeff. c");

EquazioneDiSecondoGrado eq = new EquazioneDiSecondoGrado(a,b,c);

eq.stampaSoluzioni ();

OutputWindow out = new OutputWindow();

eq.stampaSoluzioni (out);

}

}

Riferimenti

Documenti correlati

 se uno stesso identificatore è associato a piú elementi dello stesso tipo (es. variabili), in ogni punto del. programma esiste una sola

dato un identificatore in un determinato punto del programma definiscono quale associazione utilizzare.

- un metodo che, data una stringa s che denota un titolo, restituisce true se un libro con titolo s compare nell’elenco dei libri di uno scolaro;. - un metodo che, data una stringa

Inoltre, definire un metodo che modifica il mezzo di trasporto ed il prezzo per persona, ed un metodo che restituisce una stringa che descrive un soggiorno con trasporto.

Scrivere un metodo che, dati un array bidimensionale di stringhe a ed un intero k > 0, restituisce true se in ogni riga a[i] di a esistono almeno k coppie di stringhe adiacenti

Oltre ai metodi che restituiscono i valori delle variabili istanza, definire un metodo che aggiunge il nome di un monumento nell’elenco di una via storica ed un metodo che

Inoltre, definire un metodo per modificare il nome del docente titolare di un corso, un metodo equals che restituisce true se due corsi sono uguali (altrimenti restituisce false) ed

Inoltre, definire un metodo per modificare il nome del produttore, un metodo che, dati due farmaci, controlla se appartengono alla stessa categoria e hanno lo stesso principio