8. Struttura del linguaggio
?Commenti /*, //, /** (javadoc: descrizione dichiarazione)
?; (fine istruzione)
? {..} (blocco di istruzioni)
? abstract, case, new, this, while, ¡. (Keywords)
? boolean, char[2], byte[1], short[2], int[4], long[8],
float[4] ,double[8]
(Tipi primitivi)
?Dichiarazione variabili
?Assegnazioni
?Istanze
?Allocazione della memoria
?Scope delle variabili
?Convenzioni di codifica
9. ?=C/C++
?Logici
!,|,&,^
?Concatenazione di stringhe: +
?Shift Operators:
128 << 1 : 256
16 << 2 : 64
128 >> 1 : 64
Casting di Espressioni:
Operatori
long longvalue=99L;
int intvalue=(int)longvalue;
long longvalue=99; //int
int intvalue=99L;
double z=12.414F;
float z1=12.414;
10. Statements
if (boolean expression)
{
statement or block;
}
[
else
{statement or block;
}
]
switch (expression)
{
case const1:
statements;
break;
¡
default:
statements;
break; }
for (init_expr; bool_expr; alter_expr)
{
statement or block;
}
11. Statements
while (boolean expression)
{
statement or block;
}
do
{
statement or block;
} while (boolean test)
? break [label];
? continue [label];
? label: statement;
12. Arrays
char s[];
Point p[];
s=new char[20];
p=new Point[100];
p[0]=new Point();
...
String names[]= {
¡°pippo¡±,
¡°pluto¡±,
¡°topolino¡±
};
Myclass array[]=
{
new Myclass();
new Myclass();
new Myclass();
}
13. Arrays
array.length;
int twoDim[][]=new int [4][];
twoDim[0]=new int[7];
...
int twoDim[][]=new int[4][5];
...
14. Arrays
int elements[]=new int[6];
elements=new int[10];
...
int myArray[]={1,2,3,4,5,6};
int hold[]={10,9,8,7,6,5,4,3,2,1};
System.arraycopy(myArray,0,hold,0,myArray.length);
...
15. Object Orientation
?classi e oggetti
?ereditariet¨¤
?metodi e costruttori
?passaggio di parametri
?this e super
?polimorfismo
?overloading e overriding
?instanceof operator
if (e instanceof Manager)
{...
}
?package e import
? static
? final
? abstract class
16. Object Orientation - Interfacce
?E¡¯ come concetto molto simile a quello di classe astratta
?Tutti i metodi di un interfaccia sono astratti
?Le intefacce permettono di ottenere l¡¯ereditariet¨¤ multipla
?Un interfaccia pu¨° estendere un¡¯altra interfaccia
public interface Base
{
public static final int PROP=1;
public int mioMetodo();
}
public MioApplet extends Applet
implements Base, Runnable
{...
}
17. Object Orientation
if (x==y)
{
}
Condizione vera se x e y referenziano lo stesso oggetto
If (x.equals(y))
{
}
Condizione vera se x e y sono oggetti identici. E¡¯ un metodo
della classe Object (come toString()) che spesso viene
riscritto.
18. Object Orientation - Inner Class
public class MyFrame extends Frame
{
...
class ButtonListener implements ActionListener
{
}
...
}
25. AWT - Layouts
Il layout dei componenti all¡¯interno di un container ¨¨ governato
da un Layout Manager
? FlowLayout (default per Panel e Applet)
? BorderLayout (default per Window, Dialog e Frame)
? GridLayout
? CardLayout
? GridBagLayout
29. Eventi
Evento: un oggetto che descrive cosa si ¨¨ verificato
Gli eventi possono essere uni-cast e multi-cast
Button
Action event
actionPerformed (ActionEvent e)
{
}
30. Eventi
Listener
import java.awt.event.*;
public class ButtonHandler
implements ActionListener
{
public void actionPerformed
(ActionEvent e)
{
}
}
Source
...
Button b=new Button(¡°Me¡±);
b.addActionListener
(new ButtonHandler());
...
37. AWT Component
Checkbox
public void itemStateChanged(ItemEvent e)
{
String stato="deselected";
if (e.getStateChange()==ItemEvent.SELECTED)
stato="selected";
System.out.println(stato);
}
...
}
38. AWT Component
Checkbox Group
CheckboxGroup cbg=new CheckboxGroup();
Checkbox one=new Checkbox("One",cbg,true);
Checkbox two=new Checkbox("Two",cbg,false);
Choice
Choice ch=new Choice();
ch.addItem("Uno");
ch.addItem("Due");
fr.add(ch);
Si utilizza ItemListener per intercettare l¡¯item selezionato
39. AWT Component
Canvas
import java.awt.*;
import java.awt.event.*;
public class MyCanvas extends Canvas
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillRect(0,0,getSize().width,getSize().height);
}
}
Label
Label lb=new Label("Hello!");
40. AWT Component
TextField e TextArea
TextField tf=new TextField("Hello!",30);
fr.add(tf);
Il tasto <ENTER> pu¨° essere intercettato attraverso l¡¯evento Action.
TextArea ta=new TextArea("Hello!",4,30);
fr.add(ta);
Attraverso TextListener ¨¨ possibile intercettare le modifiche del
testo visualizzato in entrambi i componenti.
41. AWT Component
List
List lst=new List(4,false);
lst.add("Item1");
lst.add("Item2");
lst.add("Item3");
Il doppio click sulla lista pu¨° essere intercettato attravrso l¡¯evento
Action.
Dialog
Dialog d=new Dialog(fr,"Dialog",true);
d.add(new Button("Button"));
d.pack();
¡
d.setVisible(true);
43. AWT Component
MenuBar
MenuBar mb=new MenuBar();
fr.setMenuBar(mb);
Menu
Menu m=new Menu("Men¨´");
mb.add(m);
¡
mb.setHelpMenu(mh);
E¡¯ possibile intercettare
l¡¯evento Action sia sull¡¯ oggetto
Menu che su MenuItem.
44. MenuItem
MenuItem it1=new MenuItem("Item1");
MenuItem it2=new MenuItem("Item2");
MenuItem it3=new MenuItem("Item3");
m.add(it1);
m.add(it2);
m.add(it3); CheckboxMenuItem
CheckboxMenuItem cbm=new
CheckboxMenuItem("Check Item");
m.add(cbm);
E¡¯ possibile monitorare lo stato
di un CheckboxMenuItem
attraverso un ItemListener.
AWT Component
46. Applet
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class MyApplet extends Applet
{
Image img;
AudioClip sound;
public void init()
{
img=getImage(getDocumentBase(),"city.gif");
sound=getAudioClip(getDocumentBase(),"beth1.mid");
}
...
47. public void paint (Graphics g)
{
g.drawImage(img,2,2,this);
}
public void start()
{
//sound.play();
sound.loop();
}
public void stop()
{
sound.stop();
}
}
?Attraverso l¡¯interfaccia
MouseListener ¨¨ possibile
intercettare gli eventi generati
dal mouse;
? Con getParameter ¨¨ possibile
leggere i parametri passati
attraverso il tag param
Applet
48. Threads
Runnable Interface
public class MyThread implements Runnable
{
int i;
public void run()
{i=0;
while (true)
{ System.out.println("Ciao " + i);
if (i==50) break;
try{
Thread.sleep(10);
}
catch (InterruptedException e) {}
i++;}
}
...
49. Threads
Runnable Interface
...
public static void main (String args[])
{
for (int j=0;j<4;j++)
{
MyThread mt= new MyThread ();
Thread t=new Thread(mt);
t.start();
}
}
}
50. Threads
Metodi della classe Thread
?isAlive()
?sleep()
?join() - aspetta che l¡¯esecuzione del thread sia terminata
?wait(), notify() - classe Object
?suspend()
?resume()
?stop()
?yield()
Il problema della sincronizzazione:
synchronized (this)
{
}
public synchronized String pop(this)
{
}
51. Stream I/O e Files
Classi Base
? FileInputStream e FileOutputStream
? BufferedInputStream e BufferedOutputStream
? DataInputStream e DataOutputStream
? PipedInputStream e PipedOutputStream
52. Stream I/O e Files
Serializzazione (interfaccia Serializable) e persistenza
fos=new FileOutputStream("date.ser");
¡
ObjectOutputStream os=new
ObjectOutputStream(fos);
fis=new FileInputStream("date.ser");
¡
ObjectInputStream is=new
ObjectInputStream(fis);
Date dt=new Date();
dt=(Date)is.readObject();
...
is.close();
fis.close();
Date dt=new Date();
...
os.writeObject(dt);
os.close();
fos.close();
53. Stream I/O e Files
La parola chiave transient evita la serializzazione di alcune
propriet¨¤ della classe
public transient Thread myT;
54. Stream I/O e Files
Scrivere un file
...
PrintWriter out= new PrintWriter(new
BufferedWriter(new FileWriter("foo.out")));
out.println("riga");
out.close();
...
Leggere un file
BufferedReader in
= new BufferedReader(new FileReader("foo.out"));
System.out.println(in.readLine());
in.close();
...