2011 04 Programmi e Oggetti 53 · 2011-10-08 · La programmazione ad oggetti ... nella...

53
http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 04 Programmi e Oggetti Software Alfonso Miola Ottobre 2011

Transcript of 2011 04 Programmi e Oggetti 53 · 2011-10-08 · La programmazione ad oggetti ... nella...

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Dispensa 04 Programmi e Oggetti Software

Alfonso Miola Ottobre 2011

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 2

Contenuti

  Cosa è un programma   Cosa significa programmare

  Il punto di vista del programmatore   Il punto di vista dell’utente

  Paradigmi di programmazione   La programmazione ad oggetti   Oggetti software – Esempi

  L’oggetto System.out   L’oggetto Math   Gli oggetti String

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 3

Prerequisiti

Questo capitolo presuppone la conoscenza degli argomenti già trattati nelle precedenti lezioni di questo corso e riportati nelle rispettive dispense, con particolare riferimento al capitolo 1 del libro di testo

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 4

Che cosa è un programma  Un programma (o applicazione) è usato da un

utente per risolvere un problema con l’ausilio di un calcolatore

 Un programma mostra a un utente, attraverso la sua interfaccia, la rappresentazione, nel calcolatore, di una porzione di mondo reale fatto di oggetti   la porzione di mondo rappresentata da un

programma è la realtà di interesse del programma   un programma rappresenta nel calcolatore gli

oggetti di una certa realtà di interesse, intesi e quindi rappresentati come dati e operazioni

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 5

Il punto di vista dell’utente  Un utente è interessato ad usare un

programma (applicazione) per risolvere un problema facendo eseguire un insieme di operazioni a un calcolatore   ciascuna operazione costituisce uno strumento

per l’utente del programma   l’esecuzione di ciascuna operazione

corrisponde allo svolgimento di una sequenza di azioni da parte del calcolatore

  l’effetto finale dell’esecuzione delle operazioni porta al raggiungimento di un risultato che costituisce per l’utente la soluzione del problema

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 6

Il calcolatore per un utente  Quindi un utente che utilizza un programma

(applicazione) vede il calcolatore come una macchina dedicata alla soluzione del problema da risolvere   l’utente non deve necessariamente conoscere le

problematiche della programmazione •  così come per poter guidare un’auto non bisogna

essere necessariamente un ingegnere meccanico   l’utente interagisce con l’applicazione

attraverso la sua interfaccia   l’interfaccia consente all’utente di usare i dati e

le operazioni disponibili nell’applicazione

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 7

Che cosa è la programmazione

La programmazione è :   scrittura (sintesi) di programmi   controllo — un calcolatore fa quello che gli viene

detto di fare   concretezza — un calcolatore per eseguire un

compito ha bisogno di istruzioni dettagliate   insegnamento — un calcolatore impara a eseguire

nuove operazioni quando e solo se gli viene detto come vanno realizzate

  modellazione — un programma rappresenta nel calcolatore una porzione di mondo, la realtà di interesse

  astrazione — il programmatore deve identificare le caratteristiche essenziali della realtà di interesse da modellare, evitando di descrivere dettagli inutili

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 8

Il punto di vista del programmatore

 Per un programmatore, un programma è un insieme di frasi (istruzioni) che descrivono una certa realtà di interesse in un linguaggio di programmazione

 Le istruzioni di un programma servono a descrivere il modo con cui devono essere rappresentati i dati della realtà di interesse del programma e le azioni che devono essere svolte da parte del calcolatore quando un utente chiede l’esecuzione di una certa operazione

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 9

Il calcolatore per un programmatore

 Un programmatore è normalmente interessato solo agli strati più esterni dell’architettura di un calcolatore (secondo lo schema a cipolla)

Gli strati più interni riguardano altre figure dell’informatica

programmi applicativi

strumenti di programmazione

sistema operativo

hardware

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 10

Paradigmi di programmazione

Esistono diversi approcci alla programmazione, chiamati paradigmi di programmazione   nel paradigma di programmazione imperativa, un

