La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Classi e Oggetti. Indice Classi, oggetti, metodi Documentazione e API Oggetti e riferimenti.

Presentazioni simili


Presentazione sul tema: "Classi e Oggetti. Indice Classi, oggetti, metodi Documentazione e API Oggetti e riferimenti."— Transcript della presentazione:

1 Classi e Oggetti

2 Indice Classi, oggetti, metodi Documentazione e API Oggetti e riferimenti

3 Tipi e variabili Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo: Le variabili Memorizzano valori Possono essere utilizzate per rappresentare i valori che memorizzano String greeting = "Hello, World!"; PrintStream printer = System.out; int luckyNumber = 13;

4 Operatore di assegnamento = Modifica il valore delle variabili int luckyNumber = 13; luckyNumber = 12;

5 Variabili non inizializzate Sono un errore: int luckyNumber; System.out.println(luckyNumber); // ERROR - uninitialized variable

6 Domanda 1.Lespressione 12 = 12 è sensata?

7 Risposta 1.No, il lato sinistro deve essere una variabile (o più in generale, denotare una locazione)

8 Classi e oggetti Oggetto: una entità manipolabile allinterno di un programma (mediante i suoi metodi) Ogni oggetto appartiene (è generato da) una classe. Ad esempio System.out appartiene alla classe PrintStream

9 Metodi Metodo: codice che permette di accedere ai dati di un oggetto I dati (lo stato) di un oggetto sono accessibili solo attraverso i metodi delloggetto Classe: definisce un insieme di oggetti con lo stesso comportamento La classe definisce i metodi dei suoi oggetti La classe fornisce costruttori per creare oggetti Continua…

10 Metodi Interfaccia pubblica: specifica quali sono i metodi invocabili sugli oggetti della classe println non è parte dellinterfaccia pubblica della classe string String greeting = "Hello"; greeting.println()// Errore: greeting.length() // OK

11 Due oggetti di tipo String

12 Metodi della classe String length: conta il numero di caratteri della stringa Continua… String greeting = "Hello, World!"; int n = greeting.length(); // n = 13

13 Metodi della classe String toUpperCase: crea un altro oggetto di tipo String che contiene i caratteri della stringa originaria, ma convertiti in maiuscolo Continua… String fiume = "Mississippi"; String ucFiume = fiume.toUpperCase(); // ucFiume = "MISSISSIPPI"

14 Metodi della classe String Linvocazione di un metodo su un oggetto è legale solo se il metodo è parte dellinterfaccia pubblica della classe a cui loggetto appartiene System.out.length(); // ERRORE

15 Domande 2.Quale è la sequenza di istruzioni per calcolare la lunghezza della stringa Arcobaleno ? 3.Quale è la sequenza di istruzioni per stampare la versione uppercase della stringa "Hello, World!" ? 4.È legale linvocazione fiume.println() ? Perché o perché no?

16 Risposte Non è legale: la variabile fiume ha tipo String e la classe String non definisce il metodo il metodo println Arcobaleno".length() System.out.println(Hello World.toUpperCase());

17 Parametri espliciti e impliciti Un parametro (esplicito) rappresenta un dato di input per il metodo Non tutti i metodi hanno parametri (espliciti) Tutti i metodi hanno un parametro implicito: loggetto su cui il metodo viene invocato Continua… System.out.println(greeting) greeting.length() // no parametri espliciti System.out.println(greeting)

18 Parametri espliciti e impliciti Hello, World è un parametro passato al metodo println

19 Parametri espliciti e impliciti Il metodo replace esegue una operazione di ricerca e modifica Questa chiamata ha: Un parametro implicito: "Mississippi" Due parametri espliciti: "issipp" e "our" Restituisce la stringa "Missouri" Continua… fiume.replace("issipp", "our") // restituisce la nuova stringa ("Missouri")

20 Parametri espliciti e impliciti

21 Definizione di metodi La definizione di un metodo specifica solo i parametri espliciti con i loro (ed il tipo del risultato) Il tipo del parametro implicito è la classe in di cui la definizione di metodo fa parte Continua…

22 Definizione di metodi Esempio: la classe String definisce public int length() // return type: int // nessun parametro public String replace(String target, String replacement) // return type: String; // due parametri di tipo String

23 Definizione di metodi I metodi che non hanno valori risultato sono dichiarati void Overloading: Un nome di metodi si può usare in più definizione Se le definizioni sono nella stessa classe diciamo che il nome è overloaded Le versioni di un metodo overloaded devono avere parametri diversi public void println(String output) // classe PrintStream public void println(String output) public void println(int output)

24 Domande 5.Quale è il risultato della chiamata fiume.replace("p", "s")? 6.Quale è il risultato della chiamata greeting.replace("World","Dave").length() 7.Come è definito il metodo toUpperCase nella classe String ?

25 Risposte 5. "Missississi" public String toUpperCase(), ovvero senza parametri e con tipo risultato String.

26 Tipi aritmetici e booleani Interi: short, int, long 13 Virgola mobile: float, double Booleani: true, false Non sono oggetti: sono tipi primitivi

27 Oggetti e forme Geometriche Java ha una ricca libreria di classi per descrivere forme geometriche Oggetti di tipo Rectangle descrivono forme rettangolari

28 Rectangle Un oggetto di tipo Rectangle contiene un insieme di valori che rappresentano e descrivono una forma rettangolare Tre oggetti, ciascuno con i suoi dati che definiscono il proprio stato

