1 / 18

LA DOCUMENTAZIONE

LA DOCUMENTAZIONE. È noto che un buon programma dovrebbe essere ben documentato.. ma l’esperienza insegna che quasi mai ciò viene fatto! “non c’è tempo”, “ci si penserà poi”... ... e alla fine la documentazione non c’è!. Java accetta il fatto che la gente non scrive documentazione...

khanh
Download Presentation

LA DOCUMENTAZIONE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LA DOCUMENTAZIONE • È noto che un buon programma dovrebbe essere ben documentato.. • ma l’esperienza insegna che quasi mai ciò viene fatto! • “non c’è tempo”, “ci si penserà poi”... • ... e alla fine la documentazione non c’è! • Java accetta il fatto che la gente non scrive documentazione... • ..e quindi fornisce uno strumento per pro-durla automaticamentea partire dai com-menti scritti nel programma: javadoc

  2. L’ESEMPIO... COMPLETATO /** File Esempio0.java * Applicazione Java da linea di comando * Stampa la classica frase di benvenuto @author Enrico Denti @version 1.0, 5/4/98 */ public class Esempio0 { public static void main(String args[]){ System.out.println("Hello!"); } } Informazioni di documentazione

  3. L’ESEMPIO... COMPLETATO Per produrre la relativa documentazione: javadoc Esempio0.java Produce una serie di file HTML Si consulti la documentazione di javadoc per i dettagli.

  4. TIPI DI DATO PRIMITIVI IN JAVA • caratteri • char (2 byte) codifica UNICODE • coincide con ASCII sui primi 127 caratteri • e con ANSI / ASCII sui primi 255 caratteri • costanti char anche in forma '\u2122' • interi (con segno) • byte (1 byte) -128 ... +127 • short (2 byte) -32768 ... +32767 • int (4 byte) -2.147.483.648 ... 2.147.483.647 • long (8 byte) -9 1018 ... +9 1018 NB: le costanti long terminano con la lettera L

  5. TIPI DI DATO PRIMITIVI IN JAVA • reali (IEEE-754) • float(4 byte) - 1045 ... + 1038 (6-7 cifre significative) • double (8 byte) - 10328 ... + 10308(14-15 cifre significative) • boolean • boolean (1 bit)false e true • tipo autonomo totalmente disaccoppiato dagli interi: non si convertono boolean in interi e viceversa, neanche con un cast • tutte le espressioni relazionali e logiche danno come risultato un boolean, non più un int!

  6. CLASSI E OGGETTI IN JAVA Esclusi i tipi primitivi appena visti, in Java esistono solo • classi • componenti statici, pre-esistenti, che possono avere i loro dati e le loro funzioni • ma anche fare da “stampo” per costruire oggetti • oggetti • entità dinamiche costruite al momento dell’uso a immagine e somiglianza di una classe

  7. CLASSI IN JAVA • sono componenti “statici”: esistono giàall’inizio dell’esecuzione, e permangono per tutta l’esecuzione del programma • possono avere propri dati (dati statici) e fun-zioni (funzioni statiche), come un modulo • il main è una tipica funzione statica: deve infatti esistere fin dall’inizio in quanto è da lì che la computazione ha origine • possono fungere da stampo per costruire oggetti (che sono invece entità dinamiche)

  8. CLASSI IN JAVA • Dati e funzioni static • appartengono al “componente classe” • non definiscono la struttura di oggetti • sono componenti “statici”: esistono giàall’inizio dell’esecuzione, e permangono per tutta l’esecuzione del programma • possono avere propri dati (dati statici) e fun-zioni (funzioni statiche), come un modulo • il main è una tipica funzione statica: deve infatti esistere fin dall’inizio in quanto è da lì che la computazione ha origine • possono fungere da stampo per costruire oggetti (che sono invece entità dinamiche) • Dati e funzioni non-static • non appartengono al “componente classe” • definiscono la struttura degli oggetti creati dinamicamente “a immagine” della classe

  9. CLASSI IN JAVA Esempio: la classe Math • Math è una classe di sistema che comprende solo costanti e metodi statici (pubblici)(in pratica, è la libreria matematica) • Costanti di classe: E e PI • Metodi di classe: abs(), asin(), acos(), atan(), min(), max(), exp(), log(), pow(), sin(), cos(), tan(), etc. • Si usano con il nome completo: float x = Math.sin(Math.PI/3);

  10. OGGETTI IN JAVA • sono componenti “dinamici”: vengono creati “al volo”, al momento dell’uso, tramite l’ope-ratorenew • sono creati a immagine e somiglianza di una classe, che ne descrive le proprietà • su di essi è possibile invocare le operazioni pubblichepreviste dalla classe • non occorre preoccuparsi della loro distru-zione: Java dispone di un garbage collector!

  11. ESEMPIO: LA CLASSE Counter publicclass Counter { private int val; public void reset() { val = 0; } public void inc() { val++; } public int getValue() { return val;} } • Non contiene dati o funzioni statiche, quindi non dispone di dati e operazioni sue proprie • Funge solo da stampo per costruire oggetti

  12. ESEMPIO: UN CLIENTE • Contiene un’unica funzione statica (il main), che crea e usa un nuovo oggetto Counter • Non può fungere da stampo per costruire og-getti (non ha dati o funzioni non-static) publicclass Esempio1 { public static void main() { Counter c = new Counter(); c.reset(); c.inc(); c.inc(); System.out.println(c.getValue()); } }

  13. ESEMPIO: UN CLIENTE • Contiene un’unica funzione statica (il main), che crea e usa un nuovo oggetto Counter • Non può fungere da stampo per costruire og-getti (non ha dati o funzioni non-static) publicclass Esempio1 { public static void main() { Counter c = new Counter(); c.reset(); c.inc(); c.inc(); System.out.println(c.getValue()); } } La frase Counter c; definisce un riferimentoa un (futuro) oggetto di classe Counter L’oggetto di tipo Counter viene però creato dinamicamente solo in un secon-do momento, mediante l’operatore new

  14. ESEMPIO: COSTRUZIONE • Le due classi devono essere scritte in due file distinti,di nome, rispettivamente: • Esempio1.java (contiene la classe Esempio1) • Counter.java (contiene la classe Counter) • Ciò è necessario perché entrambe le classi sono pubbliche:in un file .java può infatti esserci una sola classe pubblica • ma possono essercene altre non pubbliche • Per compilare: javac Esempio1.java Counter.java NB: l’ordine non importa

  15. ESEMPIO: COSTRUZIONE • Queste due classi devono essere scritte in due file distinti,di nome, rispettivamente: • Esempio1.java (contiene la classe Esempio1) • Counter.java (contiene la classe Counter) • Ciò è necessario perché entrambe le classi sono pubbliche:in un file .java può infatti esserci una sola classe pubblica • ma possono essercene altre non pubbliche • Per compilare: javac Esempio1.java Counter.java Anche separatamente, ma nell’ordine: javac Counter.java javac Esempio1.java La classe Counter deve infatti già esiste-re quando si compila la classe Esempio1

  16. ESEMPIO: ESECUZIONE • La compilazione di quei due file produce due file .class, di nome, rispettivamente: • Esempio1.class • Counter.class • Per eseguire il programma basta invocare l’interprete con il nome di quella classe (pubblica) che contiene il main java Esempio1

  17. ESEMPIO: UNA VARIANTE • Se la classe Counternon fosse stata pubblica, le due classi avrebbero potuto essere scritte nel medesimo file .java publicclass Esempio2 { ... } class Counter { ... } • nome del file = quello della classe pubblica(Esempio2.java) Importante: l’ordine delle classi nel file è irrilevante,non esiste un concetto di dichia-razione che deve pre-cedere l’uso!

  18. ESEMPIO: UNA VARIANTE • Se la classe Counternon fosse stata pubblica, le due classi avrebbero potuto essere scritte nel medesimo file .java • ma compilandole si sarebbero comunque ottenuti due file .class: • Esempio2.class • Counter.class • In Java, c’è sempre un file .class per ogni singola classe compilata • ogni file .class rappresenta quella classe • non può inglobare più classi

More Related