Classi e Oggetti.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Oggetti Java.
Recupero debito quarto anno Primo incontro
PUNTATORI Introduzione
Università di camerino
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
Programmazione Ingegneria TLC
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Interfacce. Interfacce come strumento di progetto Scelta delle classi di un progetto Criteri di coesione e accoppiamento Interfacce e riuso di codice.
Appunti di Java Da: Concetti di informatica e Fondamenti di Java2 - 2Ed. - Cay Horstmann.pdf.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
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.
Lezione 2: Programmazione Orientata agli Oggetti
Oggetti e dati primitivi
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Progetto di applicazioni grafiche. Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base.
Programmazione ad Oggetti AA 2011– Contenuti del corso Modulo A Tecniche di programmazione Docente: Prof. Michele Bugliesi Modulo B Tecniche di.
Programmazione con Interfacce
Capitolo 2 Utilizzare oggetti
Capitolo 4 Tipi di dati fondamentali
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Argomenti della lezione
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
Programmazione in Java
Programmazione in Java Claudia Raibulet
Programmazione in Java Claudia Raibulet
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Java come linguaggio di programmazione
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Programmazione ad oggetti
Introduzione a Javascript
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Lezione IX Lu 10-Ott Convertire numeri in stringhe  Si puo’ usare l’operatore di concatenazione; funziona anche con i numeri:  In alternativa.
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.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
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.
Transcript della presentazione:

Classi e Oggetti

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

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;

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

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

Domanda L’espressione 12 = 12 è sensata?

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

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

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 dell’oggetto 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…

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

Due oggetti di tipo String Ogni oggetto ha una copie dei suoi dati, e concettualmente, una copia dei metodi

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

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

Metodi della classe String L’invocazione di un metodo su un oggetto è legale solo se il metodo è parte dell’interfaccia pubblica della classe a cui l’oggetto appartiene System.out.length(); // ERRORE

Domande Quale è la sequenza di istruzioni per calcolare la lunghezza della stringa “Arcobaleno”? Quale è la sequenza di istruzioni per stampare la versione uppercase della stringa "Hello, World!"? È legale l’invocazione fiume.println()? Perché o perché no?

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());

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: l’oggetto su cui il metodo viene invocato System.out.println(greeting) greeting.length() // no parametri espliciti System.out.println(greeting) Continua…

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

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" fiume.replace("issipp", "our") // restituisce la nuova stringa ("Missouri") Continua…

Parametri espliciti e impliciti

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…

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

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)

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

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

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

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

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

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

Costruttori Come nel caso dei metodi, il nome del costruttore può essere overloaded all’interno 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

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 all’oggetto costruito.

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

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

Metodi e side-effects In molti casi l’effetto dell’invocazione di un metodo è la modifica dello stato dell’oggetto su cui il metodo è invocato (il parametro implicito Metodi con side-effects vengono detti “mutators” box.translate(15, 25);

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

Domande Il metodo toUpperCase della classe string String è un mutator? 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)?

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

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

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;

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.

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: }

Self Check 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? Why doesn't the MoveTester program print the width and height of the rectangle?

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

Documentazione sulle API API: Application Programming Interface Include la descrizione delle classi e dei relativi metodi della (fornitissima!) libreria Java http://java.sun.com/j2se/1.5/docs/api/index.html http://java.sun.com/j2se/1.6/docs/api/index.html

Documentazione sulle API

La API della classe Rectangle

Javadoc Method Summary

Documentazione del metodo translate

Self Check 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!"? 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.)

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

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

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

Variabili di tipo primitivo Contengono valori del loro tipo

Variabili di tipo oggetto Contengono riferimenti ad oggetti, non oggetti

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

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

Assegnamento su tipi oggetto Due variabili, stesso riferimento

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

Answers Now greeting and greeting2 both refer to the same String object. 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.