Classi e TDA

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Classi e Tipi di dati astratti

Introduzione
Nel modulo precedente abbiamo visto che una classe un tipo di dato definito dallutente e che pu essere utilizzata allinterno di un programma come se si trattasse di un tipo di dato primitivo. In questa dispensa amplieremo il concetto di tipo di dato per giungere alla nozione di tipo di dato astratto e completare cos la descrizione di una classe.

Tipi di dato
Il tipo di un dato determina: linsieme dei valori che il dato pu assumere; le operazioni consentite sul dato. Per esempio, la dichiarazione int i nel linguaggio Java indica che la variabile i pu assumere solo valori numerici interi e che le operazioni consentite sono le sole operazioni aritmetiche e di confronto. Il compilatore pu usare le informazioni sui tipi per controllare la compatibilit e la legalit dei costrutti. Infatti, il tentativo di assegnare alla variabile i un valore non intero o di effettuare con essa operazioni non permesse, un errore che viene rilevato in fase di compilazione, prima ancora di eseguire il programma. Tutti i moderni linguaggi di programmazione forniscono un insieme di tipi di dati primitivi, che generalmente comprendono: il tipo numerico intero, il tipo numerico reale, il tipo carattere, il tipo booleano. Insieme ai tipi primitivi sono forniti anche gli operatori che consentono di effettuare con essi operazioni pi o meno complesse: gli operatori aritmetici, logici e di confronto. Solitamente i linguaggi di programmazione evoluti mettono a disposizione dellutente almeno altri due tipi di dati, non primitivi ma strutturati: gli array (insiemi di oggetti omogenei accessibili mediante indice) e le stringhe (sequenze di caratteri alfanumerici). Un altro importante aspetto della tipizzazione dei dati quello di rendere completamente trasparente allutente (il programmatore) il modo in cui i dati sono rappresentati allinterno della macchina. Per esempio, la dichiarazione int i nel linguaggio Java, fa s che il programmatore possa utilizzare immediatamente la variabile i senza preoccuparsi: dello spazio di memoria che ad essa deve essere riservato, del modo in cui i valori che assumer devono essere rappresentati in memoria (modulo e segno, complemento a due, ecc.).

Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

In questo senso il tipo di dato una forma di astrazione dalle caratteristiche fisiche della macchina, cio dallhardware.

Astrazione
Lastrazione un processo mentale che luomo mette in atto, il pi delle volte inconsapevolmente, soprattutto quando deve gestire aspetti complessi della realt. Per esempio, dovendo descrivere un computer, la risposta sar diversa a seconda del nostro interlocutore. Se la richiesta stata avanzata da una persona non esperta, possiamo basare la descrizione su quegli aspetti basilari, che permettono al principiante di iniziare ad usare il computer in maniera produttiva, ma senza troppe pretese. Se la stessa richiesta proviene da uno studente di informatica, la descrizione deve essere pi dettagliata e riguardare anche aspetti tecnici che gli consentano di acquisire una conoscenza pi approfondita, rispetto a quella di un utente finale. Infine, se il nostro interlocutore un bambino, possiamo limitare la descrizione a pochi e semplici elementi, quali: ha un interruttore per laccensione, ha una tastiera per scrivere, ha un monitor per visualizzare testo e immagini, pu essere utilizzato per giocare. Lastrazione quindi un procedimento che consente di descrivere la realt di interesse in modo semplificato, evidenziando gli elementi importanti in un determinato contesto e tralasciando gli aspetti irrilevanti. Il risultato dellastrazione la creazione di un modello. Tutti i linguaggi di programmazione forniscono tecniche di astrazione: la complessit dei problemi che si in grado di risolvere direttamente collegata al tipo e alla qualit dellastrazione.

Tipi di dati astratti


I linguaggi orientati agli oggetti permettono di definire, insieme alla struttura del dato, anche le operazioni che su di esso sono consentite, esattamente come avviene per i tipi primitivi. Un tipo di dato che descrive come un tuttuno sia la sua struttura, sia le operazioni che su di esso si possono eseguire, viene detto tipo di dato astratto. Esempio Se si vogliono ottenere cognome e nome di uno studente, con il linguaggio Java sufficiente descrivere la struttura interna del dato e definire tali operazioni allinterno della classe: public class Studente { private int matricola; private String cognome; private String nome; private int classe;
Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

public String getCognome() { return cognome; } public String getNome() { return nome; }

La classe, una volta compilata, a disposizione di chiunque la voglia utilizzare: lunica cosa che bisogna conoscere la sua interfaccia, cio linsieme di operazioni (metodi) che su di essa si possono eseguire. Se limplementazione di un metodo cambia o se cambia la struttura della classe, lutente non se ne accorge, a patto che linterfaccia rimanga invariata. Unapplicazione che utilizza la classe Studente pu essere la seguente: class UsaStudente { String cogn; Studente s= new Studente(); cogn= s.getCognome(); } Nel seguito chiariremo che cosa si intende per programmazione orientata agli oggetti mediante opportuni esempi.

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

You might also like