programma specifica le azioni che devono essere eseguite in sequenza per calcolare i risultati a partire dai dati

  nel paradigma di programmazione funzionale, un programma è la definizione di una funzione, parametrica rispetto ai dati, che calcola i risultati

  nel paradigma di programmazione logica, un programma è la descrizione delle proprietà che devono essere verificate dai risultati sulla base delle proprietà verificate dai dati

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 11

Programmazione orientata agli oggetti

Il paradigma di programmazione orientata agli oggetti è basato sul seguente punto di vista   il mondo reale è fatto di oggetti   dato che un programma è la rappresentazione

nel calcolatore di una certa realtà di interesse, allora anche il programma è composto da oggetti opportunamente rappresentati, chiamati oggetti software

  un programma modella una realtà di interesse come una collezione di oggetti software che cooperano

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 12

Oggetti e oggetti software

 Ciascun oggetto della realtà è:   identificabile con un nome   ha caratteristiche (proprietà) ben precise   svolge funzioni specifiche ed esegue operazioni

 Un oggetto software non è quindi altro che una adeguata rappresentazione virtuale, nel calcolatore, di un oggetto della realtà, sia esso concreto oppure astratto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 13

Oggetti software . . .

 Un oggetto software ha:   un nome — che permette di referenziarlo con una

identificazione univoca   uno stato — un insieme di proprietà che lo

caratterizzano   un comportamento — un insieme di operazioni che

sa eseguire •  si può richiedere a un oggetto software di

eseguire una operazione mediante l’invio di un messaggio

•  l’uso di un oggetto software è descritto dalla sua interfaccia che specifica le operazioni che sa eseguire con le relative modalità di utilizzo

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 14

. . . Oggetti software

 Un oggetto software è quindi un vero e proprio esecutore specializzato che:   risolve specifici problemi

  può essere riusato ogni volta che serve

  può richiedere ad altri oggetti di svolgere funzioni di supporto per completare i propri scopi

  può essere composto con altri oggetti software per cooperare alla soluzione di problemi più complessi

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 15

Programmi orientati agli oggetti

 La programmazione nel paradigma orientato agli oggetti consiste nella:   identificazione delle tipologie di oggetti software

necessari per la soluzione di un dato problema   definizione del loro rispettivo progetto

 Un programma coordina le funzioni dei diversi oggetti coinvolti, per raggiungere il suo scopo finale

 L’esecuzione di un programma è quindi la cooperazione di più oggetti, ciascuno specializzato a risolvere un sottoproblema del problema posto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 16

Un oggetto reale

 Nel mondo reale esiste un oggetto concreto denominato “televisore”, nome che permette di far riferimento all’oggetto, ovvero, di referenziare l’oggetto

  Il televisore ha un suo stato   è acceso o spento   è sintonizzato su un certo canale   ha un certo livello di volume

  Il televisore ha un suo comportamento sa eseguire alcune operazioni   sa accendersi o spegnersi   sa cambiare canale   sa alzare o abbassare il volume

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 17

Un altro oggetto reale

 Nel mondo reale esiste anche un’altro oggetto denominato “studente”, nome che permette di far riferimento all’oggetto, ovvero, di referenziare l’oggetto

 Lo studente ha un suo stato   i suoi dati anagrafici   il corso di laurea e l’anno a cui è iscritto   il proprio piano di studi   gli esami superati

 Lo studente ha un suo comportamento sa eseguire alcune operazioni   sa iscriversi a un corso di laurea   sa cambiare piano di studi   sa superare un esame

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 18

Operazioni e messaggi

 Si può ad esempio chiedere al televisore di eseguire una delle operazioni previste premendo un tasto del telecomando   il telecomando invia al televisore la richiesta di

esecuzione dell’operazione sotto forma di segnale elettromagnetico

  nella terminologia della programmazione orientata agli oggetti, come già detto, la richiesta dell’esecuzione di una operazione viene fatta mediante l’invio di un messaggio a un oggetto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 19

Interfaccia e uso

 Come già detto l’interfaccia di un oggetto è la descrizione dell’insieme delle operazioni che l’oggetto sa eseguire

 L’interfaccia di un oggetto è quindi una sorta di “manuale d’uso” dell’oggetto:   l’elenco delle operazioni possibili, cioè ammissibili