29 Costruttori Il costrutto new costruisce un nuovo oggetto di tipo rettangolo Usa i parametri ( 5, 10, 20, e 30 ) per inizializzare I dati delloggetto Restituisce un riferimento alloggetto Tipicamente il risultato viene assegnato ad una variabile Rectangle box = new Rectangle(5, 10, 20, 30); new Rectangle(5, 10, 20, 30)

30 Costruttori Come nel caso dei metodi, il nome del costruttore può essere overloaded allinterno della stessa classe per fornire diversi modalità di creazione di oggetti new Rectangle() // costruisce un rettangolo con origine (0,0) // larghezza 0, e altezza zero 0

31 Sintassi: new new ClassName(parameters) Esempio: new Rectangle(5, 10, 20, 30) new Rectangle() Effetto nella chiamata ad un costrotture Costruisce un nuovo oggetto, inizializzandone lo stato con i parametri, e restituisce un riferimento alloggetto costruito.

32 Domande 8.Come si costruisce un quadrato con centro (100, 100) e lato 20? 9.Cosa stampa la seguente istruzione? System.out.println(new Rectangle().getWidth());

33 Risposte new Rectangle(90, 90, 20, 20)

34 Metodi e side-effects In molti casi leffetto dellinvocazione di un metodo è la modifica dello stato delloggetto su cui il metodo è invocato (il parametro implicito Metodi con side-effects vengono detti mutators box.translate(15, 25);

35 Metodi e side-effects box.translate(15, 25);

36 Domande 10.Il metodo toUpperCase della classe string String è un mutator? 11.Quale chiamata al metodo translate dobbiamo effettuare per spostare il rettangolo box in modo da posizionare il suo angolo alto-sx alle coordinate (0, 0)?

37 Answers 10.No, non modifica la stringa originale, restituisce una nuova stringa uppercase letters 11. box.translate(-5, -10)

38 Implementing a Test Program Provide a new class Supply a main method Inside the main method, construct one or more objects Apply methods to the objects Display the results of the method calls

39 Importing Packages Don't forget to include appropriate packages: Java classes are grouped into packages Import library classes by specifying the package and class name: You don't need to import classes in the java.lang package such as String and System import java.awt.Rectangle;

40 Syntax 2.4: Importing a Class from a Package import packageName.ClassName; Example: import java.awt.Rectangle; Purpose: To import a class from a package for use in a program.

41 File MoveTester.java 01: import java.awt.Rectangle; 02: 03: public class MoveTester 04: { 05: public static void main(String[] args) 06: { 07: Rectangle box = new Rectangle(5, 10, 20, 30); 08: 09: // Move the rectangle 10: box.translate(15, 25); 11: 12: // Print information about the moved rectangle 13: System.out.println("After moving, the top-left corner is:"); 14: System.out.println(box.getX()); 15: System.out.println(box.getY()); 16: } 17: }

42 Self Check 20.The Random class is defined in the java.util package. What do you need to do in order to use that class in your program? 21.Why doesn't the MoveTester program print the width and height of the rectangle?

43 Answers 20.Add the statement import java.util.Random; at the top of your program 21.Because the translate method doesn't modify the shape of the rectangle

44 Documentazione sulle API API: Application Programming Interface Include la descrizione delle classi e dei relativi metodi della (fornitissima!) libreria Java

45 Documentazione sulle API

46 La API della classe Rectangle

47 Javadoc Method Summary

48 Documentazione del metodo translate

49 Self Check 22.Look at the API documentation of the String class. Which method would you use to obtain the string "hello, world!" from the string "Hello, World!" ? 23.In the API documentation of the String class, look at the description of the trim method. What is the result of applying trim to the string " Hello, Space ! " ? (Note the spaces in the string.)

50 Answers 22. toLowerCase 23. "Hello, Space !" –only the leading and trailing spaces are trimmed

51 Oggetti e riferimenti Un riferimento è una astrazione del puntatore ad un oggetto Loperatore new restituice un riferimento ad un nuovo oggetto Diverse variabili di tipo oggetto possono condividere lo stesso riferimento Rectangle box = new Rectangle(5, 10, 20, 30); Rectangle box2 = box; box2.translate(15, 25); Rectangle box = new Rectangle(); Continua…

52 Riferimenti ad oggetti Il comportamento delle variabili varia rispetto al loro tipo. In particolare le variabili di tipo primitivo si comportano in modo diverso rispetto alle variabili di tipo oggetto

53 Variabili di tipo primitivo Contengono valori del loro tipo

54 Variabili di tipo oggetto Contengono riferimenti ad oggetti, non oggetti

55 Assegnamento su tipi primitivi int luckyNumber = 13; int luckyNumber2 = luckyNumber; luckyNumber2 = 12; Due variabili, due valori distinti

56 Assegnamento su tipi oggetto Rectangle box = new Rectangle(5, 10, 20, 30); Rectangle box2 = box; box2.translate(15, 25); Continua…

57 Assegnamento su tipi oggetto Due variabili, stesso riferimento

58 Self Check 24.What is the effect of the assignment greeting2 = greeting ? 25.After calling greeting2.toUpperCase(), what are the contents of greeting and greeting2 ?

59 Answers 24.Now greeting and greeting2 both refer to the same String object. 25.Both variables still refer to the same string, and the string has not been modified. Recall that the toUpperCase method constructs a new string that contains uppercase characters, leaving the original string unchanged.


Scaricare ppt "Classi e Oggetti. Indice Classi, oggetti, metodi Documentazione e API Oggetti e riferimenti."

Presentazioni simili


Annunci Google