PROGRAMMAZIONE AD OGGETTI 2001-2002

26-11-2001

 

SPAZIO E TEMPO

OGGETTI CON SPAZIO E TEMPO

CLASSI, OGGETTI E RELAZIONI

RIASSUNTO

 


 

SPAZIO E TEMPO

Lo spazio ed il tempo sono due grandezze fondamentali per l'architettura di Von Neumann: lo sapzio serve per memorizzare i dati mentre il tempo serve per elaborare i dati. Bisogna cercare sempre un compromesso tra spazio e tempo per realizzare un buon progetto. E' anche vero però che al giorno d'oggi il costo dei supporti di memoria è molto diminuito: si punta perciò a ridurre il tempo di calcolo, con innovazioni hardware e software.

HOME


 

OGGETTI CON SPAZIO E TEMPO

Un oggetto è costituito da un'identità, dagli attributi e da un insieme di metodi. L'identità è appunto il nome dell'oggetto e deve essere unico per ogni oggetto; gli attributi sono "lo spazio" dell'oggetto, i valori salvati in memoria che esso contiene; i metodi rappresentano ciò che l'oggetto può fare (ossia le funzioni che può eseguire). Quindi ogni oggetto ha dentro di sé una certa quantità di spazio e impiega del tempo per svolgere delle operazioni (potrebbe essere una piccola macchina di Con Neumann). Il mondo reale può così essere modellato con gli oggetti: una macchina potrebbe essere un oggetto la cui identità è il nome del modello, i cui attributi sono il colore, la marca, i consumi, la velocità massima ecc., i cui metodi sono: accelerare, frenare, accendere, spegnere, rompersi....

Programmare ad oggetti significa scomporre il problema in varie parti indipendenti, cioè degli oggetti per poi lavorare con questi: con la programmazione normale invece si adattava il proprio programma di volta in volta ad un nuovo problema. La programmazione ad oggetti permette anche di modificare in modo più semplice un programma: non è necessario riscrivere il programma ma basta modificare solo gli oggetti interessati al cambiamento. Questo aspetto è utile per l'aggiornamento di un software già esistente: permette di risparmiare tempo e fatica.

I vari oggetti possono interagire tra loro con messaggi e con metodi. Un vantaggio degli oggetti è quello di poter nascondere il dettaglio (incapsulare): non interessa come l'oggetto sia realizzato, ma basta sapere cosa può fare e quali sono i suoi attributi. L'incapsulazione aiuta a rendere il codice più leggibile e più intuitivo, perchè più vicino al modo normale di pensare le cose.

HOME


CLASSI, OGGETTI E RELAZIONI

La classe è la definizione di un insieme di oggetti; è una sorta di modello dal quale "discendono" gli oggetti singoli veri e propri. Gli oggetti sono le istanze di una classe. Gli oggetti possono interagire tra loro mentre la classi sono solo dei modelli generali. Tutti gli oggetti definiti a partire dalla stessa classe sono uguali tra loro: hanno gli stessi attributi e gli stessi metodi, quello che cambia è il nome e lo stato (contenuto) degli attributi. La relazione che c'è tra un oggetto e la classe a cui appartiene è una relazione di ereditarietà.

Ci sono diversi tipi di relazioni tra gli oggetti. L'ereditarietà (is a, è un) è una di queste. Inoltre un oggetto può essere costituito da un insieme di altri oggetti (un oggetto "stanza" è costituito da quattro oggetti "parete" e due oggetti "pavimento"): questa relazione si chiama aggregazione (parte di, costituito da). Si possono descrivere le relazioni tra i vari oggetti con dei diagrammi, chiamati appunto diagrammi ad oggetti: le relazioni sono rappresentate con delle linee, ci sono poi dei simboli per specificare il tipo di relazione o il numero degli oggetti; per ogni oggetto sono indicate le caratteristiche fondamentali. Diagrammi di questo tipo possono essere utili in fase di progettazione del software, per scomporre il problema negli oggetti più adatti allo scopo.

HOME


RIASSUNTO

Conviene usare gli oggetti perchè:

nascondono le scelte effettuate per realizzare il programma: è visibile solo l'interfaccia degli oggetti (attributi e metodi)

si definiscono parti di codice che possono essere riutilizzate per altri programmi, al limite con delle piccole modifiche

si possono sostituire solamente delle parti di programma con altre più efficienti e aggiornate senza dover aggiornare tutto il programma

sono quindi più adatti per lo sviluppo iterativo del software (vista la velocità dei progressi in campo informatico è necessario poter aggiornare un software in poco tempo e con costi contenuti).

HOME