Linguaggio Java – parte 4

Eravamo rimasti con la domanda: che differenza c’è tra oggetto e classe? Bene,ora cercheremo di darci una risposta 🙂
Con il termine di classe si intende la descrizione astratta di un insieme di oggetti:
Le variabili e le funzioni membro specificate nella classe sono quelle che poi potranno essere richiamate utilizzando l’oggetto
Ma come si definisce una classe? Ogni linguaggio di programmazione fornisce i suoi costrutti perdefinire una classe.
Nel JAVA si usa la parola riservata class:
class Guerriero
{

}

Una classe deve poter essere utilizzata in qualunque parte del progetto, ovvero deve essere public (pubblica):
Nella dichiarazione della classe la parole public o private specificano il campo di visibilità della classe.
– una classe public è visibile ed utilizzabile da tutti;
– una classe private è invece utilizzabile solamente all’interno del file in cui è definita.

classes-objects

In uno stesso file possono essere definite più di una classe, l’importante è che se si vuole rendere utilizzabile una di esse deve essere public ed avere il nome del file:
public class Guerriero
{

}

Quando progettiamo una classe, noi decidiamo quali metodi e quali variabili essa contiene le variabili e le funzioni definite in una classe saranno poi utilizzate dall’esterno della classe dal programmatore (con le debite limitazioni).
Questo modo di pensare al design di una classe come ad un processo di creazione di “elementi” visibili dal programmatore, ci porta a vedere le variabili e i metodi di una classe come una interfaccia della classe.
Quando progettiamo una classe è necessario individuare ciò che sarà possibile utilizzare e cosa invece è solamente necessario al corretto funzionamento della classe.
Esistono perciò differenti tipi di elementi membro di una classe tra cui citiamo:
– public, la cui visibilità è totale: le variabili così sono leggibili e modificabili e le funzioni sono invocabili da chiunque;
– private, la cui visibilità è ristretta alla classe proprietaria.
Una volta dichiarati i membri di una classe, è possibile accedere ad essi utilizzando il carattere “.”:
[Nome_Oggetto].[Nome_Membro]

Normalmente è utile definire all’interno di una classe delle costanti (dati che rimangono invariati nelle istanze della classe)
Una costante viene definita aggiungendo la parola riservata final alla dichiarazione della variabile.
Il valore di una variabile definita come final non può più essere modificato. Ovviamente, essendo una dichiarazione di costante, la
dichiarazione richiede l’inizializzazione della variabile:

public class Guerriero
{
private final int NUMERO_MANI = 2;

//
public int Vita;
public int Mana;
public int DannoFisico;
public int DannoMagico;

//

//
}

Oltre alle variabili membro e costanti, è possibile specificare funzioni membro per una classe.
La dichiarazione di una funzione membro ha la seguente sintassi:

public/private [tipo_di_dato_restituito] [nome_funzione]([lista_parametri])
{

java-class-image

Metodi: Parametri
I metodi di una classe sono semplicemente “normali” funzioni assegnate ad una classe. Come tali, i metodi utilizzano i parametri per “comunicare” con l’esterno. I parametri sono variabili in input e locali al metodo e spariscono una volta terminata l’esecuzione del metodo stesso.

Metodi: Overloading
Normalmente capita di dover dichiarare più funzioni con lo stesso nome e con la stessa funzionalità che differiscono solamente dal numero o dal tipo dei parametri in ingresso.
In questi casi si parla di overloading, cioè sovraccarico del metodo
Il metodo giusto infatti viene risolto:
– dal compilatore (a tempo di compilazione quindi) nel caso sia possibile farlo (linking statico);
– dalla JVM (a tempo di esecuzione) nel caso non sia possibile stabilire in compilazione il tipo di oggetto (vedremo più avanti nei casi di interfaccia ed ereditarietà) (linking dinamico)

OVERLOADING

Metodi: Costruttori
Quando un oggetto è istanziato, si dice che viene costruito.
Il processo di costruzione avviene nel seguente modo:
Il compilatore quando trova la parola riservata new invoca automaticamente un metodo particolare dell’oggetto, il costruttore.
Tale metodo è definito secondo alcune regole ben precise:
è un membro public
ha lo stesso nome della classe
non restituisce alcun valore (void)
Quando costruiamo un oggetto possiamo aver bisogno di passare dei parametri per la costruzione (parametri di costruzioni visti in precedenza):in questo caso nella definizione del costruttore è necessario specificare la lista di parametri

N.B.: Nel caso non venga esplicitamente fornito dal programmatore, il compilatore utilizza un costruttore di default il quale non ha alcun parametro di costruzione.

Bene,abbiamo capito come strutturare una classe e qual’è la differenza con gli oggetti. Se c’è qualche domanda/richiesta per la prossima lezione,scrivetelo pure 🙂 Alla prossima puntata!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...