Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 ·...

21
1 Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing. Antonio Coronato ICAR - CNR Programmazione ad Oggetti Java – Parte II Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing. Antonio Coronato ICAR - CNR Overview Caratteristiche lessicali Il primo programma Java

Transcript of Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 ·...

Page 1: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

1

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Programmazione ad Oggetti

Java – Parte II

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Overview

• Caratteristiche lessicali

• Il primo programma Java

Page 2: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

2

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Commenti

• /* Commento tradizionale, eventualmente su più linee, non nidificato */

• // Commento su di una sola linea

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Identificatori

• Sono composti da “lettere Java” e “cifre Java”, e devono iniziare con una “lettera Java”

• Possono essere di qualsiasi lunghezza

• Attenzione: – sono lettere e cifre Unicode!

– _ e $ sono considerate lettere

– caratteri con codifica diversa (es. maiuscole e minuscole) sono considerati diversi (anche se hanno la stessa rappresentazio-ne)�

Page 3: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

3

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Parole Chiave

Le seguenti keywords non possono essere usate come identificatori:

abstract double int superboolean else interface switchbreak extends long synchronizedbyte final native thiscase finally new throwcatch float package throwschar for private transient class (goto) protected try(const) if public voidcontinue implements return volatiledefault import short whiledo instanceof static

Note: - const e goto sono riservate, ma non usate

- anche i letterali null, true, false sono riservati

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Keywords Java e C

struct union enum

signed unsigned

extern

auto register

sizeof typedef

char int short

long float double

void

if else for while do

switch case default

break continue

return goto°°

volatile

static const°°

byte boolean

final

try catch finally throw

throws

private public protected

transient synchronized

native abstract

import class extends

instanceof implements

interface package

this super new

true°false°null°

C

Java

° letterali, non keywords

°° riservate ma non usate in Java

Page 4: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

4

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Tipi

TIPI KEYWORD NOTE

boolean:

Primitivi

Reference

Null

boolean true, false

numerici interi

floating-point

classi

interfacce

array

class

interface

float

double

byte

short

int

long

char

8 bit int. in compl. a 2

16 bit

32 bit

64 bit

16 bit Unicode

32 bit IEEE 754

64 bit

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

• Dichiarazioni: int i, float f;

• Inizializzazioni:double d = 3.14;

• Espressioni: i + 5

j = i++

Nota:byte e short vengono sempre promossi a intprima di essere valutati

• Assegnamenti: i = j + 5;

Esempi di Tipi Primitivi

Page 5: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

5

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Inizializzazione delle variabili

• Inizializzazione alla dichiarazione– Es. int giorni_settimana = 7;

• Valore assegnato dalla JVM– Es. int altezza;

Inizializzato dalprogrammatore

Inizializzato a 0dalla JVM

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Costanti

• Java non supporta la dichiarazione esplicita di costanti

• Si utilizza il modificatore final– Es. final int altezza = 10; Il valore della

variabile altezza

NON può esserepiù modificato

Page 6: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

6

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori Aritmetici

• Risultato numerico

Page 7: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

7

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Shortcuts

• Equivalenze con le forme estese

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Shortcuts (2) �

• Operatori di assegnamento shortcut

Page 8: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

8

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori Logici

• Risultati booleani

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori Relazionali

• Risultati booleani

Page 9: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

9

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Funzioni Booleane

• Funzioni di variabili booleane

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori di shift

Page 10: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

10

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Operatori logichi bit a bit e funzioni

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Dichiarazione di classi

• Sintassi– Il costrutto class

Page 11: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

11

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Esempio di dichiarazione

Dichiarazione di classe:

class Automobile {<campi><metodi>

}

Dichiarazione di oggetto:Automobile a;

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Creazione ed utilizzo di oggetti

dichiarazione di classe:

class Automobile {<campi><metodi>

}

dichiarazione di oggetto:

Automobile a;

creazione di oggetto:

a = new Automobile();

uso dell’oggetto:

… a.campo … … a.metodo(…) ...

Page 12: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

12

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Variabili e variabili reference

dichiarazione di variabili:

int base = 12;

int altezza ;

dichiarazione di oggetto:

Automobile a;

creazione di oggetto:

a = new Automobile();

a nul

a

heap

I campi vengono inizializzati

base 12

altezza 0

Variabile Reference

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Sviluppo di un’Applicazione

Page 13: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

13

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Utilizzo del JDK

• Installare il Java Development Kit (JDK)

• Scrivere il codice in un file Example.java

• Compilare da linea di comando– javac Example.java Example.class

• Eseguire da linea di comando– java Example.class

class Example {

public static void main (){

System.out.println(“Hello World!”);

}

}

Example.java

Il “programma” é

costituito da una classe

che implementa un

metodo main

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Utilizzo di un Ambiente Visuale

Page 14: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

14

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Struttura di un’Applicazione

• Affinchè un sistema a oggetti “parta”, devo avere una classe con un metodo statico e pubblico di nome main

a

b

c

d

gf

e

main

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

L’Applicazione Example: Considerazioni

public static void main (String args [])– void indica che main non ritorna nulla, il che è necessario per

