Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon,...

71
Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl

Transcript of Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon,...

Page 1: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Capitolo 1Introduzione

Lucidi relativi al volume:

Java – Guida alla programmazione James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Page 2: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 3: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 4: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Organizzazione del computer

Page 5: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 6: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

512 milioni di byte dimemoria che possono

essere trasferiti al doppio della velocità normale

Un byte corrisponde a 8 bit

Un bit è 0 o 1

Page 7: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Memorizza 200 miliardi di byte di dati. Sono utili un valore RPM elevato e un tempo

di ricerca ridotto.0,009 secondi è la media

Page 8: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 9: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Microprocessore per la visualizzazione di

immagini con 64 milioni di byte di memoria.

Una quantità di memoria maggiore supporta più colori e una risoluzione più elevata

Page 10: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Legge i DVD 16 volte più velocemente di

un'unità DVD di base. Può contenere fino a

8 miliardi di byte di dati

Page 11: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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ò leggere e scrivere CD. Può contenere

650 milioni di byte di datiLegge 48 volte più

veloce e scrive 24 volte più veloce di un'unità

di base

Page 12: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 13: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 14: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 15: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Rete domestica

Page 16: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Dorsali

Page 17: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 18: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 19: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 20: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 21: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 22: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 23: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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"

Page 24: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 25: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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)

Page 26: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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.

Page 27: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Output dell'esempio

Page 28: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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.");

}}

Page 29: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 30: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 31: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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()

Page 32: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Java e Internet

I think ...

JVMJava

Compiler

DisplayForecast.java

DisplayForecast.class DisplayForecast.class

Modem Modem

Your machine Your friend's machine

Internet

Page 33: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 34: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 35: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 36: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 37: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 38: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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à

Page 39: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 40: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Principi Astrazione

Incapsulamento

Modularità

Gerarchia

Page 41: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 42: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 43: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Principi Astrazione

Incapsulamento

Modularità

Gerarchia

Costruisce un sistema dacomponenti e pacchetti

Page 44: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 45: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 46: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 47: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 48: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 49: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 50: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 51: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 52: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 53: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Processo di soluzione dei problemi Che cos'è?

Page 54: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 55: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 56: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 57: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 58: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 59: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Processo di soluzione dei problemi

Page 60: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlMetodologie di soluzione dei problemi Come fare?

Dipende dal modo di pensare

Metodo del bricolage

Metodo pianificato

Page 61: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlMetodologie 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

Page 62: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlMetodologie 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

Page 63: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 64: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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

Page 65: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiLe 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

Page 66: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiConsiderare

Tracciare una bozza della soluzione e poi rifinire i suoi componenti fino a specificare l'intero processo

Page 67: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiIl tempo è prezioso

La correttezza è forse ancor più preziosa

Usare un'infrastruttura esistente funzionante

Page 68: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiEssere aperti all'utilizzo indiretto di materiali esistenti

Page 69: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiFare tutte le supposizioni necessarie

Aumentare la probabilità che lo sforzo possa essere applicato a situazioni future

Page 70: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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 sottoproblemiDividere e conquistare

Risolvere i sottoproblemi e combinarli in una soluzione generale

Page 71: Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

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