Sei sulla pagina 1di 5

Il paradigma Object Oriented

Con il paradigma object oriented la scomposizione del problema non si basa sulle procedure/funzioni ma sui dati. Prima di affrontare le nozioni fondamentali di tale paradigma, osserviamo con un esempio come viene risolto il problema della determinazione dellarea di un quadrato con lapproccio a oggetti.

Esempio: Area di un quadrato (approccio a oggetti)


Il quadrato visto, attraverso un processo di astrazione, come una classe di oggetti aventi tutti le stesse caratteristiche e gli stessi comportamenti.

Caratteristiche Ci dicono quali sono le propriet e lo stato delloggetto. Le caratteristiche sono definite mediante delle variabili denominate variabili di istanza o attributi. Le propriet sono caratteristiche statiche, invariabili nel tempo: ad es. un cane ha sempre un pelo che ricopre il suo corpo; unautomobile ha sempre un modello, un colore e cos via. Lo stato una caratteristica dinamica, variabile nel tempo: ad es. un cane pu avere il pelo rasato o lungo a seconda della stagione; due automobili possono avere modello e colore diversi. In altre parole lo stato di un oggetto determinato dalle propriet e dai loro rispettivi valori, ad un certo istante t. Nel caso del nostro esempio il lato ci che caratterizza il quadrato (propriet). In ogni istante, il valore del lato, determina lo stato delloggetto. Osservazione Le propriet che caratterizzano uno stesso oggetto possono essere diverse poich dipendono dallapplicazione che si vuole realizzare: ad es. per una societ che vende biciclette possono essere importanti il costo di acquisto, il prezzo di vendita, il modello di una bicicletta mentre, per unazienda che costruisce biciclette, saranno importanti informazioni pi tecniche quali il numero di componenti, il numero di ore previste per il montaggio, il tipo di lavorazione e cos via. Comportamenti I comportamenti sono le funzionalit che loggetto mette a disposizione. Le funzionalit sono definite attraverso i metodi. Nel caso del quadrato, le funzionalit potrebbero essere il calcolo dellarea, il calcolo del perimetro e della diagonale.

Classi e oggetti
Tutti gli oggetti che presentano le stesse caratteristiche, anche se il loro stato pu essere diverso, e lo stesso comportamento vengono raggruppate in una stessa classe. Una classe riassume le propriet e il comportamento di un insieme di oggetti attraverso un processo di astrazione. Una classe pu essere pensata come un tipo di dato astratto (TDA), mentre gli oggetti che ad essa appartengono, sono detti istanze della classe. Convenzionalmente il nome di una classe inizia con una lettera maiuscola. Attributi e metodi di una classe sono chiamati anche, indistintamente, membri della classe.
Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

Tornando allesempio, la classe Quadrato rappresenta un insieme di oggetti quadrato che hanno la stessa propriet possedere ununica dimensione, il lato e che offrono la stesse funzionalit calcolo dellarea.

Diagramma della classe


La rappresentazione grafica di una classe costituita da un rettangolo suddiviso orizzontalmente in tre sezioni: la prima sezione a partire dallalto contiene il nome della classe, la seconda sezione contiene le variabili distanza, la terza sezione contiene i metodi.

Quadrato

Nom della classe e

lato

Variabili di istanza

calcolaArea

Metodi

Il linguaggio che utilizzeremo per descrivere le classi, gli oggetti e le loro relazioni denominato UML (Unified Modeling Language).

Codice della classe