superare il type-checking del compilatore

– args[] sono gli argomenti passati a main dalla shell quando si digita: java Hello arg1 arg2 ... argn

– String dice che gli argomenti sono di classe String

– public rende il metodo main visibile alle altre classi - e al comando java (interprete)

– static associa main alla classe Hello, e non alle sue istanze

System.out.println("HelloWorld!")– invoca il metodo println dell’oggetto out del package System,

che stampa la stringa sul file stdout

Page 15: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

15

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Packages

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Packages

• Più classi o interfacce interrelate possono essere riunite in un package, dotato di nome

Esempio:

c

e

b

d

a

MyPackage

classe o

interfaccia

Page 16: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

16

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Nomi di Classi

• Il nome di una classe (o di una interfaccia) va sempre qualificato con il nome del package a cui appartiene, tranne quando viene usato all’interno dello stesso package

Esempio:

aaa.bbb.ccc.MyClass

all’interno di aaa.bbb.ccc basta questo

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Nomi di Package

• Il nome di un package può essere composto da piùidentificatori separati da “.”:

roberto.utilities.internet

• Per evitare che package di produttori diversi abbiano lo stesso nome, si suggerisce di far iniziare il nome del package con il dominio Internet del produttore(invertito, e con il nome di più alto livello tutto maiuscolo)

it.unimi.dsi.roberto.utilities.internet

nome di dominio

Page 17: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

17

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Packages Standard

java.lang classi base del linguaggio(Object, Thread, Throwable, System, String,Math, wrapper classes, …)

java.io classi di I/O(FileInputStream, FileOutputStream, )

java.util classi di utilità(Date, Random, …)

java.net classi di supporto alle applicazioni direte (socket, URL, …)

java.applet classe Applet, …

java.awt Abstract Windowing Toolkit

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Lo Statement package

• Specifica che le classi che seguono apparten-gono a un certo package

• Deve apparire (una sola volta) all’inizio di una unità di compilazione

Esempio:

class a {..

class b {...

class c {..

a.java

package p; le classi a,b,c appartengono

al package p

Se lo statement è omesso,

la classe appartiene al

package anonimo

Page 18: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

18

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Lo Statement import

• Per evitare di usare sempre nomi completi di classi, si può usare lo statement import

Esempio: import java.util.Date;

class MyClass { class MyClass {

java.util.Date today; Date today;… ...

} }

Note: • import java.util.* importa tutte le classi del package java.util

• java.lang.* è sempre importato implicitamente

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Package e Directory

• Molti ambienti Java mappano i nomi dei package sui pathname del file system (compilatore e class loader)

Esempio:

aaa.bbb.ccc.MyClass aaa/bbb/ccc/MyClass

package classe directories file

pathname

Page 19: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

19

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Visibilità

Classi e interfacce

• sono visibili all’interno del package in cui sono dichiarate; sono visibili all’esterno del package solo se dichiarate public

public class a { …

public interface b { …

Membri (campi e metodi)

• sono visibili quando:– la loro classe è visibile e– il loro modificatore li rende visibili

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Visibilità di Campi e Metodi

Modificatore Visibilitàprivate solo nella classe in cui è definitonessuno (default) solo nelle classi del package

protected classi nel package e sottoclassi (stesso package o altri package)

public tutte le classi

NB: I membri di una interfaccia sono sempre pubblici

più

vis

ibil

e

Page 20: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

20

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

class a {...

package pac

Esempio

class b {private int i;

private void m( ) {…}

int j;

void n( ) {…}

public int k;

public p( ){…}

protected int i;

protected void m( ){…}

class d extends b {...

class c {...

class e extends d {...

class d extends b {...

visibile

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Progettare la Visibilità

Quando progettiamo una classe dobbiamo pensare a due tipi di utenti:

• quelli che utilizzeranno la classe per realizzare delle applicazioni

• quelli che estenderanno la classe per realizzare sottoclassi

• I primi useranno i membri public; i secondi anche i membri protected

• Le interfacce public e protected vanno progettate con cura

Page 21: Programmazione ad Oggetti Java – Parte IIcoronato.a/slides oo/6 - Java... · 2008-10-22 · a.java stesso nome Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing.

21

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Unità di Compilazione

• Il sorgente di un’applicazione consiste di uno o più file (“unità di compilazione”)

• Ogni file contiene una o più dichiarazioni di classi (o di interfacce), di cui al più una dichiarata public

• Il nome del file deve essere uguale a quello della sua classe public , con estensione .java:

public class a {...

class b {...

class c {..

file

a.javastesso nome

Corso di Programmazione ad Oggetti

Seconda Università di Napoli

Ing. Antonio Coronato

ICAR - CNR

Packages: Riassunto

I packages:

• Permettono di creare gruppi di classi e interfacce fra loro in relazione

• Definiscono uno spazio di nomi locale per classi e interfacce evitando conflitti con classi e inter-facce di altri packages

• Permettono di avere classi, interfacce e membri (campi e metodi) non visibili all’esterno del package

• Possono essere organizzati gerarchicamente

• Si compone di più unità di compilazione