SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
ITIS Max Planck di Lancenigo di Villorba
                A.S. 2012-2013



Java 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.
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
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
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
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.


  Codice
sorgente                                                                 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
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
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazione
Majong DevJfu
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
Majong DevJfu
 

Was ist angesagt? (7)

Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, java
 
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesMITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
 
Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazione
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
 
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
 
Arduino: domotica OpenSource
Arduino: domotica OpenSourceArduino: domotica OpenSource
Arduino: domotica OpenSource
 

Andere mochten auch (8)

Concurrency
ConcurrencyConcurrency
Concurrency
 
Eccezioni in java
Eccezioni in javaEccezioni in java
Eccezioni in java
 
Lezione 12 Java - Eccezioni
Lezione 12 Java - EccezioniLezione 12 Java - Eccezioni
Lezione 12 Java - Eccezioni
 
OOP Scano di Montiferro - Java 8: Espressioni Lambda
OOP Scano di Montiferro - Java 8: Espressioni LambdaOOP Scano di Montiferro - Java 8: Espressioni Lambda
OOP Scano di Montiferro - Java 8: Espressioni Lambda
 
Corso Java - Lezione 1
Corso Java - Lezione 1Corso Java - Lezione 1
Corso Java - Lezione 1
 
Introduzione alla programmazione Java
Introduzione alla programmazione JavaIntroduzione alla programmazione Java
Introduzione alla programmazione Java
 
Stringhe java
Stringhe javaStringhe java
Stringhe java
 
Java Advanced
Java AdvancedJava Advanced
Java Advanced
 

Ähnlich wie Introduzione al linguaggio Java

festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2016
 

Ähnlich wie Introduzione al linguaggio Java (20)

Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
 
Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
2-Intro-Java.pdf
2-Intro-Java.pdf2-Intro-Java.pdf
2-Intro-Java.pdf
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java libera
 
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Il web 2.0
Il web 2.0Il web 2.0
Il web 2.0
 
Arduino primo v1
Arduino primo v1Arduino primo v1
Arduino primo v1
 
Linguaggi di programmazione
Linguaggi di programmazioneLinguaggi di programmazione
Linguaggi di programmazione
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Hardware e plugin
Hardware e pluginHardware e plugin
Hardware e plugin
 
Spring Intro
Spring IntroSpring Intro
Spring Intro
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using Esterel
 
Corso Javascript
Corso JavascriptCorso Javascript
Corso Javascript
 
Introduzione al linguaggio Java
Introduzione al linguaggio JavaIntroduzione al linguaggio Java
Introduzione al linguaggio Java
 
Java codestyle & tipstricks
Java codestyle & tipstricksJava codestyle & tipstricks
Java codestyle & tipstricks
 

Mehr von Paolo Tosato (8)

Esperienze di robotica creativa - Rospino
Esperienze di robotica creativa - RospinoEsperienze di robotica creativa - Rospino
Esperienze di robotica creativa - Rospino
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Open Educational Resources and Professional Teaching
Open Educational Resources and Professional TeachingOpen Educational Resources and Professional Teaching
Open Educational Resources and Professional Teaching
 
Educational Robotics and Social Inclusion
Educational Robotics and Social InclusionEducational Robotics and Social Inclusion
Educational Robotics and Social Inclusion
 
User Generated Content: a new way to mix the role of teacher and student
User Generated Content:a new way to mix the role of teacher and studentUser Generated Content:a new way to mix the role of teacher and student
User Generated Content: a new way to mix the role of teacher and student
 

Kürzlich hochgeladen

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 

Kürzlich hochgeladen (18)

Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 

Introduzione al linguaggio Java

  • 1. ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013 Java 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. 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. 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. 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. 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. Codice sorgente 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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