e quindi permesse   la forma sintattica dei messaggi da inviare per

richiedere una determinata operazione, cioè come formulare la richiesta

  Il significato dell’operazione, la semantica, cioè cosa si ottiene dall’esecuzione dell’operazione

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 20

Proprietà e stato

 Come già detto in ogni istante, un oggetto è in un certo stato, descritto da un insieme di proprietà

 Ciascuna proprietà è caratterizzata da un nome, dal valore corrente e dall’insieme dei valori ammessi

 L’effetto di una operazione può consistere nel cambiamento dello stato (cioè del valore delle proprietà) dell’oggetto che la esegue

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 21

Progettazione . . .

 La progettazione di un oggetto è la definizione delle caratteristiche dell’oggetto e dei dettagli per la sua realizzazione   vengono definite le proprietà che determinano lo

stato dell’oggetto   viene definita l’interfaccia, cioè come l’oggetto

potrà essere usato dall’utente   viene definita ciascuna delle operazioni previste

dall’interfaccia

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 22

. . . Progettazione

 Ad esempio nell’ambito di un sistema di gestione delle carriere degli studenti, nella progettazione di un oggetto “studente”   il progettista stabilisce come l’oggetto potrà

essere usato dall’utente, cioè come, ad esempio, inserire o modificare informazioni relative all’oggetto

 Ad esempio nella progettazione di un televisore   il progettista stabilisce come l’oggetto potrà

essere usato dall’utente   il progettista definisce lo schema elettrico del

televisore

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 23

Progettazione e riuso  Nella progettazione di un oggetto si considera

l’esistenza di altri oggetti già disponibili il cui riuso può essere funzionale allo scopo   ad esempio, nella progettazione di un televisore si procede

all’assemblaggio di •  oggetti (componenti elettronici) standard, disponibili sul

mercato, che vengono usati conoscendone l’interfaccia •  componenti elettronici progettati in precedenza che vengono

riusati senza modifiche •  componenti elettronici progettati appositamente

 Quali sono gli oggetti che sono possibili componenti di un oggetto studente nella progettazione di un sistema di segreteria studenti ?

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 24

Progettazione di oggetti software

 Un oggetto software è progettato e realizzato da un programmatore   la progettazione e realizzazione di componenti

software è chiamata implementazione

 Il progetto di un oggetto software è chiamato classe   i linguaggi per la definizione di classi sono i

linguaggi di programmazione orientati agli oggetti

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 25

Costruzione di oggetti software   In genere la costruzione fisica di oggetti concreti

viene fatta da una fabbrica   ad esempio la fabbrica costruisce televisori sulla base del

progetto del televisore

 La costruzione di oggetti software viene fatta da un calcolatore   il calcolatore costruisce gli oggetti software a partire dalla

classe che è il loro progetto   il calcolatore viene usato come una macchina virtuale che sa

costruire degli oggetti software, mediante l’esecuzione di istruzioni di appositi linguaggi di programmazione orientati agli oggetti, come ad esempio Java

  gli oggetti software esistono solo nei calcolatori, cioè esistono solo in modo virtuale

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 26

Descrizione di oggetti software  Gli oggetti software, che esistono solo

virtualmente, vengono in genere descritti mediante un formalismo grafico (il linguaggio UML acronimo di Unified Modeling Language)

 Anche la cooperazione tra oggetti software viene descritta utilizzando il linguaggio UML   va sottolineato che il linguaggio UML non è un

linguaggio di programmazione   UML è quindi solo un linguaggio per la descrizione

di oggetti e classi

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 27

L’oggetto software System.out

 Lo schermo del calcolatore è un oggetto che viene rappresentato nei programmi da un oggetto software

•  un oggetto software che modella lo schermo del calcolatore è System.out e può essere così descritto

 Ciascun oggetto software è caratterizzato da   un nome (nell’esempio System.out)   le operazioni identificate da un nome (nell’esempio println)

eventualmente con dei parametri (nell’esempio frase) per i quali è definito un tipo (nell’esempio String)

• println(String frase)

System.out

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 28

