Introduzione al linguaggio Java

16
Java per elettronici ed elettrotecnici Prima lezione: dal C al Java ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013 Prof. PAOLO TOSATO Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported .

description

Dal C al Java: prima lezione del corso "Java per elettronici ed elettrotecnici"

Transcript of Introduzione al linguaggio Java

Page 1: Introduzione al linguaggio Java

Java per elettronici ed elettrotecnici Prima lezione: dal C al Java

ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013

Prof. PAOLO TOSATO

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 2: Introduzione al linguaggio Java

2

Indice Paolo Tosato Java per elettronici ed elettrotecnici

07/04/2013

• Java: con chi abbiamo a che fare?

• Un linguaggio in un main

• Programmazione strutturata: i principali costrutti del

linguaggio Java • Gestire la complessità: programmazione orientata agli

oggetti

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 3: Introduzione al linguaggio Java

3

Attenzione all’uso degli slogan:

• Java è semplice!

• La programmazione Object Oriented è la migliore!

• Tutto il software deve essere scritto in Java! Ma anche no!

Java: con chi abbiamo a che fare

Java è un linguaggio di programmazione Object Oriented con una sintassi simile a quella del C++ (e questo non gli giova!), cross-platform, e con una libreria di classi standard che lo rende uno strumento con cui realizzare “semplicemente” imprese altrimenti ardue

07/04/2013

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 4: Introduzione al linguaggio Java

4

Java è cross-platform in quanto (e non è un’idea di Java!) il compilatore NON produce codice per una macchina fisica, ma per una macchina virtuale: Java Virtual Machine (JVM)

Java: con chi abbiamo a che fare

Un programma scritto in C viene tradotto in un linguaggio che è eseguibile da una particolare macchina fisica

Paolo Tosato Java per elettronici ed elettrotecnici

07/04/2013

Codice sorgente

testo intelligibile traduttore

compilatore linker

linguaggio macchina

Codice eseguibile

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 5: Introduzione al linguaggio Java

5

N.B. Alcuni browser Internet SONO delle JVM

Java: con chi abbiamo a che fare

Un compilatore Java produce pseudo-codice (pCode – bytecode) eseguibile da qualsiasi Java Virtual Machine.

Paolo Tosato Java per elettronici ed elettrotecnici

Codice

sorgente Java

testo intelligibile

traduttore

compilatore linker

linguaggio per la JVM

pCode

PC con Windows

JVM per Windows

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 6: Introduzione al linguaggio Java

6

Java è stato creato dalla Sun Microsystem e ha fatto la sua apparizione ufficiale nel 1995. Nel 2010 la Sun è stata acquistata dalla Oracle.

Java: con chi abbiamo a che fare Software http://www.oracle.com/technetwork/java/javase/downloads/index.html API http://www.oracle.com/technetwork/java/api-141528.html JRE: Java Runtime Environment (java platform 7) JDK: Java Development Kit (java platform 7) IDE: Integrated Development Environment (NetBeans, Eclipse) API: Application Programming Interface

Paolo Tosato Java per elettronici ed elettrotecnici

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 7: Introduzione al linguaggio Java

7

