Introduzione al linguaggio Java

695 views

Published on

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
695
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduzione al linguaggio Java

  1. 1. ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013Java per elettronici ed elettrotecnici Prima lezione: dal C al Java Prof. PAOLO TOSATO Quest opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.
  2. 2. Paolo Tosato Java per elettronici ed elettrotecnici Indice • 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 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 2
  3. 3. Paolo Tosato Java per elettronici ed elettrotecnici 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 Attenzione all’uso degli slogan: • Java è semplice! • La programmazione Object Oriented è la migliore! • Tutto il software deve essere scritto in Java! Ma anche no! Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 3
  4. 4. Paolo Tosato Java per elettronici ed elettrotecnici Java: con chi abbiamo a che fare Un programma scritto in C viene tradotto in un linguaggio che è eseguibile da una particolare macchina fisica  Codice compilatore Codice sorgente linker eseguibile testo intelligibile traduttore linguaggio macchina 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) Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 4
  5. 5. Paolo Tosato Java per elettronici ed elettrotecnici Java: con chi abbiamo a che fare Un compilatore Java produce pseudo-codice (pCode – bytecode) eseguibile da qualsiasi Java Virtual Machine. Codicesorgente pCode compilatore  Java linker testo traduttore linguaggio intelligibile per la JVM JVM per PC con Windows Windows N.B. Alcuni browser Internet SONO delle JVM Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 5
  6. 6. Paolo Tosato Java per elettronici ed elettrotecnici 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 Java è stato creato dalla Sun Microsystem e ha fatto la sua apparizione ufficiale nel 1995. Nel 2010 la Sun è stata acquistata dalla Oracle. Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 6
  7. 7. Paolo Tosato Java per elettronici ed elettrotecnici Un linguaggio in un main import java.io.*; public class <nome classe> { public static void main (String args[]) { // dichiarazioni di variabili … // istruzioni … } } public: metodo pubblico (private / protected / default) static: metodo associato alla classe e non può essere richiamato dai singoli oggetti Come salvare il codice? Ogni classe pubblica deve essere salvata in un file con lo stesso nome <nome classe>.java Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 7
  8. 8. Paolo Tosato Java per elettronici ed elettrotecnici I principali costrutti del linguaggio Java 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”)) { … } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 8
  9. 9. Paolo Tosato Java per elettronici ed elettrotecnici I principali costrutti del linguaggio Java 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; } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 9
  10. 10. Paolo Tosato Java per elettronici ed elettrotecnici I principali costrutti del linguaggio Java Per le strutture di controllo vedi C / C++ 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; Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 10
  11. 11. Paolo Tosato Java per elettronici ed elettrotecnici I principali costrutti del linguaggio Java 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]; 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(); Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 11
  12. 12. Paolo Tosato Java per elettronici ed elettrotecnici Programmazione orientata agli oggetti 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 Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 12
  13. 13. Paolo Tosato Java per elettronici ed elettrotecnici Programmazione orientata agli oggetti 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(); 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; } } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 13
  14. 14. Paolo Tosato Java per elettronici ed elettrotecnici Programmazione orientata agli oggetti 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 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; } } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 14
  15. 15. Paolo Tosato Java per elettronici ed elettrotecnici Programmazione orientata agli oggetti 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; } … } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 15
  16. 16. Paolo Tosato Java per elettronici ed elettrotecnici Programmazione orientata agli oggetti 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; } } Quest opera è distribuita con 07/04/2013 licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported. 16

×