Invio di un messaggio a System.out

 Per far visualizzare a System.out una frase, ad esempio la frase Ciao a tutti, è necessario inviargli il seguente messaggio   println("Ciao a tutti")

 Infatti System.out si aspetta di ricevere messaggi per eseguire l’operazione println con una stringa di caratteri come parametro

println("Ciao a tutti")

• println(String frase)

System.out

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 29

Utenti e uso di oggetti

 L’esempio ha mostrato l’uso di un oggetto software   l’uso di un oggetto software

•  è descritto dalla sua interfaccia •  si concretizza mediante l’invio di messaggi

  per l’utente di un oggetto software è sufficiente conoscere l’interfaccia dell’oggetto software

•  l’utente di un oggetto software può ignorare come l’oggetto software sia fatto internamente

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 30

Cosa è una Classe

 Una classe è il progetto di un oggetto software   definizione del progetto completo dell’oggetto

software •  definizione del progetto dello stato e del comportamento

dell’oggetto software (ovvero della sua interfaccia)   definizione dell’interfaccia dell’oggetto software

•  definizione della modalità d’uso con la definizione delle operazioni che l’oggetto software deve poter eseguire

 La definizione della classe per un oggetto software è scritta dal programmatore usando come formalismo un linguaggio di programmazione (orientato agli oggetti)

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 31

Costruzione di oggetti software

 Prima di poter utilizzare un oggetto software, è necessario costruirlo a partire dalla classe che ne definisce il progetto   la costruzione di oggetti software viene svolta dal

calcolatore, usato come macchina virtuale in grado di eseguire programmi scritti nel linguaggio di programmazione scelto

  esistono due modalità di costruzione di oggetti •  costruzione statica e costruzione dinamica

  tutti gli oggetti costruiti hanno uno stato e un comportamento che sono quelli definiti nella classe che ne rappresenta il progetto

 Si dice che gli oggetti costruiti appartengono alla classe che li definisce

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 32

Modalità di costruzione statica

 Nella modalità di costruzione statica di oggetti software   una classe è il progetto di un singolo oggetto

software   la definizione della classe corrisponde

essenzialmente anche alla costruzione dell’oggetto software dalla classe

•  l’aver definito una classe rende disponibile un oggetto software che ha le caratteristiche definite dalla classe

•  la definizione della classe è anche la costruzione dell’unico oggetto che le appartiene

•  la costruzione è quindi implicita e l’oggetto esiste già al momento della definizione della classe

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 33

Modalità di costruzione dinamica

 Nella modalità di costruzione dinamica di oggetti software   la classe è il progetto di un insieme di oggetti software dello

stesso tipo •  questi oggetti appartengono tutti alla stessa classe, essi sono

istanze della classe   la costruzione di un oggetto software a partire dalla classe

deve essere solitamente richiesta in modo esplicito •  vengono costruiti uno alla volta al momento in cui se ne fa

richiesta, cioè quando se ne ha bisogno •  al momento della definizione della classe infatti non viene

costruito nessun oggetto di quel certo tipo   è possibile costruire, successivamente, tanti oggetti software

di quel tipo ogni volta che serve •  questi oggetti sono fra di loro indipendenti

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 34

Oggetti

 Un oggetto software è chiamato   oggetto classe

•  se è l’oggetto software costruito automaticamente con modalità statica a partire dalla definizione di una classe

  oggetto istanza •  se è un oggetto software creato con modalità dinamica da

una classe

Nota bene: si parla genericamente (e più

semplicemente) di oggetti quando la distinzione tra oggetto classe e oggetto istanza non è necessaria

oppure è chiara dal contesto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 35

Componenti di una classe . . .

 Una classe è quindi il progetto di una tipologia di uno o più oggetti

 Poiché un oggetto consiste di stato e comportamento, in corrispondenza, la definizione di una classe deve comprendere la definizione di   lo stato - definito attraverso la dichiarazione di

variabili che rappresentano le proprietà dell’oggetto

  il comportamento - definito attraverso la definizione di metodi che implementano le operazioni dell’oggetto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 36

. . . Componenti di una classe

 Nella modalità di costruzione statica si parla di   variabili di classe   blocchi di inizializzazione statica necessari all’assegnazione

