5 - QUINTA ORA DI LEZIONE - Metodi, Classi & Oggetti

MetodiMetodi/proprietàValori restituitiLe classiGli oggettiClassi/oggetti
BuilderBuilder-EsempioSovraccaricareThis (1)This (2)Instance, LocalEsercizio


 





  Metodi : blocchi di codice che si possono usare più volte

type method-name( ){…..}; // per dichiarare un metodo
     method-name( );     // per dichiarare un metodo

  Dichiarazione

public class TryClass{
public static void main(String args[ ]){ myMethod( ); } // dichiara i metodo
static void myMethod ( )// chiama il metodo “myMethod" per l'output
{ System.out.print( "Questo è un metodo" );
}}

  SINTASSI

public class |nome di Classe|{
public static void main(String args[ ]){|nome di metodo|( ); } /* dichiara un nome di metodo pubblico che può essere usato da qualsiasi classe */
static void |nome di metodo| ( )// chiama il metodo “myMethod”
{ System.out.print( "|questo è un metodo|" );
}}

Output: Questo è un metodo

Particolarità

1) “public” è un metodo accessibile da qualsiasi classe;
2) “static”
significa che è usato dalle class.
3) “void”   
tipo return, che non restituisce un valore.


2

 

 

 

 

  Metodi e proprietà

Un metodo a volte ha delle proprietà (argomenti).

  esempio

public class TryClass{
public static void main ( String [ ] args ) {
myMethod( "ABC" ); }// chiama MyMethod & passa l'argomento
static void myMethod (String argument) //dichiara il metodo {System.out.print( "Questo è un metodo " + argument );
}}

  SINTASSI

public class |nome di Classe|{
public static void main ( String [ ] args ) {
|nome MyMethod già definito|( "|ABC|" );} // chiama MyMethod - già definito - & gli passa l'argomento ABC
static void |nome MyMethod|(String argument) //dichiara il metodo {System.out.print( "|Questo è il metodo|" + argument );
}}

 

Output: Questo è il metodo ABC

Spiegazione:

"Public static void myMethod (String argument) {…}" dichiara un metodo con argomento.
"MyMethod (" ABC ");" chiama il metodo "myMehod (String argument) {…}" e gli passa l'argomento "ABC".
Dopo aver ricevuto l'argomento "ABC", emette "Questo è il metodo ABC".

 


3

 

 

 


 Valori restituiti

Restituzione di un Valore: “return value” passa un valOre a chi lo chiama.

1)type method-name ( argument ) { return value };
2) method-name ( arg );

  Esempio

public class TryClass{
public static void main ( String [ ] args ) {
int num=10;
System.out.print ("Il numero è "+myMethod( num )); }
// “myMethod(num);” è il chiamante
static int myMethod ( int arg ) {
return ++arg; // restituisce il valore al chiamante
} }

SINTASSI

public class |nome di Classe|{
public static void main ( String [ ] args )
// nelle 2 righe seguenti si dichiara il metodo
{ int |Variabile 'num'|=|10|;
System.out.print ("|Il numero è|"+ |MyMethod|(|num||));}
// “myMethod(num);” è il chiamante
static int myMethod ( int arg ) {
return ++arg; // restituisce il valore al chiamante
} }


Output: Il numero è 11.

Spiegazione:

1) “myMethod( num )” chiama il metodo.
2) “int myMethod ( int arg ) {…}” dichiara il metodo.
3) “int” significa che il metodo restituisce un tipo int.
4) “return ++arg” rimanda il valore "11" al chiamante “11”
5) L'output è “Il numero è 11”.


4

 

 

 

 

  Le classi

Definizione
Una classe è un modello (template) per un oggetto, e crea un oggetto.

class Class-name {
type variable;
type function-name( ) { }… }

esempio

Public class Color // dichiara la classe 'Color'
{ String c1, c2; //dichiara due membri variabili members
Void brightness ( ) { System.out.print (“……”); } //un metodo
}

