Capitolo 1
Introduzione
Lucidi relativi al volume:
Java – Guida alla programmazione
James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Per iniziare
Obiettivo
Insegnare a programmare in modo efficace
Abilità e informazioni da acquisire
Modello mentale del comportamento di computer e reti
Soluzione dei problemi
Progettazione orientata agli oggetti
Java
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB (7200
RPM, tempo di ricerca 9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA GeForce4
MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet 10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
GeForce4 MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
3,06 miliardi di
operazioni al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
512 milioni di byte di
GeForce4 MX a 64 MB
memoria che possono
Unità DVD-ROM 16x Max
essere trasferiti al doppio
Unità CD-RW 48x/24x/48x
della velocità normale
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Un byte corrisponde a 8 bit
Scheda di rete Fast Ethernet
10/100
Un bit è 0 o 1
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
Memorizza 200 miliardi
GeForce4 MX a 64 MB
di byte di dati. Sono
Unità DVD-ROM 16x Max
utili un valore RPM
Unità CD-RW 48x/24x/48x
elevato e un tempo
Modem telefonico PCI a 56 Kbps
di ricerca ridotto.
Windows XP Home Edition®
0,009 secondi è la media
Scheda di rete Fast Ethernet
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
GeForce4 MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
17" sulla diagonale.
Risoluzione fino a
1.280 x 1.024 pixel
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
Microprocessore per
GeForce4 MX a 64 MB
la visualizzazione di
Unità DVD-ROM 16x Max
immagini con 64 milioni
Unità CD-RW 48x/24x/48x
di byte di memoria.
Modem telefonico PCI a 56 Kbps
Una quantità di memoria
Windows XP Home Edition®
maggiore supporta più colori
Scheda di rete Fast Ethernet
e una risoluzione più elevata
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
Legge i DVD 16 volte
GeForce4 MX a 64 MB
più velocemente di
Unità DVD-ROM 16x Max
un'unità DVD di base.
Unità CD-RW 48x/24x/48x
Può contenere fino a
Modem telefonico PCI a 56 Kbps
8 miliardi di byte di dati
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
Può leggere e scrivere
GeForce4 MX a 64 MB
CD. Può contenere
Unità DVD-ROM 16x Max
650 milioni di byte di dati
Unità CD-RW 48x/24x/48x
Legge 48 volte più
Modem telefonico PCI a 56 Kbps
veloce e scrive 24 volte
Windows XP Home Edition®
più veloce di un'unità
Scheda di rete Fast Ethernet
di base
10/100
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
GeForce4 MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
Può inviare o ricevere
fino a 56 migliaia
di bit al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
GeForce4 MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
Sistema operativo
per computer che usa
un'interfaccia grafica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Organizzazione del computer
Specifiche del computer
Processore Intel® Pentium 4 a
3,06 GHz con cache di 512 KB
SDRAM DDR di 512 MB
Disco rigido ATA-100 a 200 GB
(7200 RPM, tempo di ricerca
9,0 ms)
Monitor LCD 17"
Scheda grafica NVIDIA
GeForce4 MX a 64 MB
Unità DVD-ROM 16x Max
Unità CD-RW 48x/24x/48x
Modem telefonico PCI a 56 Kbps
Windows XP Home Edition®
Scheda di rete Fast Ethernet
10/100
Può inviare o ricevere
dati a due velocità:
10 o 100 milioni
di byte al secondo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Rete domestica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Dorsali
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Comunicazione di rete
Protocollo di comunicazione
Set di regole che governa l'invio e la ricezione dei dati
TCP/IP
Scambio di pacchetti di informazioni su Internet
FTP
Scambio di file tra computer
SMTP
Scambio di posta elettronica su Internet
POP
Scambio di posta elettronica tra il software di lettura e l'ISP
HTTP
Scambio di file sul WWW
SSL
Informazioni sulla crittografia dei dati
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
Programma a cui
il computer può
rispondere direttamente.
Ogni istruzione è un
codice binario che
corrisponde a un'istruzione
nativa
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
Linguaggio simbolico
per la codifica delle
istruzioni in linguaggio
macchina
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
La conoscenza dettagliata
della macchina non è
richiesta. Utilizza un
vocabolario e una
struttura vicini al
problema da risolvere
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
Java è un linguaggio
di programmazione
di alto livello
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software
Programma
Sequenza di istruzioni che indica a un computer cosa fare
Esecuzione
Svolgimento della sequenza di istruzioni
Linguaggio di programmazione
Linguaggio per la scrittura di istruzioni su un computer
Tipi principali
Linguaggio macchina
o codice oggetto
Linguaggio assembly
Alto livello
Per i programmi da
eseguire, è necessario
"tradurlo"
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Traduzione
Traduttore
Accetta un programma scritto in un linguaggio di origine e
traduce quel programma in un linguaggio di destinazione
Compilatore
Nome standard per un traduttore il cui linguaggio di
origine è un linguaggio di alto livello
Interprete
Un traduttore che traduce ed esegue un programma di
origine
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Traduzione di Java
Processo in due fasi
Prima fase
Traduzione da Java in bytecode
I bytecode sono codice oggetto neutro dal punto di
vista dell'architettura
I bytecode sono memorizzati in un file con estensione
.class
Seconda fase
Un interprete traduce i bytecode in istruzioni macchina e
le esegue
L'interprete è noto come macchina virtuale Java o JVM
(Java Virtual Machine)
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Attività
Visualizzare la previsione
I think there is a world market for maybe five computers.
Thomas Watson, IBM, 1943.
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Output dell'esempio
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Tre istruzioni costituiscono l'azione del metodo
main()
Il metodo main() è parte della classe
DisplayForecast
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Un metodo è un frammento di codice denominato
che esegue qualche azione o implementa un
comportamento
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
DisplayForecast.java
// Autori: J. P. Cohoon e J. W. Davidson
// Scopo: visualizzare una citazione nella finestra della
console
public class DisplayForecast
// metodo main(): punto di ingresso per l'applicazione
public static void main(String[] args)
System.out.print("I think there is a world market for");
System.out.println(" maybe five computers.");
System.out.println("
Thomas Watson, IBM, 1943.");
}
}
Un programma applicativo è necessario per
disporre di un metodo public static void chiamato
main()
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Java e Internet
Your machine
Your friend's machine
I think ...
DisplayForecast.java
Java
Compiler
JVM
DisplayForecast.class
DisplayForecast.class
Modem
Modem
Internet
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Software per l'ingegneria
La complessità del software aumenta con i tentativi di
renderne più facile l'utilizzo
Nascita delle procedure guidate
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile,
comprensibile, economico, adattabile e riutilizzabile
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
Funziona correttamente
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
A causa della lunga durata sono coinvolte molte
persone
Creazione
Debug
Manutenzione
Perfezionamento
Due terzi del costo vanno generalmente oltre la
creazione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
Il costo di sviluppo e manutenzione non dovrebbe
superare il vantaggio previsto
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
Progettare il software in modo che si possano
aggiungere nuove funzioni e capacità
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Ingegneria del software
Obiettivo
Produzione di software efficace e affidabile, comprensibile,
economico, adattabile e riutilizzabile
Ha senso a causa dei notevoli costi richiesti per
ottenere componenti flessibili che possono essere
utilizzati in altri prodotti software
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
Astrazione
Incapsulamento
Modularità
Gerarchia
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
Astrazione
Incapsulamento
Modularità
Gerarchia
Determina le proprietà e le
funzioni rilevanti, ignorando
i dettagli non essenziali
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
Astrazione
Incapsulamento
Modularità
Gerarchia
Separa i componenti in aspetti
esterni e interni
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
Astrazione
Incapsulamento
Modularità
Gerarchia
Costruisce un sistema da
componenti e pacchetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Principi
Astrazione
Incapsulamento
Modularità
Gerarchia
Grado oppure ordinamento
degli oggetti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Progettazione orientata agli oggetti
Scopo
Promuovere il pensiero sul software così da modellare il
modo in cui si pensa e si interagisce con il mondo fisico
Comprendendo la specializzazione
Oggetto
Proprietà o attributi
Comportamenti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programmazione
Classe
Termine per un tipo di oggetto software
Oggetto
Un'istanza di una classe con
proprietà e attributi specifici
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Programmazione
Soluzione dei problemi attraverso l'uso di un sistema
informatico
Massima
Non è possibile far fare qualcosa a un computer se non si
sa come farlo da soli
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
Perché è importante?
A tutti sono assegnate attività da svolgere
Al lavoro
A casa
A scuola
Perché non occuparsene
Subito
In modo efficace
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
Perché interessarsi della
risoluzione dei problemi basata
sul computer (vale a dire della
programmazione)?
Chiarezza
Frontiere della scienza
Proficuità
Necessità
Qualità della vita
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
Da ricordare
L'obiettivo non è una soluzione intelligente ma una
soluzione corretta
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
Accettare
Il processo è iterativo
Nella soluzione dei problemi, una comprensione
maggiore può richiedere di ricominciare
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Soluzione dei problemi
Soluzioni
Spesso richiedono un pensiero concreto e astratto
Lavoro di squadra
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Analisi
Progettazione
Implementazione
Verifica
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Analisi
Progettazione
Implementazione
Verifica
Determina l'input, l'output e altri componenti del problema
La descrizione dovrebbe essere abbastanza specifica da
consentire di risolvere il problema
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Analisi
Progettazione
Implementazione
Verifica
Descrivere i componenti e i processi associati per risolvere il
problema
Diretta e flessibile
Metodo - processo
Oggetto - componente e metodi associati
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Analisi
Progettazione
Implementazione
Verifica
Sviluppare soluzioni per i componenti e usare questi componenti
per produrre una soluzione generale
Diretta e flessibile
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Che cos'è?
Analisi
Progettazione
Implementazione
Verifica
Verificare i componenti singolarmente e nell'insieme
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Processo di soluzione dei problemi
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
Come fare?
Dipende dal modo di pensare
Metodo del bricolage
Metodo pianificato
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
Come fare?
Dipende dal modo di pensare
Metodo del bricolage
Metodo pianificato
Caratteristiche e aspetti del problema vengono ripetutamente
provati e manipolati secondo il proprio modo di organizzare le
informazioni
Uno sbaglio non è un errore, ma una correzione in attesa di
essere eseguita nel corso naturale della risoluzione del
problema
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Metodologie di soluzione dei problemi
Come fare?
Dipende dal modo di pensare
Metodo del bricolage
Metodo pianificato
Usa la logica, il formalismo e l'ingegneria insieme a una
metodologia strutturata
La struttura inerente offerta dal metodo pianificato facilita la
correttezza della soluzione
Metodo dominante nell'insegnamento
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Scoprire quali informazioni sono note rispetto al problema
Parlare con chi ha presentato il problema
Determinare quali tentativi hanno avuto successo e quali no
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Le ricerche possono richiedere diverso tempo e generare delle
domande
Lo sforzo è ripagato da una migliore comprensione
La vera comprensione del problema ne facilita la soluzione
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Considerare
Tracciare una bozza della soluzione e poi rifinire i suoi
componenti fino a specificare l'intero processo
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Il tempo è prezioso
La correttezza è forse ancor più preziosa
Usare un'infrastruttura esistente funzionante
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Essere aperti all'utilizzo indiretto di materiali esistenti
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Fare tutte le supposizioni necessarie
Aumentare la probabilità che lo sforzo possa essere applicato
a situazioni future
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Scoprire quanto è possibile fare
Riutilizzare ciò che è stato
fatto prima
Prevedere il riutilizzo futuro
Dividere i problemi complessi
in sottoproblemi
Dividere e conquistare
Risolvere i sottoproblemi e combinarli in una
soluzione generale
Java – Guida alla programmazione - James Cohoon, Jack Davidson
Copyright © 2004 - The McGraw-Hill Companies srl
Suggerimenti
Letture
Testi sulla soluzione dei problemi
George Polya, How to Solve It;
A New Aspect of Mathematical Method,
Princeton Press, 1988
Wayne Wickelgren, How to Solve
Mathematical Problems, Dover Publications, 1995
Paul Zeitz, The Art and Craft of Problem Solving, John
Wiley, 1999
Esame sociologico dei vari stili di risoluzione dei problemi
Sherry Turkle e Seymour Papert, Epistemological
Pluralism: Styles and Voices Within the Computer
Culture, Signs: A Journal of Women in Culture and
Society, 1990