Pagina Iniziale | Preferiti Comunity: Login | Registrati | Newsletter | Forum | Concorsi Newsgroup
Canali: Hardware | Software | Files | Webmaster | Cellulari | Shop     
Nel sito: News | Articoli | Files | Manuali | Consigli PC | Schede cellulari | Programmaz. | Hosting | Motori Ricerca | Glossario | Link
Servizi: Shopping | Forum | Crea un BLOG | Cartucce Compatibili | Hosting Aruba | Tool News |   Sponsor: Automazione Industriale
  Articoli

Recensioni
Consigli per PC


  News e files

Software
Telefonia
Internet
Tecnologia
Files e Download


  Manualistica

Guide HW/SW
Scripts ASP
Scripts HTML
Scripts Java
Scripts Delphi
Glossario


  Shopping

Hardware
Software e Giochi
Elettronica
Cinema e Film
Console e Accessori
Prodotti Ufficio
Formazione e Corsi

Tieniti aggiornato sul mondo della tecnologia con la nostra newsletter!
La tecnologia sulla tua
casella e-mail

[Info Newsletter]


Concessionaria Pubblicitaria


<< News Precedente [Fine Pagina] News Successiva >>
Il linguaggio Java: lez.3

Un articolo di: Fonte Esterna del 27/11/2002      Letture: 4558
Vai alla pagina:
 3 - Unità didattica 2.2)

10,63 Euro
Il linguaggio java da HOEPLI.it



  Buono sconto 4% su Toner e Cartucce agli utenti AZpoint. SU Iomiricarico.it!!

- Le basi della programmazione object oriented: classi ed oggetti

I concetti di classe ed oggetto, sono strettamente legati. Esistono infatti, delle definizioni ufficiali derivanti dalla teoria della programmazione orientata agli oggetti, che di seguito vi presentiamo:

Definizione 1:

una classe è un’astrazione per un gruppo di oggetti che condividono le stesse caratteristiche e le stesse funzionalità.

Definizione 2:

un oggetto è un’istanza (ovvero, una creazione fisica) di una classe.

A questo punto, il lettore più "matematico" sicuramente avrà le idee un po’ confuse. Effettivamente definire il concetto di classe tramite la definizione di oggetto, e il concetto di oggetto tramite la definizione di classe, non è di certo il massimo della chiarezza! Ma la situazione è molto meno complicata di quella che può sembrare. Passiamo subito ad un esempio:

    class Punto

          {

        int x;

        int y;

          }

 

Sopra abbiamo definito una classe Punto. Evidentemente, la funzione di questa classe, è quella di astrarre il concetto di punto (a due dimensioni), tramite la definizione delle sue coordinate su di un piano cartesiano. Potremmo salvare questo listato in un file chiamato "Punto.java", compilarlo, ma non mandarlo in esecuzione (otterremmo un’eccezione). Infatti, in questa classe, è assente il metodo main, e quindi non sarà eseguita nessun’azione inizialmente.

Il concetto di classe è servito per definire come è fatto un generico punto, ma in questo modo, abbiamo solo definito il concetto di punto, in realtà non abbiamo ancora nessun punto da poter utilizzare.

Nel contesto della programmazione ad oggetti, una classe dovrebbe limitarsi a definire che struttura avranno gli oggetti che da essa saranno istanziati. "Istanziare", come abbiamo già visto, è il termine object oriented che sta per "creare fisicamente", ed il risultato di un’istanza deve essere un oggetto.

Istanzieremo allora oggetti dalla classe Punto, nel modo seguente:

1 class Principale

2 {

3     public static void main(String args[])

4        {

5         Punto punto1;

6         punto1 = new Punto();

7         punto1.x = 2;

8         punto1.y = 6;

9         Punto punto2 = new Punto();

10        punto2.x = 0;

11               punto2.y = 1;

12        System.out.println(punto1.x);

13        System.out.println(punto1.y);

14                 System.out.println(punto2.x);

15                   System.out.println(punto2.y);

16      }

17 }