dei valori iniziali delle proprietà dell’unico oggetto della classe

  metodi di classe

 Nella modalità di costruzione dinamica si parla di   variabili di istanza   metodi di istanza   costruttori – metodi speciali, che hanno lo stesso nome della

classe, per richiedere al calcolatore, quando servono, la costruzione di oggetti istanza

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 37

La classe Math

 La classe Math segue la modalità di costruzione statica   Math è un oggetto che per sua natura è unico   Math è un oggetto classe   le proprietà di Math sono alcune costanti notevoli

E = 2.71... PI = 3.14...

double sqrt(double n) double pow(double b, double e) double log(double n) double random() ...

«oggetto classe» Math

static E : double static PI : double

static double sqrt(double n) static double pow(double b, double e) static double log(double n) static double random() ...

Math

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 38

La classe String

 La classe String segue la modalità di costruzione dinamica   un oggetto String rappresenta una stringa   ogni stringa è un oggetto istanza della classe String   gli oggetti String sanno eseguire operazioni utili per

la loro gestione facenti parte dell’interfaccia della classe

  gli oggetti String vengono costruiti con il costruttore denominato String come la classe

"calcolatore" : String

calcolatore

. . . le operazioni . . .

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 39

Riepilogo della dispensa

 Cosa è un programma  Cosa significa programmare  Cosa è la programmazione ad oggetti  Cosa sono gli oggetti software  Cosa è una classe  Costruzione statica e dinamica di classi  Esempi di oggetti software e di classi

Le successive diapositive sintetizzano quanto visto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 40

Che cosa è un programma

 Un programma (o applicazione) è usato da un utente per risolvere un problema con l’ausilio di un calcolatore

 Un programma mostra a un utente, attraverso la sua interfaccia, la rappresentazione, nel calcolatore, di una porzione di mondo reale fatto di oggetti

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 41

Programmazione orientata agli oggetti

Il paradigma di programmazione orientata agli oggetti è basato sul seguente punto di vista   il mondo reale è fatto di oggetti   dato che un programma è la rappresentazione

nel calcolatore di una certa realtà di interesse, allora anche il programma è composto da oggetti opportunamente rappresentati, chiamati oggetti software

  un programma modella una realtà di interesse come una collezione di oggetti software che cooperano

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 42

Programmi orientati agli oggetti

 La programmazione nel paradigma orientato agli oggetti consiste nella:   identificazione delle tipologie di oggetti software

necessari per la soluzione di un dato problema   definizione del loro rispettivo progetto

 Un programma coordina le funzioni dei diversi oggetti coinvolti, per raggiungere il suo scopo finale

 L’esecuzione di un programma è quindi la cooperazione di più oggetti, ciascuno specializzato a risolvere un sottoproblema del problema posto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 43

Oggetti e oggetti software

 Ciascun oggetto della realtà è:   identificabile con un nome   ha caratteristiche (proprietà) ben precise   svolge funzioni specifiche ed esegue operazioni

 Un oggetto software non è quindi altro che una adeguata rappresentazione virtuale, nel calcolatore, di un oggetto della realtà, sia esso concreto oppure astratto

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 44

Oggetti software . . .

 Un oggetto software ha:   un nome — che permette di referenziarlo con una

identificazione univoca   uno stato — un insieme di proprietà che lo

caratterizzano   un comportamento — un insieme di operazioni che

sa eseguire •  si può richiedere a un oggetto software di

eseguire una operazione mediante l’invio di un messaggio

•  l’uso di un oggetto software è descritto dalla sua interfaccia che specifica le operazioni che sa eseguire con le relative modalità di utilizzo

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 45

. . . Oggetti software

 Un oggetto software è quindi un vero e proprio esecutore specializzato che:   risolve specifici problemi

  può essere riusato ogni volta che serve

  può richiedere ad altri oggetti di svolgere funzioni di supporto per completare i propri scopi

  può essere composto con altri oggetti software per cooperare alla soluzione di problemi più complessi

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 46

Cosa è una Classe

 Una classe è il progetto di un oggetto software   definizione del progetto completo dell’oggetto

