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

Documenti analoghi
Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Modulo 2: Strutture fondamentali della programmazione Java

Definizione di metodi

Le basi del linguaggio Java

C: primi elementi. Lezione 4

Java Gli array. Array

Fondamenti di Informatica

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

Varie: final, visibilità, parametri di ingresso

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

Definizione di metodi

Java Gli array. Array

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

Introduzione Programmazione Java

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

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Funzioni, Stack e Visibilità delle Variabili in C

I modificatori di accesso regolano essenzialmente la visibilità e l accesso ad un componente Java. Vediamone alcuni nel seguito: public

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione ad oggetti

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Funzioni, Stack e Visibilità delle Variabili in C

Corso sul linguaggio Java

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Corso di Informatica

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

Definizione di classi. Walter Didimo

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

C funzioni à scope di variabili

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

I Metodi. Fondamenti di Informatica A-K

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Istruzioni di selezione in Java 1

Strutture come parametri di funzioni

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

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Corso sul linguaggio Java

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

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Laboratorio di informatica Ingegneria meccanica

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

Fondamenti di Informatica T-1

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

Proprietà delle Classi e degli Oggetti in Java

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

Metodi statici. Dichiarazione e chiamata di metodi statici

Informatica Ereditarietà Java. Ereditarietà

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

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

Esercitazione n 2. Obiettivi

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Proprietà delle Classi e degli Oggetti in Java

Primi programmi in Java. Lezione II

FUNZIONI FUNZIONI COME COMPONENTI SW

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

Inizializzare oggetti

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Dichiarazione di una classe. Dichiarazione ereditarietà

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Fondamenti di Informatica T-1

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Unità A1 Funzioni MODULO Java 2

Progettazione Object-Oriented

Esercitazione n 2. Obiettivi

Le basi del linguaggio Java

Concetto di Funzione e Procedura METODI in Java

Classi ed Oggetti. Fondamenti di Informatica A-K

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Variabili e Metodi di classe Interfacce e Package File in Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Esame Laboratorio di Programmazione

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Oggetti e classi. Cos è un oggetto

Fondamenti di informatica T-1 (A K) Esercitazione 7: metodi, classi, oggetti

Programmazione orientata agli oggetti Classi astratte e interfacce

Introduzione a Matlab

Introduzione al linguaggio C Funzioni

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

METODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi

GESTIONE DEGLI ERRORI

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Elementi di Informatica A. A. 2016/2017

Istruzioni di selezione in Java 1

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

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

GESTIONE DEGLI ERRORI

COGNOME NOME MATRICOLA DATA

Transcript:

Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata sopra contiene solo il metodo main. Il metodo main viene dichiarato usando le parole chiavi, static e void che specificano alcune proprietà del metodo: indica che il metodo è pubblico ed è visibile; void indica che non ci sono valori di ritorno; static indica che il metodo è associato alla classe e non può essere richiamato dai singoli oggetti della classe. Dopo il nome del metodo, tra parentesi, sono indicati i parametri. Il metodo main possiede come parametro un array di stringhe (indicato con args[]) che corrisponde ai parametri passati alla riga di comando quando viene eseguita l applicazione. Nella classe domanda viene utilizzato il metodo main che è formato da una istruzione singola, precisamente una chiamata del metodo println(). Più precisamente nella OOP, si può dire che viene inviato all oggetto System.out il messaggio println. L oggetto System.out indica lo standard output a video. Livelli di visibilità Per specificare alcune caratteristiche delle classi, tra cui il livello di visibilità, bisogna inserire nella dichiarazione della classe una delle seguenti parole chiave (modificatori): abstract final Se una classe viene dichiarata, allora, può essere usata da tutte le classi, anche fuori dalla libreria dove è stata definita. class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); 1

Una classe dichiarata abstract, rappresenta una classe astratta, cioè una classe incompleta in cui alcuni metodi sono a loro volta astratti. Una classe definita astratta non può essere istanziata. Deve essere usata per creare le sottoclassi in cui vengono implementati i metodi astratti. abstact class Domanda Una classe dichiarata final non può originare sottoclassi. Final class Domanda Dichiarazione degli attributi Gli attributi corrispondono alle variabili dichiarate nel blocco di una classe. Vengono anche chiamati variabili di istanza perché ogni oggetto (istanza di una classe) possiede le proprie variabili nelle quali memorizzare il valore dei propri attributi. I seguenti esempi mostrano dichiarazioni di attributi con visibilità diverse: private int a; int b; protected int c; int d; Nella dichiarazione di un attributo si può aggiungere un livello di visibilità. I livelli di visibilità stabiliscono se l attributo è accessibile da altre classi, cioè se dall esterno della classe che lo contiene si può leggere o modificare il suo valore. I livelli di visibilità possono essere: private protected Con la visibilità l attributo è accessibile da qualsiasi altra classe. Al contrario, l uso di private permette di nascondere l attributo all interno della classe. Non può essere visto da nessun altra classe. In questo modo solo la classe che lo contiene può decidere di modificarne il valore. Un attributo dichiarato come protected è visto all esterno solo dalle classi che appartengono alla stessa libreria oppure alle sottoclassi della classe in cui è stato dichiarato l attributo. Se non viene specificato nessun livello di visibilità, l attributo è visibile solo dalle classi che appartengono alla stessa libreria. Information hiding 2