La classe Principale, dichiara alla riga 5, un oggetto di tipo Punto e lo chiama punto1 (così come nella classe Punto avevo dichiarato un intero e lo avevo chiamato x). Ma è solamente alla riga 6 che avviene l’istanza della classe Punto. La parola chiave new, di fatto, istanzia la classe Punto. Dalla riga 6 in poi possiamo utilizzare l’oggetto punto1. Precisamente, alle righe 7 e 8, settiamo le coordinate x ed y del punto1, rispettivamente ai valori interi 2 e 6. In pratica, sfruttando la definizione di punto che mi ha fornito la classe Punto, ho creato un oggetto di tipo Punto, che è individuato dal nome punto1. Notiamo anche, l’utilizzo dell’operatore "dot" (che in inglese significa "punto", ma nel senso del simbolo di punteggiatura ".") per accedere alle variabili x e y.

Alla riga 9, però, abbiamo dichiarato ed istanziato in una sola riga di codice un altro oggetto dalla classe Punto chiamandolo punto2. Abbiamo poi settato le coordinate di quest’ultimo rispettivamente a 0 e 1. Abbiamo infine stampato le coordinate di entrambi i punti.

Ora, le definizioni di classi ed oggetto dovrebbero risultare un po’ più chiare: la classe serve per definire come sarà fatto un oggetto, l’oggetto è la realizzazione fisica della classe. In questo esempio, abbiamo istanziato due oggetti diversi da una stessa classe. Entrambi questi oggetti sono punti, ma evidentemente sono punti diversi.

Questi concetti, come d’altronde tutti quelli relativi alla programmazione ad oggetti, sono già familiari a chiunque, giacchè derivanti dalla realtà che ci circonda. L’essere umano, per superare la complessità della realtà, raggruppa gli oggetti in classi. Per esempio nella nostra mente esiste il modello definito dalla classe Persona. Ma nella realtà esistono miliardi di oggetti di tipo Persona, ognuno dei quali ha caratteristiche uniche. Comprendere le definizioni 1 e 2 ora, non dovrebbe essere più un problema.

N.B.: tutti i concetti dell’object orientation, derivano dal mondo reale. Il concetto di classe nella programmazione, può essere paragonato al concetto di "idea" del mondo reale. Per esempio, volendo definire l’idea (astrazione) di un’auto,dovremmo parlare delle caratteristiche e delle funzionalità comuni ad ogni auto. Quindi, banalizzando, potremmo definire un’auto come"un mezzo di trasporto (quindi che si può muovere), con quattro ruote". Questa definizione può essere portata nella programmazione sotto forma di classe dichiarante come attributo un intero chiamato numeroRuote inizializzato a 4, ed un metodo che potremmo chiamare per semplicità muoviti(). Il lettore è rimandato alle prossime pagine per la comprensione e l’utilizzo del concetto di metodo.

class Auto

{

    int numeroRuote=4;

    void muoviti()

    {

    // implementazione del metodo…

    }

}

Ogni auto ha 4 ruote, e si muove. Una Ferrari Testarossa ed una Fiat Cinquecento, hanno entrambe 4 ruote e si muovono, anche se in modo diverso. La Testarossa e la Cinquecento sono da considerarsi oggetti della classe Auto, e nella realtà esisterebbero come oggetti concreti.

- Osservazione importante

Nel primo esempio abbiamo potuto commentare la definizione di due classi. Per la prima (la classe Punto), abbiamo sottolineato la sua caratteristica di essere un dato. E’ da considerarsi una parte strutturale dell’applicazione, e quindi svolge un ruolo essenziale nell’ambito compilativo. Nell’ambito esecutivo la classe Punto non ha un ruolo. Infatti, sono gli oggetti istanziati da essa che influenzano il flusso di lavoro del programma. Questo può definirsi come il caso standard. In un’applicazione object oriented, una classe dovrebbe limitarsi definire la struttura comune di un gruppo oggetti, non dovrebbe mai possedere né variabili né metodi. Infatti, la classe Punto, non possiede le variabili x e y, bensì, dichiarando le due variabili, definisce gli oggetti che da essa saranno istanziati, come possessori di quelle variabili. Notare che mai all’interno del codice è presente un’istruzione come:

    Punto.x

ovvero

    nomeClasse.nomeVariabile

(che tra l’altro produrrebbe un errore in compilazione) bensì:

    punto1.x

ovvero

    nomeOggetto.nomeVariabile

