Estratto del documento

Programma

Introduzione alla programmazione ad oggetti

Meccanismi di astrazione. Il concetto di modulo software. Incapsulamento e information hiding. Progettazione top-down e bottom-up. Dal paradigma procedurale al paradigma OO. Classe come tipo dato astratto. Classi ed oggetti. Interfaccia.

Introduzione a Java

Caratteristiche del linguaggio Java. Compilatori ed interpreti. Interprete Java (Java Virtual Machine). Bytecode. Collegamento dinamico. Compilazione on-the-fly. Concorrenza. Struttura di un’applicazione Java. Unità di compilazione: files .java e .class. Sintassi Java. Documentazione delle classi.

Classi ed oggetti

Attributi e metodi. Specificatori public, privati e protetta. Invocazione di metodi e passaggio di parametri. Chiamate di metodi interni ed esterni. Variabili locali e variabili static. Metodo costruttore. Oggetti come attributi di una classe. Interazione tra oggetti. Distruttore. Operazioni di finalizzazione. Specificatore this. I Packages. Classe ArrayList. Array di oggetti.

Riuso del software

Composizione. Ereditarietà. Classe base e derivate. Overriding, overloading, shadowing. Qualificatore Final. Chiamate a Super.

Estensione del software

Polimorfismo. Early e late binding. Classi astratte. Upcasting. Costruttori e distruttori. Ereditarietà multipla. Interfacce. Classi astratte.

Input/Output

Stream. I/O su file. Handling IOException. Incapsulamento di Stream.

Eccezioni

Guarded region. Exception Handler. Definizione di classi derivate da Exception.

Interfacciamento grafica

Libreria di classi Swing. Frames. Panels. Layout Managers. Classe Graphics. Bottoni e menu. Gestione degli eventi in Java.

Progetti Java completi