import java.io.*; public class <nome classe> { public static void main (String args[]) { // dichiarazioni di variabili … // istruzioni … } }

Un linguaggio in un main

public: metodo pubblico (private / protected / default)

static: metodo associato alla classe e non può essere richiamato dai singoli oggetti

07/04/2013

Come salvare il codice? Ogni classe pubblica deve essere salvata in un file con lo stesso nome

<nome classe>.java

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 8: Introduzione al linguaggio Java

8

Tipi di dati • Primitivi: numerici (interi, virgola mobile), carattere, booleani • Riferimento: array e le classi

Tipi primitivi • Interi: Byte (8 bit), Short (16 bit), int (32 bit), long (64 bit) • Virgola mobile: Float (32 bit), Double (64 bit) • Carattere: char (UNICODE. Java non utilizza la codifica ASCII) • Booleano: boolean (true/false);

Costanti final int MAX = 10;

Stringhe (tipo riferimento: classe) String nome = “Gianpaolo”; String abbreviazione = nome.substring(0,4); int lunghezza = nome.length(); Char inizio = nome.charAt(0); If (nome.equals(“Gianpaolo”)) { … }

I principali costrutti del linguaggio Java

07/04/2013

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 9: Introduzione al linguaggio Java

9

Gestione output System.out.println(“Hello World”); System.out.print(“Risultato = “ + risultato);

Gestione input InputStreamReader input = new InputStreamReader(System.in); BufferedReader tastiera = new BufferedReader(input); String nome; Nome = tastiera.readLine();

String leggiNumero; int num; … try { leggiNumero = tastiera.readLine(); num = Integer.valueOf(leggiNumero).intValue(); } catch(Exception e) { System.out.println(“\nNumero non corretto!”); return; }

I principali costrutti del linguaggio Java Paolo Tosato Java per elettronici ed elettrotecnici

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 10: Introduzione al linguaggio Java

10

Attenzione ai dettagli (scope delle variabili) for (int i=0; i<10; i++) { System.out.println(i); }

Numeri casuali

Math.random() genera numeri double nel range [0.0, 1.0)

Per generare numeri nell’intervallo [min, max] int numero = (int) (Math.random() * (max – min + 1) + min;

I principali costrutti del linguaggio Java Paolo Tosato Java per elettronici ed elettrotecnici

07/04/2013

Per le strutture di controllo vedi C / C++

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 11: Introduzione al linguaggio Java

11

Array statici e dinamici

int vett[]; vett = new int[5];

String nomi[] = new String[10];

int vett[] = {45, 12, 3, 10, 2000};

vett.length restituisce la dimensione del vettore

int matrice[][]; matrice = new int[3][4];

I principali costrutti del linguaggio Java Paolo Tosato Java per elettronici ed elettrotecnici

Per chi desidera qualcosa di dinamico

Vector vett = new Vector(); vett.addElement(<oggetto>); // accetta in input solo oggetti Persona p = (Persona) vett.elementAt(3); // restituisce un tipo Object che va castomizzato vett.removeElementAt(4); // comprime in automatico il vettore int dimensione = vett.size();

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 12: Introduzione al linguaggio Java

12

Paradigma imperativo: computazione portata avanti attraverso una sequenza ordinata di passi • Istruzione di assegnamento • Ordine di esecuzione • Vicini al modo in cui funziona l’elaboratore • Strutture di controllo • Programmazione strutturata

Paradigma orientato agli oggetti: analizza il problema individuando gli oggetti che

lo compongono e le relazioni esistenti tra di essi • Metodologia di programmazione OOP (Object Oriented Programming) • Classe • Incapsulamento • Ereditarietà • Polimorfismo

Programmazione orientata agli oggetti

07/04/2013

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 13: Introduzione al linguaggio Java

13

Classe • Struttura di un oggetto che ne descrive le caratteristiche e i suoi comportamenti • Descrizione astratta di un oggetto attraverso attributi e metodi

Oggetto: istanza di una classe Persona p = new Persona(“Mario”, “Rossi”); String nome = p.getNome();

Paolo Tosato Java per elettronici ed elettrotecnici

class Persona { String nome; // Attributi String cognome;

Persona (String nome, String cognome) { // Metodo costruttore this.nome = nome; this.cognome = cognome; }

public String getNome() { // Metodo pubblico return nome + “ “ + cognome; } }

Programmazione orientata agli oggetti

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 14: Introduzione al linguaggio Java

14

Incapsulamento Proprietà degli oggetti di incorporare al loro interno sia gli attributi che i metodi, cioè le caratteristiche e i comportamenti dell’oggetto. A volte si desidera un po’ di privacy: Information Hiding

Paolo Tosato Java per elettronici ed elettrotecnici

class Persona { private String nome; private String cognome; Persona (String nome, String cognome) { this.nome = nome; this.cognome = cognome; } public String getNome() { return nome + “ “ + cognome; } }

Programmazione orientata agli oggetti

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 15: Introduzione al linguaggio Java

15

Ereditarietà Possibilità di creare nuove classi a partire da una classe già esistente (ereditarietà singola) La classe derivata da un’altra prende il nome di sottoclasse. La classe generatrice di una sottoclasse si chiama superclasse o sopraclasse Come “sterilizzare” una classe? final class Persona { … } // non possono essere generate sottoclassi da Persona public final void getNome() { … } // non può essere sovrascritto all’interno delle sottoclassi

class Docente extends Persona { // attenzione: attributi private, elementi static e // costruttori non vengono ereditati private String materia; Docente (String nome, String cognome, String materia) { super(nome, cognome); this.materia = materia; } … }

Paolo Tosato Java per elettronici ed elettrotecnici

Programmazione orientata agli oggetti

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 16: Introduzione al linguaggio Java

16

Polimorfismo Possibilità per i metodi di assumere implementazioni diverse all’interno della gerarchia delle classi.

• Overriding dei metodi: ridefinire un metodo ereditato

• Overloading dei metodi: lo stesso nome per compiere operazioni diverse (metodi con lo stesso nome in una classe, ma con numero e tipo diverso di parametri)

class Docente extends Persona { private String materia; Docente (String nome, String cognome, String materia) { super(nome, cognome); this.materia = materia; } public String getNome() { // OVERRIDING return “Nome: ” + nome + “ “ + cognome + “ Materia: ” + materia; } }

Paolo Tosato Java per elettronici ed elettrotecnici

Programmazione orientata agli oggetti

07/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.