L’operatore ".", come spesso accade nell’informatica, è sinonimo di appartenenza, e quindi sono gli oggetti a possedere le variabili dichiarate nella classe (che tra l’altro verranno dette "variabili d’istanza"). Infatti, i due oggetti istanziati avevano valori diversi per x e y, il che significa che l’oggetto punto1 ha la sua variabile x e la sua variabile y, mentre l’oggetto punto2 ha la sua variabile x e la sua variabile y. Le variabili di punto1 sono assolutamente indipendenti dalle variabili di punto2. Giacché le classi non hanno membri (variabili e metodi), non eseguono codice e non hanno un ruolo nell’ambito esecutivo, e per quanto visto sono gli oggetti che sono i protagonisti assoluti di quest’ambito. Come spesso accade quando si approccia a Java, appena definita una nuova regola, subito si presenta l’eccezione (che se vogliamo dovrebbe confermarla!). Puntiamo infatti l’attenzione sulla classe Principale. Essa è invece una classe che esegue del codice contenuto all’interno dell’unico metodo main, che per quanto detto, è assunto per default come punto di partenza di un’applicazione Java. In qualche modo i creatori di Java, dovevano stabilire un modo per far partire il runtime di un programma. La scelta è stata fatta in base ad una questione pratica: un’applicazione scritta in C o C++, ha come punto di partenza per default un programma chiamante che si chiama proprio main. In Java i programmi chiamanti non esistono, ma esistono i metodi, ed in particolare i metodi statici, ovvero, dichiarati con un modificatore static. Questo modificatore molto potente sarà trattato in dettaglio nei prossimi moduli. Per ora limitiamoci a sapere che un membro dichiarato statico, appartiene alla classe, e tutti gli oggetti istanziati da essa condivideranno gli stessi membri. Giacché la classe Principale contiene un metodo, può eseguire del codice.

E’ bene che il lettore eviti di utilizzare il modificatore static nei primi tempi ed aspetti che "i tempi maturino", per non buttare via tempo prezioso. L’accenno fatto ad un argomento complesso come static, ha solamente lo scopo di chiarire un punto oscuro del nostro discorso.

 

Vai alla pagina:

Elenco delle pagine di "Il linguaggio Java: lez.3"

Introduzione al Modulo 3 - Pagina 1
Unità didattica 2.1) - Pagina 2
Unità didattica 2.2) - Pagina 3
Unità didattica 2.3) - Pagina 4
Unità didattica 2.4) - Pagina 5
Unità didattica 2.5) - Pagina 6
Unità didattica 2.6) - Pagina 7



[Indietro]    [Su]      [Home]      [Commenti]      [V. Stampabile]

Commenta questa notizia:
Non hai ancora fatto il
Login, puoi inserire commenti solo come anonimo.
ATTENZIONE: il tuo IP verrà memorizzato e mostrato a fianco del commento; con la pressione del tasto invia commento si esprime il consenso alla pubblicazione di tale informazione personale.
A discrezione dello staff, i commenti ritenuti non adatti od offensivi potranno essere rimossi. Nel caso di utilizzo di espressioni volgari od offensive il comportamento verrà segnalato al provider interessato.
Se non ti sei ancora registrato, cosa aspetti? Registrati subito.

Da ora puoi discutere dei problemi informatici anche sul nostro FORUM

Testo del commento:




  News correlate

 Corso Java @ilsoftware.it
 Il linguaggio Java: lez.10/10
 Il linguaggio Java: lez.9
 Il linguaggio Java: lez.8
 Il linguaggio Java: lez.7
 Il linguaggio Java: lez.6
 Il linguaggio Java: lez.5
 Il linguaggio Java: lez.4


Domini Email SpazioWeb
a partire da € 9.99+IVA annui


  Ultime dal Forum

ciao forum!!!
Offertissima
per chi ha tanti contatti
Discount di codici!!!Prezzi da urlo! :o
DROP SHIP-DROP SHIPPING ITALIA
PTcassh nuova ptc paga entro 5 giorni
Il Migliore
Migliori PTC
Guadagnare fino a $0.02 guardando pubblicità

Comunicazioni / Note Legali / Staff / Collabora / Pubblicità / Contatti


Copyright ZETA TECH S.r.l. (P.IVA : 02387250307), tutti i diritti riservati Utenti Connessi: 608

Programmi


Pagina creata in 0.27sec. Powered by Zeta Tech S.r.l.

Stats v0.1 (0.016sec.)