(tracce d'esame svolte)

Scrittura e lettura su file

FileInputStreamTest.java


1 import java.io.*;
2 public class FileInputStreamTest {
3     public static void main(String[] args) {
4         // Il file da leggere.
5         File f = new File("prova.txt");
6         // Riferimento allo stream.
7         FileInputStream in = null;
8         try {
9             // Stabilisco lo stream.
10            in = new FileInputStream(f);
11            // Leggo finché ci sono dati.
12            int i;
13            while ((i = in.read()) != -1) {
14                char c = (char) i;
15                System.out.print(c);
16            }
17        } catch (IOException e) {
18            // Problema!
19            System.out.println("Problema durante la lettura...");
20            System.exit(1);
21        }
22    }
23 }

FileOutputStreamTest.java


1 import java.io.*;
2 public class FileOutputStreamTest {
3     public static void main(String[] args) {
4         // Il file da leggere.
5         File f = new File("prova.txt");
6         // Riferimento allo stream.
7         FileOutputStream out = null;
8         try {
9             // Stabilisco lo stream.
10            out = new FileOutputStream(f);
11            // Scrivo "Ciao".
12            out.write("Ciao".getBytes());
13        } catch (IOException e) {
14            // Problema!
15            System.out.println("Problema durante la scrittura...");
16            System.exit(1);
17        }
18    }
19 }

Test.java


1 import java.io.*; // la importo xke serve per stampare la listain un file di testo
2 interface AUT {
3     // Non serve mettere public perchè è tutto nello stesso file
4     public void accendi(Auto a); // prende in ingresso la classe Auto
5 }
6 
7 abstract class Autovetture implements AUT {
8     // Attributi
9     protected String tipo;
10    protected int ruote;
11    protected int cilindrata;
12    protected String colore;
13    protected boolean statoMotore=false; // deve dire true=motore acceso false=motore spento, inizialmente il motore è spento
14    
15    // Costruttore
16    public Autovetture(String tipo, int ruote, int cilindrata, String colore, boolean statoMotore) {
17        this.tipo = tipo;
18        this.ruote = ruote;
19        this.cilindrata = cilindrata;
20        this.colore = colore;
21        this.statoMotore = statoMotore;
22    }
23    
24    // Metodi
25    public abstract void accendi(Auto a);
26    public abstract void spegni(Auto a); // Essendo astratti non hanno implementazione, li implemento nella classe figlia Auto
27    
28    // Definisco dei metodi get in modo tale da ritornare i parametri delle autovetture alla classe di test
29    String getTipo() {
30        return tipo;
31    }
32    
33    int getRuote() {
34        return ruote;
35    }
36    
37    int getCilindrata() {
38        return cilindrata;
39    }
40    
41    String getColore() {
42        return colore;
43    }
44    
45    boolean getStato() {
46        return statoMotore;
47    }
48 }
49 
50 class Auto extends Autovetture {
51    // Ha bisogno di un costruttore che richiama il costruttore della classe padre
52    protected String codiceMatricola;
53    protected int codice;
54    protected int numeroMarce; // È private dal main ma accessibile dalle classi figlie, meglio mettere tutto protetto
55    protected int contatore=0; // Dichiaro statico perchè non è legato a nessun oggetto in particolare
56    
57    // Costruttore
58    public Auto(String tipo, int ruote, int cilindrata, String colore, boolean statoMotore, String codiceMatricola, int numeroMarce) {
59        super(tipo, ruote, cilindrata, colore, statoMotore); // Richiama gli attributi della classe padre, perché per istanziare un auto sono necessari anche quelli
60        this.codiceMatricola = codiceMatricola;
61        this.numeroMarce = numeroMarce;
62        // int contatore = 0; // Non lo posso mettere altrimenti azzererei ogni volta che creo un autovettura il contatore
63        contatore++; // Metto nel costruttore, perché questo serve per creare gli oggetti, se mettessi un contatore anche nella classe autovettura, questo costruttore erediterebbe quello della classe padre e stamperebbe e conterebbe ogni volta anche il contatore della classe padre
64        System.out.println("Il numero di auto istanziate fino ad ora è ---> " + contatore);
65    }
66    
67    // Implementazione metodi astratti
68    public void accendi(Auto a) {
69        if (a.statoMotore == true) {
70            try {
71                throw new Error(); // Se è già acceso genero un'eccezione con throw e vado al catch
72            } catch (Error e) {
73                System.out.println("ERROR! La macchina è già accesa");
74            }
75        } else {
76            statoMotore = true;
77            System.out.println("Ora la macchina si è accesa!");
78        }
79    }
80    
81    public void spegni(Auto a) {
82        if (a.statoMotore == false) {
83            try {
84                throw new Error();
85            } catch (Error e) {
86                System.out.println("Error! La macchina è già spenta");
87                // System.exit(1);
88            }
89        } else {
90            statoMotore = false;
91            System.out.println("Ora la macchina è spenta!");
92            // System.exit(2);
93        }
94    }
95    
96    // Implementazione metodi concreti
97    public void avanti() {
98        System.out.println("L'auto sta andando avanti!");
99    }
100   
101   public void indietro() {
102       System.out.println("L'auto sta andando indietro!");
103   }
104   
105   public String toString() {
106       String s = "Hai istanziato una " + tipo + " che ha " + numeroMarce + " marce.";
107       return s;
108   }
109}

Camion extends Auto


110 class Camion extends Auto {
111    // Attributi
112    protected double lunghezza_rimorchio;
113    protected double peso;
114    protected int limite_velocita;
115    protected int marcia_inserita = 0; // La retromarcia è contata come marcia 0
116    
117    // Costruttore
118    public Camion(String tipo, int ruote, int cilindrata, String colore, boolean statoMotore, String codiceMatricola, int numeroMarce, double lunghezza_rimorchio, double peso, int limite_velocita) {
119        super(tipo, ruote, cilindrata, colore, statoMotore, codiceMatricola, numeroMarce);
120        this.lunghezza_rimorchio = lunghezza_rimorchio;
121        this.peso = peso;
122        this.limite_velocita = limite_velocita;
123    }
124    
125    // Metodi
126    public void inserisciMarce(int n) {
127        marcia_inserita = n;
128        if (marcia_inserita <= numeroMarce) {
129            System.out.println("Il camion ha inserito la marcia " + marcia_inserita);
130        } else {
131            System.out.println("ERRORE, metti una marcia da 0 a " + numeroMarce);
132        }
133    }
134    
135    public void caricaRimorchio(double n) {
136        peso = n;
137        System.out.println("Il camion ora porta un rimorchio di " + peso + " KG");
138    }
139    
140    public void scaricaRimorchio() {
141        peso = 0;
142        System.out.println("Il camion ora non porta nessun rimorchio");
143    }
144 }

InterfacciaGrafica extends JFrame


145 class InterfacciaGrafica extends JFrame {
146    private Container c;
147    private JPanel p;
148    private JLabel l1, l2, l3, l4, l5;
149    private JTextField t1, t2, t3, t4, t5;
150    
151    public InterfacciaGrafica() {
152        super("Caratteristiche Autovetture"); // Imposta il titolo del frame invisibile
153        setSize(300, 150); // Per impostare le dimensioni e la posizione (misure in pixel)
154        setLocation(200, 100); // (0,0) angolo sup. sin.
155        setResizable(true); // Per ridimensionare con mouse
156        c = getContentPane(); // Recupera il "muro grezzo"
157        p = new JPanel(); // Per inserimento componenti con layout di tipo FlowLayout
158        
159        // Cioè uno di seguito all'altro da sinistra a destra
160        p.setLayout(new GridLayout(5, 1)); // Per evidenziare allineamento 5 RIGHE, 1 COLONNA
161        c.add(p); // Aggiunge il pannello
162        
163        l1 = new JLabel("TIPO");
164        p.add(l1);
165        t1 = new JTextField(10);
166        p.add(t1);
167        
168        l2 = new JLabel("STATO MOTORE");
169        p.add(l2);
170        t2 = new JTextField(10);
171        p.add(t2);
172        
173        l3 = new JLabel("RUOTE");
174        p.add(l3);
175        t3 = new JTextField(10);
176        p.add(t3);
177        
178        l4 = new JLabel("CILINDRATA");
179        p.add(l4);
180        t4 = new JTextField(10);
181        p.add(t4);
182        
183        l5 = new JLabel("COLORE");
184        p.add(l5);
185        t5 = new JTextField(10);
186        p.add(t5);
187        
188        setVisible(true); // Mostra il frame (dimensioni 300x150)
189        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
190    }
191 }

Test


192 public class Test {
193    public static void main(String[] args) {
194        // Questa parte è per fare gli esperimenti
195        Auto c = new Auto("Smart", 4, 2000, "rossa", false, "SD");
196    }
197 }

Anteprima
Vedrai una selezione di 22 pagine su 105
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 1 Programmazione ad oggetti (java) teoria + progetti java completi Pag. 2
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 6
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 11
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 16
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 21
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 26
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 31
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 36
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 41
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 46
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 51
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 56
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 61
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 66
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 71
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 76
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 81
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 86
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 91
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 96
Anteprima di 22 pagg. su 105.
Scarica il documento per vederlo tutto.
Programmazione ad oggetti (java) teoria + progetti java completi Pag. 101
1 su 105
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher matrix0909 di informazioni apprese con la frequenza delle lezioni di Programmazione ad oggetti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Ficco Massimo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community