Progettazione SW - 16 introduzione a java come linguaggio oop. lezione 6
Introduzione al linguaggio Java
-
Upload
paolo-tosato -
Category
Education
-
view
725 -
download
0
description
Transcript of 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.