Utente:DamianoDiBerardo/Sandbox

Cos'è?

modifica

Java[1] è unLinguaggio di programmazionead alto livello, nato intorno gli anni 90 posseduto dalla Oracle Corporation
è un linguaggio orientato agli oggetti e una delle particolarità di questo linguaggio è la sua Java Virtual Machine(JVM)
che fa da interprete per ogni sistema operativo

Com'è nato?

modifica

Java è stato creato da James Gosling per l'azienda Sun Microsystems, ora di proprietà della Oracle.In un primo momento si decise di destinare questo nuovo prodotto alla creazione di applicazioni complesse per piccoli dispositivi elettronici; fu solo nel 1993 con l'esplosione di internet che Java iniziò a farsi notare come strumento per iniziare a programmare per internet.

Ambiti Applicativi

modifica

Java viene utilizzato in tutto ma principalmente nella programmazione in internet e per applicazioni di vario genere (applicazioni android, desktop, aziendali, scientifiche, di trading, ecc...).

Introduzione generale

modifica

Tipi di dati

modifica

I tipi di dati ammessi in un programma java sono:

  • otto tipi primitivi (boolean, byte, char, short, int, long, float, double);
  • il tipo void.
Tipi Primitivi
modifica
byte Da -27 a 27 - 1 Da -128 a 127
char Da 0 a 216 - 1 Da 0 a 65535, ovvero da '\u0000' a '\uffff'
Short Da -215a 215 - Da -32768 a 32767
Int Da -231 a 231 - 1 Da -2147483648 a 2147483647
long Da -263 a 263 - 1 Da -9223372036854775808 a 9223372036854775807

byte, short, int e long
I tipi byte, short, int e long sono tutti utilizzati per rappresentare numeri interi ma cambia il range di numeri utilizzabili

public class Esempio 
 {
   private byte numero = 0;
   private short numero = 0:
   private int numero = 0;
   private long numero = 0; 
 }

char
Il tipo char serve ad inserire delle singole lettere es:"a"

public class Esempio 
 {
   private char lettera ='a';
 }

boolean
Il tipo boolean può comprendere solo due valori: "true" e "false"

public class Esempio 
 {
   private boolean variabileBooleana = true;
 }


float e double
I tipi float e double vengono utilizzati per rappresentare i numeri reali quindi con la virgola e come per i tipi interi, anche qui tra float e double cambia solo il range di numeri utilizzabili

 public class Esempio 
 {
   private float numero = 0,5;
   private double numero = 0,5;
 }
Il tipo void
modifica

Il tipo void non ammette alcun ritorno di dati perciò si può considerare come "vuoto"

Cos'è un metodo?

modifica

Tutti i linguaggi di programmazione forniscono la possibilità di definire, sotto un solo nome, interi gruppi di istruzioni. In questo modo possiamo riutilizzare un blocco di codice in molte parti del programma, semplicemente richiamando il nome con cui l'abbiamo definito, senza dover riscrivere tutto il blocco ogni volta.

Definire un metodo in Java

modifica

Vanno specificato il tipo di visibilità public|private|protected, dopo il tipo di variablile e il nome

Ecco un esempio:

[public|protected|private] Tipo identificatore(Tipo1 parametro1, Tipo2 parametro2, ...)
		// blocco di codice appartenente al metodo
	return varTipo;
}

lo statement return è opzionale nel caso in cui Tipo sia void.

Richiamare il metodo

modifica

Per chiamare il nostro metodo all'interno della classe in cui lo stiamo definendo, sarà sufficiente scrivere qualcosa del genere:

Tipo identificatore;

Costruttori

modifica

Il costruttore è quel metodo di una classe il cui compito è proprio quello di creare nuove istanze, oltre ad essere il punto del programma in cui un nuovo elemento viene creato ed è reso disponibile per l'interazione con il resto del sistema.Il costruttore è spesso usato per effettuare le inizializzazioni dello stato delle nuove istanze. In Java possono esserci molteplici costruttori per una medesima classe e ne esiste sempre almeno uno. Se infatti per una data classe non viene specificato alcun costruttore, il compilatore ne sintetizza automaticamente uno senza argomenti, detto costruttore default.

Classi e Oggetti

modifica

Oggetti

modifica

Nella vita reale noi vediamo negli oggetti dalle caratteristiche tangibili e riconoscibili, nel mondo OOP invece, il concetto di oggetto si amplia e un oggetto può contenere elementi concreti, ma anche entità come processi o concetti teorici e astratti Gli oggetti di cui stiamo parlando non hanno caratteristiche fisicamente distinguibili ma sono identificati dall'avere:

  • stato, l'insieme delle variabili interne che ne definiscono le caratteristiche in un certo istante dell'esecuzione;
  • "comportamento", le modalità di azione o di reazione di un oggetto, in termini di come il suo stato cambia e come i messaggi passano.

Una classe è esattamente il prototipo di un oggetto in cui vengono definiti tutti i messaggi che ciascuna istanza sarà in grado di ricevere. Nella rappresentazione di una classe sarà quindi importante evidenziare:

  • l'insieme dei metodi che la classe supporta (messaggi ricevibili)
  • l'insieme delle variabili di stato (attributi) che ne rappresentano lo stato.

Ereditarietà

modifica

Definizione di ereditarietà

modifica

Si dice che una classe A è una sottoclasse di B quando:

  • A eredita da B sia il suo stato che il suo comportamento
  • un'istanza della classe A è utilizzabile in ogni parte del codice in cui sia possibile utilizzare una istanza della classe B.

Extends

modifica

In Java la relazione di derivazione viene resa con la keyword extends che deve essere usata nella dichiarazione della classe:

public class esempio 
{
  private int altezza;
  private int base;
  //costruttori 
  //costruttore vuoto
  public esempio()
   {
   }
  public esempio(int altezza, int base)
   {
    this.altezza=altezza
    this.base=base
   }
//costruttore di copia
  public esempio(esempio c)
   {
  
   }
}

Implica che ogni istanza della classe A sarà anche di tipo B ed avrà a disposizione tutti i metodi della classe B e nel suo stato saranno presenti tutte le variabili che si trovano nella super classe B.

Polimorfismo

modifica

Il termine polimorfismo nell'ambito dei linguaggi di programmazione si riferisce in generale alla possibilità data ad una determinata espressione di assumere valori diversi in relazione ai tipi di dato a cui viene applicata.

  1. Java, su dev.java.