Come abbiamo precedentemente detto, Java è un linguaggio puramente Object Oriented e, come tale, ci impone questo tipo di logica strutturale. Quindi se il lettore ha solide conoscenze di programmazione procedurale dovrà solamente adattare queste competenze al paradigma della programmazione ad oggetti.
Diciamo che la logica della programmazione ad oggetti si basa su due concetti principali:
- Classe: una classe è un’astrazione che rappresenta un insieme di oggetti che condividono le stesse caratteristiche e le stesse funzionalità.
- Oggetto: un oggetto è un’istanza o più precisamente una realizzazione concreta di una classe.
Le definizioni sopra espresse diverranno più chiare durante la lettura dell’intera guida con l’introduzione di esempi.
Una classe può essere vista come un contenitore all’interno della quale troviamo due elementi principali: attributi e metodi. Gli attributi della classe sono quelle variabili che identificano la classe e che vengono usati dai vari metodi per compiere qualche operazione. I metodi sono delle funzioni che espletano un certo compito.
Quindi se creerò una classe "Numeri" avremo, ad esempio, due attributi del tipo "numero1" e "numero2" (e potrò definire un metodo per assegnare i valori agli attributi) e due metodi "somma" e "sottrazione" che compiono rispettivamente la somma e la sottrazione del "numero1" e "numero2". Come detto prima, la classe è un’entità a se stante, quindi adesso avremo necessità di istanziare la classe "Numeri" per poi fare una chiamata al metodo che assegna i valori agli attributi della classe (passando i valori desiderati come parametri del metodo) ed inseguito i metodi di somma e sottrazione.
Come detto precedentemente, ogni istanza della classe è una realizzazione fisica della classe, quindi le due istanze sono completamente indipendenti l’una dall’altra e quindi se creiamo due oggetti di tipo "Numeri" e richimaiamo il metodo di assegnazione passando numeri diversi otterremo due oggetti diversi. Dunque la somma e la sottrazione relative ai due oggetti saranno generalmente diversi.
Prima di iniziare a scrivere del codice Java (e non solo) è bene apprendere delle piccole regole che stanno alla base per una scrittura di codice pulito, manutenibile e di facile comprensione anche da altre persone:
- Nome classe: Indicheremo il nome di una classe sempre con una lettera maiuscola. Quindi se creiamo una classe "casa" il nome della classe sarà "Casa". In caso il nome della classe sia composta da più parole indicheremo ogni iniziale della parola con la lettera maiuscola come per esempio "CasaInVendita".
- Struttura del nome dei metodi: Il nome di ogni metodo (vedremo più avanti cosa si intende per metodo) di una classe avrà l’iniziale minuscola e se è composto da più parole quelle successive avranno iniziale maiauscola come per esempio "restituisciNumeroMetriQuadri".
- Struttura del nome degli attributi: valgono le stesse regole espresse per i metodi.
- Semantica dei nomi: è buona regola dare dei nomi per classi, metodi e attributi che abbiano un significato. Questo permette di leggere il codice di una certa applicazione con minore difficoltà e nel minor tempo possibile. Per esempio, se abbiamo un metodo che esegue la somma tra due numeri se chiamiamo il metodo "somma", una persona che leggerà il nostro codice capirà immediatamente cosa quel metodo esegue e potrà continuare la lettura del codice senza troppi problemi. Nel caso avessimo creato un metodo che esegue la somma e lo avessimo chiamato "sm" ciò avrebbe necessariamente costretto il lettore ad andare a leggersi il codice riguardante il metodo per capirne il funzionamento. Queste buone norme di programmazione non sono elencate nella sola ottica di mettere in grado ad altri di leggere e comprendere rapidamente il vostro codice, ma queste regole servono anche a voi stessi. Immaginate di aver lavorato ad un applicativo di grosse dimensioni con svariate righe di codice e dopo due anni doverci mettere le mani per modificarne alcune parti, sarà sicuramente più immediata la modifica di un applicativo scritto seguendo queste semplicissime regole.