Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi



Documenti analoghi
Utilizzo delle classi

Stringhe. Walter Didimo

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Definizione di metodi

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Capitolo 2 Utilizzare oggetti

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 15 Definizione di metodi. Carla Limongelli Maggio Definizione di metodi 1

Definizione di metodi

Questi lucidi provengono dal capitolo 2 di:

I L IN I GU G AGG G I G O

JAVA IL LINGUAGGIO. Ogni valore nel linguaggio ha un tipo Ogni variabile deve essere dichiarata ed associata ad un tipo:

Capitolo 2. Protocolli e contratti. c 2005 Pearson Education Italia Capitolo 2-1 / 82

Impariamo a programmare in. Lezione 5

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Alberti, DICo Università degli Studi di MIlano 1

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Usare gli Oggetti. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Java Le stringhe. Stringhe

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Java Le stringhe. Stringhe

Il tipo di dati stringa

Fondamenti di Informatica T-1

La definizione di una classe. Definizione di classi. Un esempio. La definizione di un metodo. La definizione di un costruttore

Oggetti e dati primitivi 1

Definizione di classi

Oggetti. Oggetti e occultamento delle informazioni. Definire oggetti. Oggetti. Definire oggetti la sintassi. Convenzione sugli identificatori

Aritmetica. Progetto dei programmi. Aritmetica. Un esempio: la raccolta dei pedaggi

La definizione di un metodo. Definizione di classi. La definizione di una classe. La definizione di un costruttore. Utilizzare la classe Laugher1

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Progetto dei programmi. Aritmetica. Aritmetica. Descrizione del problema

Futures Esempi di codice

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

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Retribuzione. Esecuzione condizionale. Retribuzione. L istruzione if. Esempio: Retribuzione dei dipendenti. Retribuzione. Scenario d esempio

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Introduzione all uso degli oggetti in Java (parte I) Walter Didimo

Definizione di classi. Walter Didimo

Impariamo a programmare in. Lezione 4

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

Alberti, DICo Università degli Studi di MIlano 1

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

Alberti, DICo Università degli Studi di MIlano 1

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Fondamenti di Informatica T-1

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

Fondamenti di Informatica T-1

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Uguaglianza e copia di oggetti

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio

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

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

Java: Definire Classi e Creare Oggetti

Stringhe ed Array. Fondamenti di Informatica A-K

Fondamenti di Informatica T-1

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Capitolo 2. Utilizzare oggetti

Stringhe e Array. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

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

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

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

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo

Programmazione ad oggetti

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Variabili e Metodi di classe Interfacce e Package File in Java

Modulo 2: Strutture fondamentali della programmazione Java

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Introduzione a Java (seconda parte)

Uso di metodi statici. Walter Didimo

Programmazione. Sapete già che. Focalizzazione del corso. Programmi e linguaggi. Dal C(++) a Java in 20 minuti... Alcuni linguaggi famosi

Java Gli array. Array

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

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

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

Corso sul linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Fondamenti di Informatica T1 Stringhe

Puntatori e array. Violetta Lonati

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

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Transcript:

Uso degli oggetti Uso di oggetti predefiniti attraverso l'invio di messaggi. Il concetto di metodo; argomenti e restituzione di valori; segnatura e prototipo di un metodo. Il concetto di overloading. Le variabili di riferimento, dichiarazione ed assegnamento. Le classi PrintSream e String. 2 Un programma Java è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi

3 Programmare in Java: Definire classi Istanziare oggetti Percorso formativo Imparare ad usare oggetti predefiniti Istanze di classi predefinite; invio di messaggi Imparare ad istanziare nuovi oggetti da classi preesistenti Imparare a definire nuove classi OGGI 4 Messaggi e metodi Il comportamento di un oggetto è attivato dalla ricezione di un messaggio Le classi determinano il comportamento degli oggetti definendo quali sono i messaggi leciti Le classi determinano i messaggi leciti mediante la definizione di metodi: Una sezione di codice all interno di una classe che implementa un particolare comportamento Sono individuati da un nome del metodo

5 Forma di un messaggio nome-del del-metodo(argomenti) Un messaggio deve specificare Il nome del metodo da invocare il comportamento desiderato Gli eventuali argomenti altre informazioni System.out.println ( Benvenuti al corso ) Nome del metodo Argomenti 6 I metodi di PrintStream Conoscere una classe equivale a conoscerne i metodi La classe: PrintStream Nome println println print Argomenti stringa di caratteri nessuno stringa di caratteri

7 Esempi System.out.println( Benvenuti al corso ); System.out.println(); System.out.print( Questa frase va su ); System.out.print( una sola linea ); 8 Classi, metodi e oggetti Classe Definisce il comportamento degli oggetti che da essa saranno istanziati Una collezione di metodi Oggetto Istanza di una classe Gli oggetti di una stessa classe condividono gli stessi metodi