public class Quadrato { //VARIABILI DI ISTANZA public double lato; //METODI public double calcolaArea() { return Math.pow(lato,2); }

Nota: le variabili di istanza non sono quasi mai pubbliche ma private. Il motivo per cui in questo caso si scelto di rendere pubblica la variabile di istanza dovuto solo a necessit di esemplificazione. La classe Quadrato non un programma eseguibile ma un tipo di dato astratto che pu essere utilizzato da un altro programma, a patto che si conosca la sua interfaccia pubblica. Linterfaccia pubblica costituita da tutti i membri (attributi e metodi) dichiarati public. Per far conoscere linterfaccia pubblica di una classe, Java fornisce un apposito tool chiamato javadoc che produce documentazione in formato HTML a partire dalle informazioni inserite nella classe attraverso una opportuna sintassi.
Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

Vedremo pi avanti come si utilizza javadoc. Per il momento importante comprendere che ogni classe Java deve essere accompagnata da opportuna documentazione relativa allinterfaccia pubblica, in modo che ogni altro programmatore sia in grado di utilizzarla. Nella figura seguente riportata una porzione della documentazione relativa alla classe Math.

I membri privati (private) di una classe non sono invece accessibili dallesterno, cio possono essere utilizzati solo dai metodi definiti allinterno della classe stessa. Chiariremo meglio questo aspetto fra poco. Dopo aver definito la classe Quadrato e aver preparato la documentazione relativa, possiamo utilizzarla allinterno di una qualsiasi applicazione. Segue un esempio di utilizzo di Quadrato. import javax.swing.*; public class UsaQuadrato { public static void main(String[] args) { //VARIABILI LOCALI double area; Quadrato unQuadrato; //CREAZIONE OGGETTO QUADRATO unQuadrato= new Quadrato(); //ISTRUZIONI unQuadrato.lato= Double.parseDouble(JoptionPane.showInputDialog (Immettere la misura del lato)); area= unQuadrato.calcolaArea(); JoptionPane.showMessageDialog(null,Area= +area);

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

} Per maggiori dettagli, si veda la dispensa Modello di esecuzione.

Incapsulamento e information hiding


Dalla nozione di tipo di dato astratto derivano due propriet comuni ai linguaggi di programmazione a oggetti: incapsulamento e information hiding. Con incapsulamento si intende la propriet degli oggetti di incorporare al loro interno sia le caratteristiche (variabili di istanza), sia i comportamenti (metodi). Con information hiding si intende la propriet che hanno gli oggetti di rendere invisibili allesterno la loro struttura e limplementazione (codice) dei metodi. Un oggetto pu allora essere pensato come una scatola nera (black box) della quale non ci interessa conoscere come realizzata (struttura e implementazione dei metodi), ma solo come funziona (interfaccia). Esempio Una radio un oggetto che possiede la caratteristica di essere incapsulato. Tutti sappiamo che allinterno della radio ci sono vari componenti elettrici ed elettronici, ma per poterla utilizzare non dobbiamo accedere direttamente alle sue componenti interne. Loggetto presenta infatti una serie di manopole e pulsanti che ne costituiscono linterfaccia e che ne facilitano luso: il solo modo in cui previsto che loggetto venga usato attraverso la sua interfaccia. Lesempio precedente viola il principio dellinformation hiding poich il programma UsaQuadrato accede direttamente alla variabile di istanza lato. Laccesso alle variabili di istanza degli oggetti da parte di altri programmi potrebbe determinare cambiamenti al loro stato interno con conseguenze imprevedibili. Per questo motivo si preferisce inibire laccesso alle variabili di istanza di una classe o consentire laccesso solo attraverso luso di opportuni metodi. Per rendere una variabile di istanza inaccessibile dallesterno sufficiente dichiararla private. Modifichiamo, a titolo di esempio, il codice della classe Quadrato: class Quadrato { //VARIABILI DI ISTANZA private double lato; //METODI public double calcolaArea() { return Math.pow(lato,2); } }

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/11

Listruzione unQuadrato.lato= Double.parseDouble(JoptionPane.showInputDialog (Immettere la misura del lato)); presente nella classe UsaQuadrato genera un errore in fase di compilazione. Per consentire laccesso in lettura o scrittura a tale variabile, occorre fornire appositi metodi (di accesso/modifica) che saranno descritti nella dispensa successiva.

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: 10/10/11

Potrebbero piacerti anche