SINTASSI

Public class |Color| // dichiara la classe 'Color'
{ String |c1|,|c2|; //dichiara due membri variabili
Void |metodo 'Luminosita'| ( ) { System.out.print (“……”); } //un metodo
}

Spiegazione:

Il precedente codice sopra definisce una classe denominata "Color", due variabili denominate "c1" e "c2", un metodo denominato "luminosità".


5







 Gli Oggetti

 Un oggetto è l'istanza di una classe. È articolato come segue:
1) obj = new Class-name( ); //crea un oggetto chiamato “obj” (classe) .
2) obj.variable; “obj”     //obj fa riferimento a variable.
3) obj.function-name( );   //obj fa riferimento a una funzione (metodo)

Esempio

Color obj = new Color( ); //crea l'oggetto “obj"
obj.c1= “yellow";//l'oggetto obj fa riferimento a variable c1
obj.c2=”purple”; //l'oggetto obj fa riferimento a variable c2.
obj.brightness ( ); //l'oggetto fa riferimento a un metodo

SINTASSI

|Color| |obj| = |Classe New Color|( );//crea l'oggetto “obj"
|obj|.|c1|= “yellow"; //l'oggetto obj fa riferimento a variable c1
|obj|.|c2|=”purple”; //l'oggetto obj fa riferimento a variable c2.
|obj|.brightness ( ); //l'oggetto fa riferimento a un metodo

Spiegazione:

“Color obj = new Color;” crea l'object chiamato ”obj”, poi lo riferisce alle variabili “c1” e “c2”.
“obj.brightness ( );” chiama la funzione “brightness ( );" (vedi l'esempio precedente), e restituisce “blue”. 


6







 Classi e oggetti

Esempio:

public class Color { // definisce la classe
String c1, c2;
void brightness ( ) {
System.out.println("Questo fiore è " + c1);
System.out.println("Quel fiore è" + c2);
}
public static void main(String[ ] args) {
Color obj = new Color( ); //crea un oggetto
obj.c1= "yellow."; obj.c2="purple."; //riferimenti
obj.brightness ( ); //l' oggetto è riferito a un metodo
}}

SINTASSI:

public class |Color| // definisce la classe
{ String |c1|, |c1|;
void brightness ( ) {
System.out.println("|Questo fiore è|" + |c1|);
System.out.println("|Quel fiore è|" + |c1|);
}
public static void main(String[] args) {
|Color||obj| = new Color( ); //crea an oggetto
|obj|.|c1|= "|giallo.|"; |obj|.|c2|= "|porpora.|"; //riferimenti
|obj|.brightness ( ); //l' oggetto è riferito a un metodo
}}

Output:
Questo fiore è giallo. Quel fiore è porpora.

Spiegazione:
“public class Color { }” // definisce una classe.
“Color obj = new Color( );” // crea un oggetto

7







 Builder - costruttore

Un costruttore viene utilizzato per dare i valori iniziali a delle variabili. Il nome del costruttore è lo stesso del nome della classe. 
class Class-name{...} // definisce una classe
Class-name( ) {} // costruttore per inizializzazione
Class-name( ) {} // dichiara un costruttore

Esempio

public class Color //crea una classe
{ String c1, c2;
Color ( ) { c1=”giallo”; c2=”porpora”; }} // è il costruttore

SINTASSI

public class |Color|//crea una classe
{String |c1|, |c2|;
|Color|( ) { |c1|=”|giallo|”; |c2|=”|porpora|”; }} // è il costruttore

Spiegazione:

“Color ( ) { c1=”giallo”; c2=”porpora”; }” è un costruttore che inizializza la variable c1 come “giallo” e la c2 come “porpora”.
Quando viene creato un oggetto il costruttore viene chiamato automaticamente.

8

 

 

 

 

  Esempio di costruttore (builder)

Esempio