9 Classi, metodi e oggetti Esempio: Ci possono essere diversi oggetti istanziati dalla classe PrintStream Tutti avranno i metodi println() println(stringa) print(stringa) 10 La segnatura di un metodo println( salve ) e println() sono lo stesso metodo? Due metodi differenti Stesso nome Argomenti diversi Comportamento diverso La segnatura (signature)di un metodo: Il nome del metodo + la descrizione degli argomenti

11 Overloading I metodi sono individuati dalla segnatura, e non solo dal nome Overloading: la possibilità di avere una classe che definisca metodi differenti con lo stesso nome println è un metodo overloaded della classe PrintStream 12 Esempio Visualizzare le seguenti due linee: 1 2 System.out.println( 1 ); System.out.println( 2 ); System.out.print( 1 ); System.out.println(); System.out.println( 2 ); System.out.println( 1 ); System.out.print( 2 ); System.out.println();...? 1 2 Riprovare con le linee 12 34

13 Invio di un messaggio (I) statement1; statement2; referencetox.methoda(); statement4; Codice OggettoX methoda methodb methodc Ordine di esecuzione sequenziale Fino a raggiungere una istruzione di invio di un messaggio 14 Invio di un messaggio (II) statement1; statement2; referencetox.methoda(); statement4; Codice: sender OggettoX: receiver methoda methodb methodc L esecuzione del sender è sospesa

15 Invio di un messaggio (III) statement1; statement2; referencetox.methoda(); statement4; Codice: sender methoda() OggettoX: receiver methoda methodb methodc Il messaggio è inviato al receiver 16 Invio di un messaggio (IV) statement1; statement2; referencetox.methoda(); statement4; Codice: sender methoda() OggettoX: receiver methoda methodb methodc L arrivo del messaggio provoca l invocazione di uno dei metodi del receiver

17 Invio di un messaggio (V) statement1; statement2; referencetox.methoda(); statement4; Codice: sender OggettoX: receiver methoda methodb methodc Il codice relativo al metodo invocato viene eseguito Questo può eventualmente provocare l invio di altri messaggi ad altri oggetti 18 Invio di un messaggio (VI) statement1; statement2; referencetox.methoda(); statement4; Codice: sender OggettoX: receiver methoda methodb methodc Quando l esecuzione del metodo invocato termina Il controllo (ed eventuali informazioni aggiuntive) vengono restituite al sender (return) Riprende l ordine sequenziale

19 La classe String Una classe predefinita Modella una qualunque sequenza di caratteri Referenze ad oggetti String Sequenze di caratteri fra doppi apici Benvenuti al corso 20 String: referenze ed oggetti System.out.println( Hi! ); System.out.println( BYE! ); a reference Modella Hi! a reference Modella BYE! Hi! e BYE! sono due riferimenti a oggetti String che modellano le sequenze di caratteri Hi! e BYE!

Riferimenti a stringhe esempi di utilizzo Come argomento di un messaggio Uno dei metodi println di PrintStream ha un argomento che è un riferimento ad un oggetto stringa println(riferimento-ad-un-oggetto-string) 21 System.out.println( Hi! ); a reference Modella Hi! Riferimenti a stringhe esempi di utilizzo 22 Invio di un messaggio ad una stringa La classe String offre molti metodi Un esempio: touppercase ibm.touppercase() ibm reference ibm receiver touppercase() message

23 Il metodo touppercase Crea un nuovo oggetto String Tutti i caratteri sono in maiuscolo Restituisce (returns) un riferimento (reference) al nuovo oggetto receiver touppercase() reference ibm IBM nuovo oggetto message Lespressione ibm.touppercase Si riferisce al nuovo oggetto 24 Segnatura e prototipo class method returns arguments PrintStream println nothing none PrintStream println nothing ref. to String object PrintStream print nothing ref. to String object String touppercase ref. to String object none Segnatura: nome + argomenti ricevuti Prototipo: segnatura + valore restituito

25 Variabili di riferimento Variabile: un identificatore a cui si può attribuire un valore si supponga che x valga 5 posto y pari al valore della temperatura esterna Radice: variabilità nel tempo Variabile di riferimento (reference variable) Una variabile il cui valore è un riferimento ad un oggetto 26 Dichiarazione Le variabili di riferimento devono essere dichiarate String greeting; PrintStream output; In generale: classe identificatore

27 Assegnazione E necessario assegnare un valore ad una variabile di riferimento prima di poterla utilizzare greeting = Ciao ; greeting = System.out; Il tipo del valore deve combaciare con il tipo con cui si è dichiarata una variabile (type matching) In generale: variabile = valore; Il valore è copiato nella variabile Dichiarazione ed assegnazione 28 String greeting; greeting = ciao ; Ciao greeting ciao oggetto String String greeting; greeting = ciao ; Ciao greeting ciao oggetto String

29 Esempio (I) String s1, s2; PrintStream ps1, ps2; s1 = hello ; s2 = goodbye ; s1 = s2; ps2 = System.out; ps1 = ps2; ps1.println(s1); // cosa succede? 30 Esempio (II) String greeting; greeting = hey! ; String biggreeting; biggreeting = greeting.touppercase(); System.out.println(bigGreeting); System.out.println(bigGreeting); System.out.println(bigGreeting); al posto di System.out.println(greeting.toUpperCase()); System.out.println(greeting.toUpperCase()); System.out.println(greeting.toUpperCase());

