Concetti Oo Classe

75 %
25 %
Information about Concetti Oo Classe
Education

Published on October 16, 2008

Author: silvanonatalizi

Source: slideshare.net

SECONDA PARTE INTRODUZIONE AI CONCETTI DELLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI IL CONCETTO DI CLASSE II° Lezione per la IV A liceo tecnico – 17 ottobre 2008

LE CLASSI SONO STAMPINI DI OGGETTI La classe è uno stampino che crea oggetti Pertanto gli oggetti sono creati dalle classi Una classe è un tipo di dato di più alto livello

La classe è uno stampino che crea oggetti

Pertanto gli oggetti sono creati dalle classi

Una classe è un tipo di dato di più alto livello

CREAZIONE DI OGGETTI CON LA CLASSE Per creare un numero intero o un numero decimale: int x; float y; Allo stesso modo per creare un oggetto usando una classe predefinita: Persona persona; new Persona(); Persona è la classe, persona (minuscola) è l’oggetto

Per creare un numero intero o un numero decimale:

int x;

float y;

Allo stesso modo per creare un oggetto usando una classe predefinita:

Persona persona;

new Persona();

Persona è la classe, persona (minuscola) è l’oggetto

ESEMPIO DI CLASSE PERSONA public class Persona{ private String nome; private String indirizzo; public String getNome(){ return nome; } public void setNome(String n){ nome=n; } public String getIndirizzo(){ return nome; } public void setIndirizzo(String ind){ indirizzo=ind; } }

public class Persona{

private String nome;

private String indirizzo;

public String getNome(){

return nome;

}

public void setNome(String n){

nome=n;

}

public String getIndirizzo(){

return nome;

}

public void setIndirizzo(String ind){

indirizzo=ind;

}

}

LA CLASSE È UN NUOVO TIPO DI STRUTTURA La classe è una nuova struttura Dentro la classe si incapsulano gli attributi e le funzioni Per ottenere questo risultato, questa struttura ha una dichiarazione con la parola class seguita dal nome della classe Persona Dopo la dichiarazione c’è il corpo della classe racchiuso tra una coppia di parentesi graffe {…} Nel corpo della classe sono incapsulati: Tutti gli attributi della classe Tutti i metodi (ossia il comportamento della classe)

La classe è una nuova struttura

Dentro la classe si incapsulano gli attributi e le funzioni

Per ottenere questo risultato, questa struttura ha una dichiarazione con la parola class seguita dal nome della classe Persona

Dopo la dichiarazione c’è il corpo della classe racchiuso tra una coppia di parentesi graffe {…}

Nel corpo della classe sono incapsulati:

Tutti gli attributi della classe

Tutti i metodi (ossia il comportamento della classe)

ATTRIBUTI DI UNA CLASSE Ogni classe definisce al suo interno gli attributi che servono a memorizzare lo stato (ossia i valori specifici) di ciascun oggetto instanziato da questa classe. Nell’esempio precedente, la classe Persona definisce gli attributi nome e indirizzo Quando un oggetto persona viene creato a questi attributi viene assegnato un valore preciso Ad esempio nome=“Mario”,indirizzo=“via del gelato”

Ogni classe definisce al suo interno gli attributi che servono a memorizzare lo stato (ossia i valori specifici) di ciascun oggetto instanziato da questa classe.

Nell’esempio precedente, la classe Persona definisce gli attributi nome e indirizzo

Quando un oggetto persona viene creato a questi attributi viene assegnato un valore preciso

Ad esempio nome=“Mario”,indirizzo=“via del gelato”

VISIBILITÀ E ACCESSO AD UN ATTRIBUTO Quando un attributo è definito public, altri oggetti possono immediatamente e direttamente accedere al suo valore Quando invece un attributo è definito privato, gli altri oggetti non possono accedervi, ma solo l’oggetto che lo possiede può leggerne il valore e modificarlo

Quando un attributo è definito public, altri oggetti possono immediatamente e direttamente accedere al suo valore

Quando invece un attributo è definito privato, gli altri oggetti non possono accedervi, ma solo l’oggetto che lo possiede può leggerne il valore e modificarlo

I METODI I metodi implementano il comportamento richiesto dalla classe Ogni oggetto instanziato dalla sua classe ha i metodi definiti nella classe I metodi possono implementare il comportamento che è richiesto dai messaggi inviati da altri oggetti Oppure forniscono un fondamentale comportamento interno alla classe medesima In questo caso i metodi sono privati e non sono accessibili da altri oggetti. Nella classe Persona i comportamenti sono getNome(), setNome(), getIndirizzo(), setIndirizzo(). Questi metodi permettono ad altri oggetti di ispezionare e modificare i valori degli attributi degli oggetti In ogni caso, l’accesso ai valori degli attributi di un oggetto deve essere controllato dall’oggetto medesimo Nessun oggetto dovrebbe direttamente modificare un attributo di un altro.

