Programmazione Java Struttura di una classe, Costruttore, Riferimento this
|
|
|
- Annalisa Bartoli
- 9 anni fa
- Visualizzazioni
Transcript
1 Programmazione Java Struttura di una classe, Costruttore, Riferimento this
2 Roadmap > Struttura di una classe > Costruttore > Riferimento this > Inizializzazione di dati static
3 Struttura di una classe [ public abstract final ] class <nome della classe> [extends Tipo] [implements ListaTipi] { [<dichiarazione di attributi>] [<dichiarazione dei costruttori>] [<dichiarazione dei metodi>] Corpo della classe
4 ( 2 ) Struttura di una classe Esempio public class Point { private int x, y; public Point(int dx, int dy) { x = dx; y = dy; public void move(int dx, int dy) { x += dx; y += dy;
5 ( 3 ) Struttura di una classe Attributi <modificatore> <tipo> <identificatore> [ = <inizializzazione> ] Esempio public class Point { private int x; private int y = 100;
6 ( 4 ) Struttura di una classe Metodo <modificatore> <tipo ritorno> <identificatore> ([lista parametri]) { Esempio [<istruzioni>] public class Point { private int x, y; public void move(int dx, int dy) { x += dx; y += dy;
7 ( 5 ) Struttura di una classe Costruttore <modificatore> <nome della classe> ([<lista parametri>]) { [<istruzioni>] Esempio E possibile ometterlo, in tal caso verrà considerato il modificatore package public class Persona { private String nome; public Persona(String n) { nome = n;
8 ( 6 ) Struttura di una classe Accesso ai membri di un oggetto <oggetto>.<membro> Il membro può essere sia un attributo che un metodo Esempi p.move(50,50); p.x = 100;
9 Inizializzazione ed eliminazione In linguaggi come il C molti errori si verificano quando il programmatore dimentica di inizializzare una variabile Anche l eliminazione può comportare problemi: è facile dimenticarsi di un elemento quando si smette di utilizzarlo» Le risorse utilizzate da quell elemento vengono trattenute ed è facile che si esauriscano C++ ha introdotto il concetto di costruttore, un metodo speciale che viene automaticamente chiamato quando si crea un oggetto Anche Java ha adottato il costruttore, in più ha un garbage collector per gestire l eliminazione degli oggetti non più utilizzati
10 Overloading Si ha overloading quando una classe contiene due o più metodi (statici e non) con» Stesso nome» Diversa segnatura Numero di parametri diversi Stesso numero di parametri ma tipo diverso in almeno uno Tipo di ritorno non considerato Esempio public void print(int i) public void print(float f) public void print(string s) public void print(string s, int x) public void print(int x, String s)
11 Overloading: distinguere i metodi ridefiniti Ciascun metodo ridefinito deve avere una lista univoca di tipi degli argomenti» Persino le differenze nell ordine degli argomenti sono sufficienti per distinguere fra due metodi (anche se normalmente si preferisce non seguire questo approccio, perche genera codice difficile da gestire) Esempio» vedere OverloadingOrder.java
12 Overloading: ridefinizione con tipi di dato primitivi Un tipo di dato primitivo può essere automaticamente promosso da un tipo minore a uno maggiore Cosa accade quando un tipo di dato primitivo viene passato a un metodo ridefinito?» vedere PrimitiveOverloading.java» Nell esempio il valore costante 5 viene trattato come un int, per cui se è disponibile un metodo ridefinito che richiede un parametro di tipo int esso viene utilizzato» In tutti gli altri casi, se si ha un tipo di dato che è più piccolo del tipo dell argomento del metodo, quel tipo di dato viene promosso» Char produce un effetto leggermente diverso, se non trova un esatta corrispondenza, viene promosso a int
13 Overloading: ridefinizione con tipi di dato primitivi Cosa accade se il tipo dell argomento è più grande del tipo dell argomento previsto dal metodo ridefinito?» vedere Demotion.java» Occorre effettuare un cast nel tipo necessario utilizzando il tipo tra parentesi, altrimenti il compilatore genererà un messaggio di errore
14 ( 1 ) Costruttore Viene utilizzato per creare un oggetto Sintassi [ public private protected ] nomeclasse (lista parametri) { body Viene fornito un costruttore di default qualora non se ne dichiari uno» Non prende argomenti e non ha corpo» Se è presente un costruttore quello di default scompare E possibile effettuare l overloading anche dei costruttori Esempio public class Point { public Point(int x, int y) { (vedere DefaultConstructor.java, Overloading.java)
15 ( 2 ) Costruttore Point origin_one = new Point(23, 94); Rectangle rect_one = new Rectangle(origin_one, 100, 200); Rectangle rect_two = new Rectangle(50, 100); Dichiarazione» E necessario dichiarare una variabile con un tipo che rappresenta l oggetto Istanziazione» Operatore new crea un nuovo oggetto» Viene allocato nell heap dello spazio per contenere l oggetto» Se non c è spazio sufficiente viene lanciata eccezione OutOfMemoryError» Tutte le variabili di istanza vengono inizializzate al loro valore di default
16 ( 3 ) Costruttore Inizializzazione 1. Vengono assegnati i valori ai parametri formali del ( sono costruttore (se ce ne 2. Vengono eseguiti le inizializzazioni esplicite delle variabili di istanza come appaiono nel codice sorgente 3. Vengono eseguiti gli inizializzatori di istanza 4. Viene eseguito il corpo del costruttore Se il corpo inizia con l invocazione di un altro costruttore (this) si ritorna al passo 1 Altrimenti viene invocato il costruttore (ripetendo i passi) del padre (super) fino ad arrivare ad Object (vedi ConstructorOrder.java, Flower.java, ConstructorOrder2.java, ConstructorOrder3.java)
17 ( 4 ) Costruttore Valore di default per le variabili di istanza (valido ( classe anche per quelle di» byte: (byte)0» short: (short)0» int: 0» float: 0F» double: 0» char: \u0000» boolean: false» reference: null
18 ( 5 ) Costruttore class Point { int x = 100; int y = 100; { x = 200; y = 200; Point() { x = 300; y = 300; Point(int dx, int dy) { this(); x = dx; y = dy;
19 ( 6 ) Costruttore class ColoredPoint extends Point { int color = 0xFF00FF; class ConstructorPoint{ public static void main(string[] args) { ColoredPoint cp = new ColoredPoint(); System.out.println(cp.color); (vedi ConstructorPoint.java)
20 Ordine di inizializzazione All interno di una classe, l ordine di inizializzazione è determinato dall ordine in cui le variabili sono definite nella classe Le definizioni delle variabili possono essere sparpagliate tra le definizioni dei metodi, ma vengono sempre inizializzate prima che venga chiamato un metodo perfino il costruttore (Vedere OrderOfInitialization.java)
21 ( 1 ) Riferimento this Indica il riferimento all oggetto stesso Viene utilizzato nei seguenti ambiti» Per invocare all interno di un costruttore un altro» All interno di metodi e/o costruttori per riferirsi a variabili di istanza e/o metodi (vedere Leaf.java)
22 ( 2 ) Riferimento this public class Point { int x, y; public Point(int x, int y) { this.x = x; this.y = y; public Point(Point p) { this.x = p.x; this.y = p.y; public void move(int x, int y) { this.x = x; this.y = y; public Point clonepoint() { return new Point(this);
23 ( 3 ) Riferimento this public class Test { public static void main(string[] args) { Point p = new Point(100, 100); Point p1 = p.clonepoint(); p.move(200, 200); System.out.println( p.x: + p.x); System.out.println( p.y: + p.y); System.out.println( p1.x: + p1.x); System.out.println( p1.y: + p1.y); (Vedere This2.java)
24 this and static Non si può usare this per invocare un particolare metodo statico Non si possono chiamare metodi non static all interno di metodi static (anche se si può fare il contrario) Con un metodo static non si invia un messaggio a un oggetto, poichè non c e this (Vedere Static.java)
25 Esercizio Date le classi class Point { int x; int y; Point (int x1, int y1) { x = x1; y = y1; double distancetoorigin() { return sqrt(x * x + y * y); class Line { Point pt1; Point pt2; Line (Point p, Point q){ pt1 = p; pt2 = q; scrivere per Point e Line un metodo equals tale che pt1.equals(pt2) ritorna true se i due punti coincidono, l1.equals(l2) ritorna true se le due linee coincidono
R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone
Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Fondamenti di Informatica I
Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
Le basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Programmazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini
Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Proprietà delle Classi e degli Oggetti in Java
Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
Eredità e Polimorfismo in Java
Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello
Oggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
Il linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
Programmazione 1 A.A. 2015/2016
Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
Uso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
Fondamenti di Informatica T-1. Costruttori Ereditarietà
Costruttori Ereditarietà 2 Costruttori Si occupano della creazione e dell'allocazione in memoria degli oggetti. public class Persona{ //Variabili di istanza private String nome; private String cognome;
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
INTRODUZIONE INTRODUZIONE JAVA JAVA
INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti
Le variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
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
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 String Una stringa Java rappresenta uno specifico valore e come
Definizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
Programmazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
LABORATORIO DI INFORMATICA: PROGRAMMAZIONE
LABORATORIO DI INFORMATICA: PROGRAMMAZIONE DOMANDE PER LA SECONDA PROVA IN LABORATORIO Problema 1. È il software (ovvero le istruzioni che ordinano al calcolatore di eseguire azioni e di prendere decisioni)
Gerarchia di classi Java 1
Costruttori della sottoclasse Gerarchia di classi Java Parte 2 Corso di laurea in Comunicazione digitale I costruttori non vengono ereditati, non essendo membri di classe Vengono definiti esplicitamente
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
Il linguaggio C# Struct e Classi
Tecniche di Programmazione avanzata Corso di Laurea Specialistica in Ingegneria Telematica Università Kore Enna A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu [email protected]
Introduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
Lezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
Programmazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Linguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona.
Esercizio 3 Scrivere un programma con i seguenti requisiti. Utilizzare una classe Persona che dichiara le variabili nome, cognome, età. Si dichiari inoltre un metodo dettagli() che restituisce in una stringa
Corso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione, lezione 18 19 gennaio
Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica
Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti
Java Native Interface Appunti
Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per
Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
Informatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA1 1.1 Programmazione base 1 Prerequisiti Saper scrivere algoritmi elementari Tecniche elementari di sviluppo di una applicazione Modalità a riga di comando Utilizzo
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Fondamenti di Informatica T1 Mappe
Fondamenti di Informatica T1 Mappe Tutor Melissa Licciardello [email protected] Melissa Licciardello Fondamenti di Informatica T1 1 / 16 Mappe Matrice N x 2 : Gli elementi della prima colonna,
Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):
Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Variabili statiche Se una variabile di una classe ha il