Assegnazione non è uguaglianza 31 String t; t t = Cash ; t si riferisce a Cash oggetto String t = Credit ; Cash oggetto String t si riferisce a Credit oggetto String 32 Variabili e oggetti Una variabile di riferimento si riferisce ad un solo oggetto alla volta Un oggetto può essere referenziato da più variabili simultaneamente String s, t; s= Pippo ; t=s; s t Pippo

33 Ruoli delle variabili Salvataggio o recupero a seconda della posizione String s, t; s = Pippo ; // s, variabile; Pippo, valore t = s; // t, variabile; s, valore Indipendenza: s= Pluto ; //cambia il valore di s NON di t Dichiarazione (varianti) 34 Più variabili sulla stessa linea String x,y,z; Con inizializzazione String nome= Mickey, cognome= Mouse ; Possono essere distribuite nel codice ma devono precedere l uso

35 Esempio (I) import java.io.*; class Esempio { public static void main(string arg[]) { String greeting; String biggreeting; greeting = "Yo, World"; biggreeting = greeting.touppercase(); System.out.println(greeting); System.out.println(bigGreeting); } } 36 Esempio (II) import java.io.*; class Esempio { public static void main(string arg[]) { String greeting; greeting = "Yo, World"; String biggreeting; biggreeting = greeting.touppercase(); System.out.println(greeting); System.out.println(bigGreeting); } }

37 Esempio (III) import java.io.*; class Esempio { public static void main(string arg[]) { String greeting = "Yo, World"; String biggreeting = greeting.touppercase(); System.out.println(greeting); System.out.println(bigGreeting); } } Ancora sulle stringhe Prototipi di metodi della classe String method returns arguments touppercase ref. String object none tolowercase ref. String object none length a number none trim ref. String object none concat ref. String object ref. String object substring ref. String object number substring ref. String object two numbers 38

39 Posizioni nelle stringhe Le posizioni dei caratteri in una stringa sono numerate a partire da 0 H a m b u r g e r 0 1 2 3 4 5 6 7 8 Stringhe e sottostringhe String big = hamburger ; String small = big.substring(3,7); String medium = big.substring(3); String bigincaps = big.touppercase(); String order = big.concat( with onions ); 40 Esempio import java.io.*; class Esempio { public static void main(string arg[]) { String first = "John"; String middle = "Fitzgerald"; String last = "Kennedy"; String initials; String firstinit, middleinit, lastinit; firstinit = first.substring(0,1); middleinit = middle.substring(0,1); lastinit = last.substring(0,1); initials = firstinit.concat(middleinit); initials = initials.concat(lastinit); System.out.println(initials); } }

41 Proprietà delle stringhe Immutabilità: una volta creato un oggetto String NON può cambiare Es: l invio di un messaggio touppercase comporta la creazione di un nuovo oggetto String Stringa vuota Lunghezza 0 Nessun carattere Reference: 42 Oggetti intelligenti ed utili Notare che per trovare una sottostringa di una data stringa inviamo un messaggio alla stringa E la stringa a trovare la sottostringa per noi Progettare le classi in modo da rendere gli oggetti utili, o intelligenti, in modo che possa su richiesta eseguire operazioni I metodi touppercase e subtring dimostrano che i progettisti Java hanno seguito tale principio

43 Dato Meccanismi String w, x, y, z, s; w = ab ; x = cd ; y = ef ; z = gh ; Assegnare ad s la concatenazione delle stringhe referenziate da w, x, y, z abcdefgh 44 Cascata di messaggi s=w.concat(x).concat(y).concat(z) Il mesaggio concat(x) è inviato a w L espressione w.concat(x) si riferisce alla stringa risultante w.concat(x) abcd Il mesaggio concat(y) è inviato alla nuova stringa abcd L espressione w.concat(x).concat(y) si riferisce alla stringa risultante w.concat(x).concat(y) abcdef Il mesaggio concat(z) è inviato alla nuova stringa abcdef L espressione w.concat(x).concat(y).concat(z) si riferisce alla stringa risultante w.concat(x).concat(y).concat(z) abcdefgh

45 Cascata di messaggi s=w.concat(x).concat(y).concat(z) E il processo di invio di un messaggio ad un oggetto per creare un nuovo oggetto, che a sua volta riceve un messaggio per creare un nuovo oggetto, che 46 Composizione di messaggi s=w.concat(x.concat(y.concat(z))) Il messaggio concat(z) è inviato a y y.concat(z) si riferisce alla stringa risultante y.concat(z) efgh Un messaggio concat con tale nuovo oggetto come argomento è inviato a x x.concat(y.concat(z)) si riferisce alla stringa risultante x.concat(y.concat(z)) cdefgh Un messaggio concat con tale nuovo oggetto come argomento è inviato a w w,.concat(x.concat(y.concat(z))) si riferisce alla stringa risultante w,.concat(x.concat(y.concat(z))) abcdefgh