I metodi implementano il comportamento richiesto dalla classe

Ogni oggetto instanziato dalla sua classe ha i metodi definiti nella classe

I metodi possono implementare il comportamento che è richiesto dai messaggi inviati da altri oggetti

Oppure forniscono un fondamentale comportamento interno alla classe medesima

In questo caso i metodi sono privati e non sono accessibili da altri oggetti.

Nella classe Persona i comportamenti sono getNome(), setNome(), getIndirizzo(), setIndirizzo().

Questi metodi permettono ad altri oggetti di ispezionare e modificare i valori degli attributi degli oggetti

In ogni caso, l’accesso ai valori degli attributi di un oggetto deve essere controllato dall’oggetto medesimo

Nessun oggetto dovrebbe direttamente modificare un attributo di un altro.

I MESSAGGI I messaggi rappresentano il meccanismo di comunicazione tra gli oggetti. Ad esempio, quando un oggetto A invoca un metodo di un oggetto B, diciamo che l’oggetto A sta inviando un messaggio all’oggetto B. La risposta dell’oggetto B è definita dal valore che restituisce. Solo i metodi pubblici di un oggetto possono essere invocati da un altro oggetto Ai metodi privati non si può inviare nessun messaggio

I messaggi rappresentano il meccanismo di comunicazione tra gli oggetti.

Ad esempio, quando un oggetto A invoca un metodo di un oggetto B, diciamo che l’oggetto A sta inviando un messaggio all’oggetto B.

La risposta dell’oggetto B è definita dal valore che restituisce.

Solo i metodi pubblici di un oggetto possono essere invocati da un altro oggetto

Ai metodi privati non si può inviare nessun messaggio