public class Color // crea una classe
{ String c1, c2;
Color ( ) {c1="yellow"; c2="purple";} // costruttore

void brightness ( ) {
System.out.println("Questo fiore è " + c1);
System.out.println("Quel fiore è " + c2); }

public static void main(String[] args) {
Color obj = new Color( ); //crea l'oggetto, chiama il costruttore
obj.brightness ( );  

SINTASSI

public class |Color|// crea una classe
{ String c1, c2;
|Color| ( ) {|c1|="yellow"; |c1|="purple";} // costruttore

void brightness ( ) {
System.out.println("|Questo fiore è|" + |c1|);
System.out.println("|Quel fiore è + |c1|);
}
public static void main(String[] args) {
|Color| |obj| = new Color( ); //crea l'oggetto, chiama il costruttore
|obj|.brightness ( );  

Output: Questo fiore è giallo. Quel fiore è porpora 

Spiegazione:

“Color ( ) {c1="yellow"; c2="purple";}” crea un costruttore.
“Color obj = new Color( );” crea un oggetto, e chiama automaticamente ile costruttore.


9

 

 

 

 

  Sovraccarico

Quando in una classe esistono due o più metodi con lo stesso nome e i loro argomenti sono diversi si ha un Sovraccarico.

Esempio

packagecorrectPackage;
class Color {
String x,y; // definisce una classe
Color ( String a, String b) { x=a; y=b; } // Sovraccarico
Color ( ) { x="giallo "; y="porpora";}    // Sovraccarico

public static void main (String args[ ] {
{ Color obj1=new Color("verde", "arancio "); Color obj2=new Color( );
System.out.println(obj1.x + obj1.y);
System.out.println(obj2.x + obj2.y);}

}

SINTASSI

package |correctPackage|;
class |Color|{
String |x|, |y|; // definisce una classe
|Color| ( String |a|, String |b|) { |x|=|a|; y=|b|; } // Sovraccarico
|Color| ( ) { |x|="|giallo|"; |y|="|porpora|";}    // Sovraccarico

public static void main (String args[ ])
{ |Color| |obj1|=new Color("|verde|", "|arancio|");
  |Color| |obj2|=new Color( );
System.out.println(|obj1|.|x| + |obj1|.|y|);
System.out.println(|obj2|.|x| + |obj2|.|y|);}
}

Output: verde arancio giallo porpora

Spiegazione

In questa classe, ci sono due metodi denominati entrambi "Color ()" con argomenti diversi, il che prende il nome di "sovraccarico".

10

 

 

 

 

  Parola chiave 'This' (1)
  serve per riferirsi all'oggetto corrente.

Esempio

correctPackage;
class MyClass {
int num;
void test(int num) {
this.num=num; // “this” represents the “obj”
System.out.println( this.num );
};
public static void main(String[ ] args) { MyClass obj = new MyClass( );
obj.test(10);// obj chiama il metodo test
}
}

SINTASSI

Package correctPackage;
class MyClass {
int |num|;
void test(int |num|) {
this.|num|=|num|; //“this” si riferisce all'oggetto “obj”
System.out.println( this.|num| );
};
public static void main(String[ ] args) { |MyClass obj| = new MyClass( );
|obj|.test(|10|); // obj chiama il metodo test
}
}


Output: 10

Spiegazioni:

Qui sopra, quando “obj.test(10)” chiama il metodo “test( ) { }” “this” significa l'oggetto “obj”.

 


11

 

 

 

 

  Parola chiave 'This' (2)
  può rappresentare un altro costruttore con lo stesso nome

Esempio

class MyClass {
int x, y;
MyClass ( ) {
this ( 100, 200 );} //“this" si riferisce a MyClass (int a, int b){ }
MyClass ( int a, int b){ x=a; y=b;
}

SINTASSI

class |MyClass| {
int |x|, |y|;
|MyClass| ( ) {
this ( |100|, |200| );//“this" si riferisce a MyClass (int a, int b){ }
}
|MyClass| ( int |a|, int |b|){|x|=|a|; |y|=|b|; }

Spiegazione

"This (100, 200)" rappresenta un altro costruttore con lo stesso nome cioè "MyClass (int a, int b) {}".
Si noti che "This" non può rappresentare un metodo non costruttore.


12

 

 

 

 

  Variabili instance e Local

variabile instance: è definita in una classe e funziona nella classe corrente.
variabile locale: è definita in un metodo e Funziona con il metodo corrente.

Esempio

Class Point {
int x= 100, y = 200; // variabile instance

void test( ){
int x = 1, y = 2; // variabile locale
}
}

SINTASSI

class |Point| {
int |x|= |100|, |y| =|200|; // variabile instance legata alla classe

void test( ){ int |x| = |1|, |y|= |2|;} // variabile locale
}

Spiegazione

“int x= 100, y = 200;” definisce due variabili istanza all'interno di una classe.
“int x = 1, y = 2;” definisce due variabili locali all'interno di un metodo.

13

 

 

 

 

  Esercitazione - Informazioni di contatto

>Avviate Eclipse > Select “myPackage” > new > class > name > Message > Finish. Scrivete in eclipse i codici seguenti.

esempio

Package myPackage;//crea il package
public class Message { //dichiara la classe Messagee
String nome, email, telef;
public Message(String theNome, String theEmail, String theTelef)
//dichiara un costruttore per l'inizializzazione
{ nome = theNome;
email = theEmail;
telef = theTelef;}


void mostraEmail(){ //genera la funzione per mostrare l'email
System.out.println("Email:" + email);}


void mostraTelef(){ //genera la funzione per mostrare nº telefono
System.out.println("Telefono:" + telef);}


public static void main(String[] args) { //dichiara una funzione main
Message LINO = new Message ("LINO", "LINO@xxx.xxx", "0620-xxx-09"); //crea l'oggetto Message LINO, e chiama il costruttore
System.out.println(LINO.nome);
LINO.mostraEmail( ); //chiama La funzione che mostra l'email

ANDREA.mostraTelef( ); // call a function
Message ANDREA = new Message ("ANDREA", "ANDREA@xxx.xxx", "0620-xxx-09"); //crea l'oggetto Message ANDREA, e chiama il costruttore
System.out.println(ANDREA.nome);
ANDREA.mostraTelef( ); //chiama La funzione che mostra il telefono
}
}

SINTASSI

package |myPackage|; //crea il package
public class Message //dichiara la classe Message
{ String |nome|, |email|, |telefono|;
public Message(String |theNome|, String |theemail|, String |thetelef|) //dichiara un costruttore per l'inizializzazione
|nome| = |theNome|;
|email| = |theemail|;
|telefono| = |theTelef|;}

void |MostraEmail|() //genera la funzione per stampare l'email
{System.out.println("|email :|" + |email|);}

void |Mostratelef |() //genera la funzione per stampare nº telefono
{System.out.println("|Tel :|" + |telefono|);}


public static void main(String[] args) //dichiara una funzione main
{ Message |LINO| = new Message ("|LINO|", "|LINO@xxx.xxx|", "|678-xxx-9999|"); //crea l'oggetto Message LINO, e chiama il costruttore
System.out.println(|LINO|.|nome|);
|LINO|.|MostraEmail|( ); //chiama La funzione che mostra l'email

Message |ANDREA| = new Message ("|ANDREA|", "|ANDREA@xxx.xxx|", "|567-xxx-0000"); //crea l'oggetto Message ANREA, e chiama il costruttore
System.out.println(|ANDREA|.|nome|);
|ANDREA|.|MostraTelef|( ); //chiama la funzione che mostra il telefono
}
}

Fare clic sul pulsante verde col triangolo bianco nella barra degli strumenti per eseguire il programma e vedere l'output:

Output


LINO
E-mail: LINO@xxx.xxx
ANDREA
Telefono: 0620-xxx-09