Se si vuole applicare il concetto di Information hiding (nascodere le informazioni), secondo cui devono essere tenuti nascosti i dettagli implementativi della classe, conviene dichiarare tutti gli attributi (variabili di istanza) con il livello private. Una classe che possiede attributi dichiarati come private, può comunque permettere la loro lettura e modifica definendo opportuni metodi. In aggiunta ai livelli di visibilità si può specificare per l attributo un altra caratteristica: static final La parola static indica un attributo legato alla classe, nel senso che, se vengono creati più oggetti di quella classe, esiste solo una copia dell attributo. Un attributo è invece dichiarato final se lo si vuole rendere una costante, in modo che possa assumere solo un unico valore. Solitamente gli attibuti final vengono anche dichiarati pubblici, perché non esiste il rischio che possano venire modificati dall esterno in modo indesiderato. final int DIECI=10; Dichiarazione dei metodi I metodi rappresentano la parte dinamica di una classe. Servono per implementare le operazioni che una classe può eseguire: i metodi possono modificare gli attributi, cioè lo stato interno di un oggetto oppure calcolare i valori che verranno restituiti al richiedente. Un metodo è caratterizzato dai diversi elementi che devono essere dichiarati: un nome, un blocco di istruzioni, un tipo di valore di ritorno, un elenco di parametri, un livello di visibilità. La dichiarazione dei metodi deve essere fatta all interno del blocco di una classe. La struttura generale di un metodo è la seguente: Gli elementi che sono obbligatori sono il tipo restituito e il nome del metodo, mentre il livello di visibilità e i parametri sono facoltativi e possono anche non essere presenti nella dichiarazione. Esempio: Scrivere la dichiarazione di un metodo che esegue la somma di due numeri passati come parametri. int somma (int a, int b) int sum; sum=a+b; return sum; Il nome del metodo per convenzione lo si fa iniziare con la lettera minuscola. Le variabili usate all interno del metodo sono chiamate variabili locali. Queste variabili, a differenza delle variabili di istanza, non 3

permettono di indicare il livello di visibilità perché sono locali ai metodi. Vengono create quando viene eseguito il metodo e vengono distrutte non appena il metodo termina l esecuzione. La loro durata corrisponde alla durata del metodo. Il blocco di istruzioni è identificato da una coppia di parentesi graffe, all interno delle quali vengono specificate le istruzioni, intese come dichiarazioni di variabili e istruzioni operative. Le variabili usate all interno dei metodi sono chiamate variabili locali. Queste variabili, a differenza delle variabili di istanza, non permettono il livello di visibilità perché sono locali ai metodi. Vengono create quando viene eseguito il metodo e vengono distrutte non appena il metodo termina l esecuzione. Non possono esistere le istruzioni all esterno dei blocchi definiti dai metodi. Per esempio la seguente dichiarazione di classe non è corretta a causa di un errore in fase di compilazione: class Coppia int a; int b; System.out.println( coppia = +a+, +b); La dichiarazione di classe corretta per visualizzare la coppia di numeri è al seguente: class Coppia int a; int b; void stampa() System.out.println( coppia = +a+, +b); Il tipo di valore di ritorno viene specificato nella dichiarazione del metodo e indica quale sarà il valore restituito al termine dell esecuzione del metodo. Il tipo può essere qualunque dei tipi di dato che sono usati in java e deve essere indicato prima del nome del metodo. Es: int totale() void accelera() Il primo metodo restiturà un valore di tipo int, mentre il secondo non restituirà alcun valore in quanto dichiarato con void. I metodi, dichiarati con void ricordano le procedure del linguaggio Pascal, mentre i metodi che restituiscono un valore sono associabili alle funzioni del Pascal. L elenco dei parametri usati da un metodo vengono elencati dopo il nome del metodo, all interno delle parentesi tonde. I parametri sono separati con la virgola. Se un metodo non presenta dei parametri, viene dichiarato usando solo le due parentesi tonde. In java, i parametri possono essere passati solo per valore. int somma (int a, int b) Ogni volta che viene richiamato un metodo, I parametric assumono il ruolo di variabili locali. Per quanto riguarda i tipi di riferimento, cioè gli array e gli oggetti, viene creata una copia del riferimento e non dell oggetto. L array quindi non viene duplicato, viene creata una variabile locale che contiene una 4

copia di riferimento dello stesso array. Ne segue che una modifica all interno del metodo, fatte usando il parametro, modifico anche l array originale. I livelli di visibilità di un metodo I livelli di visibilità dei metodi, come per gli attributi, specificano se il metodo può essere visto e richiamato da altri oggetti. I livelli di visibilità che possono essere specificati sono: private protected Questi tre livelli di visibilità applicati ai metodi, hanno lo stesso significato già visto per i livelli riferiti agli attributi: un metodo dichiarato può essere richiamato da qualunque altra classe; un metodo private non può essere richiamato esternamente alla classe in cui è dichiarato; un metodo dichiarato protected è visibile solo dalla classi che appartengono alla stessa libreria oppure dalle sottoclassi della classe in cui è dichiarato. Solitamente i metodi vengono dichiarati usando la parola chiave. Il livello private viene scelto quando il metodo è usato solo all interno della classe. Questo si verifica quando un operazione può essere scomposta in diverse azioni e ad ognuna viene associato un metodo privato. 5