Oggi inizia una breve panoramica su Java., che ha lo scopo di far conoscere questo potente linguaggio di programmazione agli utenti. Dal momento che il linguaggio presenta tantissime funzionalità, per ora verranno introdotti i concetti basilari di questo linguaggio orientato agli oggetti, che verrano introdotti in tre differenti post:
- Incapsulamento
- Ereditarietà
- Polimorfismo
Prima di tutto quando nasce Java ? Esso nasce nei primi anni 90, attraverso il programmatore James Gosling. In quegli anni il linguaggio di programmazione più di moda era C++, che stava spopolando dopo il “mitico” C. Fino a pochi anni fa, Java era gestito dall’azienda Sun, ora essa è stata assorbita da Oracle. Uno dei principali vantaggi di questo linguaggio di programmazione è quello di essere considerato “portabile”, cosa molto richiesta nei giorni d’oggi, a causa della presenza di tantissime piattaforme sul mercato dei PC. In pratica, quando si compila un programma in Java, si creare il “bytecode”, che attraverso la Java Virtual Machine, è possibile eseguirlo su “qualsiasi” piattaforma. Una frase che spiega questo concetto è questo:
“Write once, debug anywhere” (“Scrivi una volta, correggi ovunque”)
Il termine qualsiasi tra “” è dovuta al fatto che recentemente sono stati introdotti nuovi sistemi embedded, su cui è necessario un lavoro ulteriore per migliorare la portabilità. Ecco una definizione, tratta da Wikipedia, riguardo al termine embedded:
In elettronica e informatica, con il termine sistema embedded (generalmente tradotto in italiano con sistema immerso o incorporato) si identificano genericamente tutti quei sistemi elettronici di elaborazione a microprocessore progettati appositamente per una determinata applicazione (special purpose) ovvero non riprogrammabili dall’utente per altri scopi, spesso con una piattaforma hardware ad hoc, integrati nel sistema che controllano ed in grado di gestirne tutte o parte delle funzionalità richieste.
Se Java risultata essere un linguaggio che permette di fare tutto, perché si utilizza ancora il C ? Il C è usato tantissimo, ancora oggi, per la scrittura dei driver per periferiche, nella domotica e nella robotica. Questo perché il C è più veloce nell’essere compilato. Una differenza di compilazione era molto evidenti agli inizi degli anni 90, ma dopo più di 20anni di sviluppo Java è migliorato sotto questo punto di vista. Ora introduciamo alcuni concetti basilari:
- Classi
- Oggetti
- Metodi
Una clase può essere spiegata come un componente software, in cui sono presenti righe di codice. Per esempio, una classe può contenere degli algoritmi per la risoluzione di un problema, come la somma di Numeri. Inoltre una classe può istanziare oggetti. Per esempio una classe “Persona”, può creare nuovi oggetti, come Mario Rossi etc…. In pratica le clasi fanno da “schema” per costruire oggetti. Per chi conosce già il linguaggio C, le classi possono essere considerate delle struct, in cui vengono dichiari gli attributi. Per esempio una possibile classe Persona, gli attributi sono Nome, Cognome. Gli attributi sono le proprietà che gli oggetti possiedono di una determinata classe. Gli attributi possono essere dichiarati in due modi (in realtà esistono altri meccanismi, ma verrano trattati successivamente):
- pubblico: visibile anche dall’esterno
- privato: visibile solo entro la classe
Questo tipo di protezione è alla base dell’incapsulamento, ma parleremo un’altra volta di questa importantissima proprietà di Java.
Come ultimo concetti, c’è Metodo. Per una più semplice comprensione, si può dire che un metodo è una “sorta” di funzione che abbiamo visto in C. In realtà c’è una certa differenza: in C le funzioni erano scritte per risolvere problemi in modo procedurale, in Java, che è un linguaggio ad oggetti, il meccanismo di programmazione è diverso.
Ora che abbiamo introdotto un po’ di concetti su Java, passiamo a programmare. Per ora basta aver installato l’ambiente Java dal sito ufficiale e un semplice editor di testa. Nella prossima puntata, vedremo Eclipse, un potentissimo ambiente di programmazione, che facilità (e non poco) la vita del programmatore.
Hello World in Java
Come primo programma in Java, useremo il famoso HelloWorld: questo programma non fa altro che stampare a video un saluto.
class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
Il codice è molto simile a quello del linguaggio C. Dopo aver creato la classe HelloWorld, che devo avere lo stesso nome del file con estensione .java che abbiamo creato, viene dichiarato il Main, che indispensabile per poter eseguire una classe (più avanti capiremo meglio…) successivamente viene fatta una chiamata alla funzione System.out.println, che sostituisce la printf del C. Ma in questo programma dove sono gli attributi e gli oggetti ? Nel codice precedente non ci sono, dal momento che se ne poteva faremo a meno, ma così facendo non è un programma che contempla la filosofia Java. Nel prossima programma vedremo un’applicazione di oggetti e metodi.
/** * Questo programma stampa a video un messaggio, usando i concetti di classe, oggetto, metodo * @author Giacomo Bellazzi * */ public class HelloWorld { private String messaggio; public HelloWorld(String messaggio) { super(); this.messaggio = messaggio; } public String getMessaggio() { return messaggio; } public void setMessaggio(String messaggio) { this.messaggio = messaggio; } public void toPrint(){ System.out.println(getMessaggio()); } public static void main(String[] args) { HelloWorld messaggio = new HelloWorld("Ciao Mondo"); messaggio.toPrint(); HelloWorld messaggio1 = new HelloWorld("Hello World"); messaggio1.toPrint(); } }
Cerchiamo di capire un po’ questo linguaggio. Ancora una volta, è necessario creare un file con lo stesso nome della classe. Dopo aver istanziato quest’ultima, viene creato un attributo messaggio, che conterrà una determinata frase. Da notare che gli attributi vengono scritti minuscolo, mentre i nomi delle classi, vengono scritte in maiuscolo. In successione, abbiamo il costruttore. Questo blocco di codice, ha lo scopo di facilitare l’inserimento delle frasi per i vari oggetti “messaggio”. Non a caso, nel main, abbiamo usato la sintassi HelloWorld(nome della classe) messaggio(nome dell’oggetto) = new Helloworld(“frase che vogliamo attribuire all’oggetto”). Questa sintassi permette di creare nuovi oggetti, dalla classe HelloWorld. Nel codice precedente, sono stati creati tre metodi
- getMessaggio() permette di ottenere il testo del messaggio
- setMessaggio() permette di creare il testo del messaggio, senza utilizzare il costruttore
- toPrint() permette di stampare a video la frase dell’oggetto messaggio
Nel main, per richiamare i metodi, abbiamo usato la sintassi nomeOggetto.metodo. Da notare la sintassi del nome dei vari metodi (prima parola con lettera minuscola, poi le altri parole con lettere maiuscole.
Come ultimo esempio, vediamo un piccolo programma che fa la somma di due numeri:
/** * Questo programma calcola la somma di due numeri * @author Giacomo Bellazzi * */ public class DueNumeri { private int a; private int b; public DueNumeri(int a, int b) { super(); this.a = a; this.b = b; } public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } public int calcolaSomma(){ return a+b; } public void stampaSomma(){ System.out.println(calcolaSomma()); } public static void main(String[] args) { DueNumeri primoNumero = new DueNumeri(10, 5); DueNumeri secondoNumero = new DueNumeri(16, 20); primoNumero.stampaSomma(); secondoNumero.stampaSomma(); } }
In questo caso, gli attributi sono a e b, due int che rappresentano il primo e il secondo numero di una coppia di numeri, di cui vogliamo calcolare la somma, attraverso il metodo calcolaSomma(). Questo metodo viene chiamato all’interno dell’altro metodo, stampaSomma(). All’interno del main, abbiamo creato i due oggetti di DueNumeri e abbiamo stampa a video la somma. Tutto facile no ?
Per poter compilare un programma Java, occorre digitare da terminale:
javac nomeClasse.java
java nomeClasse
Conclusione
Questi semplici programmi, hanno lo scopo di incominciare a capire i concetti basilari alla base di Java, quali Classe, Oggetto, Metodo. Le principali caratteristiche, quali Incapsulamento, Ereditarietà e Polimorfismo verrano trattati in tre differenti post.
[banner]
[banner network=”altervista” size=”300X250″]