ESEMPIO DI MESSAGGIO public class Pagatore{ String nome; public void messaggiPagatore(){ Persona p=new Persona(); p.setNome(“Giovanni”); String nome=p.getNome(); } :Pagatore p :Persona new Persona() setNome(“Giovanni”) getNome()

public class Pagatore{

String nome;

public void messaggiPagatore(){

Persona p=new Persona();

p.setNome(“Giovanni”);

String nome=p.getNome();

}

UML PER MODELLIZZARE UNA CLASSE Unified Modeling Language Una classe è un rettangolo con tre scomparti Nel primo in alto c’è il nome della classe In quello intermedio ci sono gli attributi In basso ci sono i metodi della classe

Unified Modeling Language

Una classe è un rettangolo con tre scomparti

Nel primo in alto c’è il nome della classe

In quello intermedio ci sono gli attributi

In basso ci sono i metodi della classe

INCAPSULAMENTO E DATA HIDING Un oggetto non deve rivelare tutti i suoi attributi e tutti i suoi comportamenti Deve solo mastrare quell’interfaccia che gli altri oggetti devono usare per interagire con lui Tutti quei dettagli che non sono pertinenti all’uso dell’oggetto devono essere nascosti agli altri L’incapsulamento significa che un oggetto contiene sia i suoi attributi che i suoi comportamenti. Il nascondere dei dati fa parte dell’incapsulamento

Un oggetto non deve rivelare tutti i suoi attributi e tutti i suoi comportamenti

Deve solo mastrare quell’interfaccia che gli altri oggetti devono usare per interagire con lui

Tutti quei dettagli che non sono pertinenti all’uso dell’oggetto devono essere nascosti agli altri

L’incapsulamento significa che un oggetto contiene sia i suoi attributi che i suoi comportamenti.

Il nascondere dei dati fa parte dell’incapsulamento

ESEMPIO INCAPSULAMENTO Un oggetto che calcola il quadrato di un numero deve fornire un’interfaccia affinchè altri oggetti possano ottenere il risultato del suo calcolo Tuttavia non è necessario che siano resi disponibili, all’oggetto che richiede il risultato dell’operazione, gli attributi interni e l’algoritmo usato per calcolare il quadrato a fondamento dell’incapsulamento sono i concetti: Interfaccia Implementazione

Un oggetto che calcola il quadrato di un numero deve fornire un’interfaccia affinchè altri oggetti possano ottenere il risultato del suo calcolo

Tuttavia non è necessario che siano resi disponibili, all’oggetto che richiede il risultato dell’operazione, gli attributi interni e l’algoritmo usato per calcolare il quadrato

a fondamento dell’incapsulamento sono i concetti:

Interfaccia

Implementazione

INTERFACCIA L’interfaccia definisce i mezzi fondamentali per la comunicazione tra oggetti Ogni classe specifica le opportune interfacce per la instanziazione e l’operazione degli oggetti Ogni operazione che l’oggetto fornisce deve essere richiesta con un messaggio inviato ad una delle interfacce che ha reso disponibili Un interfaccia deve completamente descrivere come gli utenti di quella classe possono e devono interagire con essa I metodi dell’interfaccia devono essere definiti public

L’interfaccia definisce i mezzi fondamentali per la comunicazione tra oggetti

Ogni classe specifica le opportune interfacce per la instanziazione e l’operazione degli oggetti

Ogni operazione che l’oggetto fornisce deve essere richiesta con un messaggio inviato ad una delle interfacce che ha reso disponibili

Un interfaccia deve completamente descrivere come gli utenti di quella classe possono e devono interagire con essa

I metodi dell’interfaccia devono essere definiti public

INTERFACCIA: DATA HIDING Per attivare la protezione dei dati (data hiding), i loro attributi devono essere definiti private. Pertanto gli attributi non sono mai parte dell’interfaccia Solo i metodi pubblici fanno parte dell’interfaccia Dichiarare un attributo pubblico frantuma il concetto di data hiding

Per attivare la protezione dei dati (data hiding), i loro attributi devono essere definiti private.

Pertanto gli attributi non sono mai parte dell’interfaccia

Solo i metodi pubblici fanno parte dell’interfaccia

Dichiarare un attributo pubblico frantuma il concetto di data hiding

ESEMPIO DI INTERFACCIA Il calcolo del quadrato di un numero L’interfaccia è fatta da due pezzi: Come instanziare un oggetto Quadrato Come inviare un valore numerico a questo oggetto ed ottenere in risposta il valore del suo quadrato

Il calcolo del quadrato di un numero

L’interfaccia è fatta da due pezzi:

Come instanziare un oggetto Quadrato

Come inviare un valore numerico a questo oggetto ed ottenere in risposta il valore del suo quadrato

ACCESSO AL VALORE DI UN ATTRIBUTO PRIVATO Se un oggetto vuole accedere ad un attributo, viene scritto un metodo (getter) che restituisce il valore di quell’attributo In questo modo l’oggetto che contiene quell’attributo ne controlla l’accesso Per la sicurezza non vogliamo che un codice non controllato possa modificare o conoscere dei dati quali passord ed informazioni personali

Se un oggetto vuole accedere ad un attributo, viene scritto un metodo (getter) che restituisce il valore di quell’attributo

In questo modo l’oggetto che contiene quell’attributo ne controlla l’accesso

Per la sicurezza non vogliamo che un codice non controllato possa modificare o conoscere dei dati quali passord ed informazioni personali

IMPLEMENTAZIONE L’interfaccia sono gli attributi e i metodi pubblici Gli altri oggetti non devono vedere nessuna parte dell’implementazione Un oggetto può, deve interagire con un altro oggetto solo il tramite delle interfacce della classe In molti casi ci sono dei metodi che devono essere nascosti dichiarandoli private e pertanto questi non appartengono all’interfaccia Nell’esempio del calcolo del quadrato, all’utente (un oggetto) non necessita sapere come è stato calcolato, ma di avere il risultato corretto Pertanto l’implementazione può cambiare, ma se l’interfaccia non cambia, per l’oggetto utente non fa differenza alcuna e non deve modificare il suo codice Ad esempio l’azienda che produce la calcolatrice può cambiare l’algoritmo del calcolo per renderlo più efficiente senza alterare il modo con cui è presentato nel display

L’interfaccia sono gli attributi e i metodi pubblici

Gli altri oggetti non devono vedere nessuna parte dell’implementazione

Un oggetto può, deve interagire con un altro oggetto solo il tramite delle interfacce della classe

In molti casi ci sono dei metodi che devono essere nascosti dichiarandoli private e pertanto questi non appartengono all’interfaccia

Nell’esempio del calcolo del quadrato, all’utente (un oggetto) non necessita sapere come è stato calcolato, ma di avere il risultato corretto

Pertanto l’implementazione può cambiare, ma se l’interfaccia non cambia, per l’oggetto utente non fa differenza alcuna e non deve modificare il suo codice

Ad esempio l’azienda che produce la calcolatrice può cambiare l’algoritmo del calcolo per renderlo più efficiente senza alterare il modo con cui è presentato nel display

IL PARADIGMA INTERFACCIA/IMPLEMENTAZIONE Il toast per funzionare richiede l’elettricità Per ottenerla il suo cavo di alimentazione deve essere adattato alla presa elettrica La presa elettrica è l’interfaccia Ogni dispositivo per ottenere l’elettricità deve usare un cavo con un attacco che soddisfi le specifiche della presa elettrica Questa è l’interfaccia tra la compagnia elettrica ed il toast !

Il toast per funzionare richiede l’elettricità

Per ottenerla il suo cavo di alimentazione deve essere adattato alla presa elettrica

La presa elettrica è l’interfaccia

Ogni dispositivo per ottenere l’elettricità deve usare un cavo con un attacco che soddisfi le specifiche della presa elettrica

Questa è l’interfaccia tra la compagnia elettrica ed il toast !

UN MODELLO DEL PARADIGMA INTERFACCIA/IMPLEMENTAZIONE Scriviamo una classe cha calcola i quadrati dei numeri interi Nel disegno della classe, il segno (+) significa pubblico, quello (-) privato Pertanto identifichiamo l’interfaccia dai metodi prefissi con il segno (+)

Scriviamo una classe cha calcola i quadrati dei numeri interi

Nel disegno della classe, il segno (+) significa pubblico, quello (-) privato

Pertanto identifichiamo l’interfaccia dai metodi prefissi con il segno (+)

ESEMPIO CALCOLO DEI QUADRATI DEI NUMERI INTERI Bisogna fornire una interfaccia ed una separata implementazione Occorre cioè fornire un modo all’utente di richiedere ed ottenere l’operazione del quadrato Si deve anche scrivere l’implementazione cha calcola il quadrato, ma l’utente non deve saper nulla della sua specifica implementazione public class intQuadrato{ private int quadratoValore // interfaccia public int getQuadrato(int value){ quadratoValore=calcolaQuadrato(value); return quadratoValore; } // implementazione privata private int calcolaQuadrato(int value){ return value*value; } }

Bisogna fornire una interfaccia ed una separata implementazione

Occorre cioè fornire un modo all’utente di richiedere ed ottenere l’operazione del quadrato

Si deve anche scrivere l’implementazione cha calcola il quadrato, ma l’utente non deve saper nulla della sua specifica implementazione

public class intQuadrato{

private int quadratoValore

// interfaccia

public int getQuadrato(int value){

quadratoValore=calcolaQuadrato(value);

return quadratoValore;

}

// implementazione privata

private int calcolaQuadrato(int value){

return value*value;

}

}

I QUATTRO CONCETTI PIÙ IMPORTANTI DELLA OBJECT ORIENTED PROGRAMMING Encapsulation (incapsulamento) Inheritance (ereditarietà) Polymorphism (polimorfismo) Composition (composizione) Questi sono i concetti che devono essere assimilati prima di intraprendere uno studio dettagliato delle tecnologie di OOA, OOD, OOP

Encapsulation (incapsulamento)

Inheritance (ereditarietà)

Polymorphism (polimorfismo)

Composition (composizione)

Questi sono i concetti che devono essere assimilati prima di intraprendere uno studio dettagliato delle tecnologie di OOA, OOD, OOP

Add a comment

Related presentations

Related pages

Concetti Oo Classe - Education - docslide.it

1. seconda parte introduzione ai concetti della programmazione orientata agli oggetti il concetto di classe ii° lezione per la iv a ...
Read more

Concetti OO per sviluppatori 4GL. Esempi istanza classe ...

L'esempio di seguito mostra come istanziare una classe ed usufruire dei suo metodi/attributi. L'esempio si propone di creare una connessione ad un ...
Read more

Concetti OO per sviluppatori 4GL - polimorfismo - Progress ...

POLIMORFISMO "- nel contesto della programmazione orientata agli oggetti, si riferisce al fatto che una espressione il cui tipo sia descritto da una classe ...
Read more

Concetti di OO - dse.disco.unimib.it

Concetti di OO! Astrazione ... Ereditarietà " una classe può essere la specializzazione di un’altra classe (es. poligono-rettangolo)! Polimorfismo
Read more

No Slide Title - disi.unige.it

UML: Class Diagram Corso IS I - 2002/03 Gianna Reggio Versione 0.1 ... Starting point basato sugli usuali concetti OO classe oggetto specializazzione ...
Read more

Il paradigma orientato agli oggetti - web.cheapnet.it

O-O, prima fra tutti la definizione di classe. Storia della programmazione ad oggetti 3 ... Smalltalk contiene molti dei concetti che oggi considerimo
Read more

Classe (informatica) - Wikipedia

Una classe è identificabile come un tipo di ... L'analisi del dominio consiste nel chiarire innanzitutto quali sono i concetti importanti che il ...
Read more

Programmazione orientata agli oggetti - Wikipedia

Caratteristiche. La programmazione ad oggetti prevede di raggruppare in una zona circoscritta del codice sorgente (chiamata classe) la dichiarazione delle ...
Read more