software •  definizione del progetto dello stato e del comportamento

dell’oggetto software (ovvero della sua interfaccia)   definizione dell’interfaccia dell’oggetto software

•  definizione della modalità d’uso con la definizione delle operazioni che l’oggetto software deve poter eseguire

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 47

Costruzione di oggetti software

 Prima di poter utilizzare un oggetto software, è necessario costruirlo a partire dalla classe che ne definisce il progetto   la costruzione di oggetti software viene svolta dal

calcolatore, usato come macchina virtuale in grado di eseguire programmi scritti nel linguaggio di programmazione scelto

  esistono due modalità di costruzione di oggetti •  costruzione statica e costruzione dinamica

  tutti gli oggetti costruiti hanno uno stato e un comportamento che sono quelli definiti nella classe che ne rappresenta il progetto

•  si dice che gli oggetti costruiti appartengono alla classe che li definisce

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 48

Modalità di costruzione statica

 Nella modalità di costruzione statica di oggetti software   una classe è il progetto di un singolo oggetto

software   la definizione della classe corrisponde

essenzialmente anche alla costruzione dell’oggetto software dalla classe

•  l’aver definito una classe rende disponibile un oggetto software che ha le caratteristiche definite dalla classe

•  la definizione della classe è anche la costruzione dell’unico oggetto che le appartiene

•  la costruzione è quindi implicita e l’oggetto esiste già al momento della definizione della classe

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 49

Modalità di costruzione dinamica

 Nella modalità di costruzione dinamica di oggetti software   la classe è il progetto di un insieme di oggetti software dello

stesso tipo •  questi oggetti appartengono tutti alla stessa classe, essi sono

istanze della classe   la costruzione di un oggetto software a partire dalla classe

deve essere solitamente richiesta in modo esplicito •  vengono costruiti uno alla volta al momento in cui se ne fa

richiesta, cioè quando se ne ha bisogno •  al momento della definizione della classe infatti non viene

costruito nessun oggetto di quel certo tipo   è possibile costruire, successivamente, tanti oggetti software

di quel tipo ogni volta che serve •  questi oggetti sono fra di loro indipendenti

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 50

L’oggetto software System.out

 Lo schermo del calcolatore è un oggetto che viene rappresentato nei programmi da un oggetto software

•  un oggetto software che modella lo schermo del calcolatore è System.out e può essere così descritto

 Ciascun oggetto software è caratterizzato da   un nome (nell’esempio System.out)   le operazioni identificate da un nome (nell’esempio println)

eventualmente con dei parametri (nell’esempio frase) per i quali è definito un tipo (nell’esempio String)

• println(String frase)

System.out

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 51

La classe Math

 La classe Math segue la modalità di costruzione statica   Math è un oggetto che per sua natura è unico   Math è un oggetto classe   le proprietà di Math sono alcune costanti notevoli

E = 2.71... PI = 3.14...

double sqrt(double n) double pow(double b, double e) double log(double n) double random() ...

«oggetto classe» Math

static E : double static PI : double

static double sqrt(double n) static double pow(double b, double e) static double log(double n) static double random() ...

Math

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 52

La classe String

 La classe String segue la modalità di costruzione dinamica   un oggetto String rappresenta una stringa   ogni stringa è un oggetto istanza della classe String   gli oggetti String sanno eseguire operazioni utili per

la loro gestione facenti parte dell’interfaccia della classe

  gli oggetti String vengono costruiti con il costruttore denominato String come la classe

"calcolatore" : String

calcolatore

. . . le operazioni . . .

http://www.dia.uniroma3.it/~java/fondinf/ Programmi e Oggetti Software 53

Riferimenti al libro di testo

 Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 2 sugli oggetti software, tenendo conto che   il paragrafo 2.3.3 – Un oggetto per la lettura da

tastiera – lo vedremo in seguito e quindi per ora può essere saltato

  gli argomenti trattati nei seguenti paragrafi non faranno parte del programma d’esame e quindi devono essere omessi nello studio del capitolo

•  2.3.4 – Robot e labirinti •  2.6.2 – Le classi Robot e Labirinto