Differenze tra le versioni di "Java/Classi e oggetti"

nessun oggetto della modifica
m (Bot: accenti)
{{java}}
 
Vediamo uno dei componenti fondamentali dei programmi in javaJava, la '''classe'''.
 
== Classe ==
 
Una '''classe''' è contenitore, un insiemetipo di elementidato creato dal programmatore., ed è l'essenza della programmazione ad oggetti.
<br/>
Con l'evolversi dell'informatica e il crescere della complessità delle applicazioni, i programmatori hanno trovato sempre più difficile trovare gli errori nei codici già scritti, riutilizzare codice scritto per altri programmi e modificare funzionalità già esistenti senza effetti collaterali imprevedibili.
Classe ha un significato riconducibile alla parola "programma", la classe è la struttura stessa di un programma in java.
La soluzione a questi problemi è rendere la programmazione più '''astratta''' e '''modulare'''. Se un codice è diviso in parti ben precise che si occupano di aspetti specifici dell'applicazione e queste parti presentano all'esterno delle interfacce che specificano quali operazioni possono compiere, poi è più facile per il programmatore individuare un errore o riutilizzare delle funzionalità, proprio perché circoscriverà la manipolazione alla parte che gli serve.
 
Immaginiamo di dover fare un programma per gestire gli stipendi: creeremo un vettore di stringhe per il nome, un altro per il cognome e un vettore di int per gli stipendi. Dopo aver creato i codici che chiedono i dati e li inseriscono o li mostrano a richiesta il programma funziona e siamo contenti.
Dopo qualche anno, però, l'azienda apre una filiale negli USA. Dobbiamo quindi riadattare il programma perché gestisca anche i dollari.
 
Creiamo un vettore stringa che contenga l'indicazione della valuta e riadattiamo tutto il programma per gestirla. Peccato che l'azienda decida poi di aprire una filiale in India. Adattiamo il programma anche alle Rupie e i dipendenti indiani ricevono uno stipendio ridicolo.
Perché? Perché quando avevamo due valute abbiamo creato un if di questo tipo:
 
'' IF la valuta è EUR applica questo valore, ELSE quest'altro''
 
che ora, nel caso di tre valute possibili non è più corretto.
 
Per evitare di passare notti insonni a affrontare situazioni del genere sarebbe bello poter definire un tipo di dato "Dipendente" e dargli tutte le caratteristiche del dipendente (nome, ruolo, stipendio) in modo da condensare in esso tutto ciò che riguarda la sua logica di gestione e creare il resto del programma richiamando le funzioni interne di Dipendente. Aggiungere una nuova caratteristica al dipendente vorrebbe dire modificare solo il tipo di dato Dipendente e non tutto il programma.
Per questa operazione esiste la classe.
 
La classe ha lo scopo di delineare le proprietà e le caratteristiche degli elementi che ci servono. Questi elementi possono poi essere creati realmente (''istanziati'') e diventano così “oggetti”: le istanze della classe sono gli oggetti.
La classe ha lo scopo di delineare le proprietà e le caratteristiche degli elementi che vi fanno parte. Questi elementi possono poi essere creati realmente (''istanziati'') e diventano così “oggetti”: le istanze della classe sono gli oggetti. La classe è un po' come un progettomodello di qualcosa e l'oggetto è questo qualcosa realizzato concretamente. Gli elementi che compongono la classe possono essere: tipi primitivi, metodi, costruttori, oggetti di altre classi, cicli, classi stesse. Questi elementi sono tutti racchiusi in un contenitore (la classe) “class”. Vi è quindi la classe e gli oggetti: sono due cose diverse. Grazie all'esistenza delle classi possiamo creare gli oggetti. Gli oggetti sono allocati in memoria dalla JVM.
 
La classe ha lo scopo di delineare le proprietà e le caratteristiche degli elementi che vi fanno parte. Questi elementi possono poi essere creati realmente (''istanziati'') e diventano così “oggetti”: le istanze della classe sono gli oggetti. La classe è un po' come un progetto di qualcosa e l'oggetto è questo qualcosa realizzato concretamente. Gli elementi che compongono la classe possono essere: tipi primitivi, metodi, costruttori, oggetti di altre classi, cicli, classi stesse. Questi elementi sono tutti racchiusi in un contenitore (la classe) “class”. Vi è quindi la classe e gli oggetti: sono due cose diverse. Grazie all'esistenza delle classi possiamo creare gli oggetti. Gli oggetti sono allocati in memoria dalla JVM.
 
Per creare una classe devo usare la parola chiave <tt>class</tt> con questa sintassi:
 
</source>
 
la classe Dipendente potrebbe essere
 
 
<source lang=java>
public class Dipendente {
public int stipendio;
public String valuta;
public String nome, cognome;
public static void main (String args[]) {
System.out.println("Hello, world!");
}
}
</source>
 
 
Si riporta l'esempio funzionante del capitolo "[[java/Primo_programma|Primo programma]]" della classe HelloWorld:
== Interfaccia pubblica e privata della classe ==
 
Una classe è un '''tipo di dati astratto''' (TDA) scrittodefinito dal programmatore.
Esattamente come ci sono i tipi primitivi cosi ci sono i TDA del programmatore che si usano in maniera simile, tuttavia, mentre per i primitivi si parla di variabili, per i TDA si parla di oggetti. Inoltre, gli oggetti e i primitivi vengono allocati nella memoria in modalità e posizione diverse (rispettivamente nello heap e nello stack, per chi fosse interessato al lato più tecnico). Guardiamo come si dichiarano e inizializzano.
 
Per dichiarare un intero devo usare l'istruzione:
27

contributi