La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione ad oggetti. OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha lobiettivo di formalizzare gli oggetti del mondo.

Presentazioni simili


Presentazione sul tema: "Programmazione ad oggetti. OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha lobiettivo di formalizzare gli oggetti del mondo."— Transcript della presentazione:

1 Programmazione ad oggetti

2 OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha lobiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale. Questa parte di mondo che viene ricostruita in modo virtuale è detta dominio applicativo.

3 Distinguere gli oggetti Esempio: un bicchiere Ne sappiamo definire le caratteristiche e conosciamo anche quali azioni si possono fare con esso. Possiamo definirne la forma, il colore, il materiale di cui è fatto e possiamo dire se è pieno o vuoto. Sappiamo anche che si può riempire e svuotare. Abbiamo definito un oggetto attraverso le sue caratteristiche le operazioni che può compiere

4 Il processo di astrazione: le classi Per popolare il dominio applicativo utilizzato dallapplicazione è necessario creare gli oggetti, e per fare questo è necessario definire le classi. Una classe è lo strumento con cui si identifica e si crea un oggetto.

5 Una classe è un modello per la creazione di oggetti. La classe è paragonabile allo stampo gli oggetti sono i biscotti ottenuti con quello stampo

6 Classi e tipi di dato Una classe è a tutti gli effetti un tipo di dato (come gli interi e le stringhe e ogni altro tipo già definito) Nella programmazione orientata agli oggetti, è quindi possibile sia utilizzare tipi di dato esistenti, sia definirne di nuovi tramite le classi

7 Diagramma delle classi La prima sezione contiene il nome della classe, la seconda sezione definisce i suoi attributi, mentre più in basso sono definiti i metodi, le operazioni che si possono compiere sulloggetto di quel tipo.

8 Le classi in C++ class [nome della classe]{ [attributi] [metodi] } class MiaClasse { private://visibilità char* mioAttributo; public://visibilità void mioMetodo() { }

9 Gli oggetti Gli oggetti vengono creati in fase di esecuzione ed ognuno di essi fa parte di una categoria (di una classe) Ogni classe può creare più oggetti, ognuno dei quali pur essendo dello stesso tipo è distinto dagli altri Un oggetto è listanza di una classe

10 Un esempio di classe Se vogliamo catalogare i cd musicali in nostro possesso, abbiamo bisogno di implementare un programma nel cui dominio applicativo è presente la classe CD I metodi della classe CD servono per impostare e recuperare i valori degli attributi

11 Diagramma degli oggetti I diagrammi che rappresentano gli oggetti (Object Diagram in UML) mettono in luce i valori che assumono gli attributi

12 Stato di un oggetto Linsieme dei valori degli attributi di un oggetto è chiamato stato delloggetto e generalmente può variare in funzione del tempo

13 Creazione di un oggetto Per creare un oggetto si effettua unistanziazione di una classe. In questa fase viene riservato uno spazio di memoria per conservare i valori degli attributi delloggetto che si sta creando (per mantenere memorizzato da qualche parte lo stato delloggetto)

14 Istanziare un oggetto in C++ In C++ è possibile creare oggetti in due modi a seconda del tipo di memoria in cui si vuole allocare loggetto Allocazione nello stack: Bicchiere coppa; … coppa.riempi(); Allocazione nella memoria heap: Bicchiere* calice; calice = new Bicchiere(); … calice->riempi(); delete calice;

15 Gli attributi di istanza Gli attributi di istanza sono quelli posseduti da un oggetto, chiamati anche più semplicemente attributi. Lattributo di un oggetto è una variabile che ne descrive una caratteristica o proprietà

16 Metodi: le azioni degli oggetti Un metodo è unazione che loggetto può eseguire. La dichiarazione di un metodo è composta da: Nome del metodo Tipo di dato da ritornare Tipo e nome dei parametri di ingresso Tutto questo è detto firma del metodo.

17 Diagramma UML della classe

18 Esercizio Implementare in C++ la classe Equazione Istanziare due equazioni: 5x 2 -3x+2=0 2x 2 -4=0

19 Overloading In alcuni casi è utile avere un metodo che possa essere chiamato sia con parametri, sia senza, oppure con numero e tipo di parametri differenti. Nel caso di due o più metodi con lo stesso nome ma con parametri differenti si parla di overloading int somma(int addendo1, int addendo2) { return addendo1 + addendo2; } float somma(float addendo1, float addendo2) { return addendo1 + addendo2; } Loverloading consente di sovraccaricare il metodo con più di un significato.

20 Metodo costruttore Il costruttore è un metodo particolare che viene invocato alla creazione delloggetto e che contiene tutte le istruzioni da eseguire per la sua inizializzazione.

21 Costruttori in C++ In C++i metodi costruttore: Deve avere lo stesso nome della classe a cui appartiene. Può anche essere vuoto o non essere definito. In questi casi sulloggetto creato non sarà effettuata nessuna operazione di inizializzazione Può avere dei parametri di input che serviranno per effettuare le operazioni di inizializzazione alla creazione delloggetto. Possono esistere più costruttori con lo stesso nome ma con numero e tipo di parametri differenti (overloading del costruttore). In questo modo sarà possibile creare loggetto invocando uno dei costruttori allatto della creazione e passandogli i parametri necessari nellordine e in numero uguale a quanto definito nella dichiarazione.

22 Esempio class SchedaTelefonica { public: SchedaTelefonica() : m_importo(10) {} private: float m_importo; }; Solamente nel costruttore, è possibile usare una particolare sintassi per valorizzare gli attributi della classe, chiamata lista di inizializzazione del costruttore. Questa sintassi prevede che tra la firma del costruttore e la sua implementazione, sia possibile specificare una lista (iniziata dal carattere due punti), degli attributi (separati dalla virgola) seguita dal valore di inizializzazione (contenuto tra parentesi). In alternativa il costruttore poteva essere scritto: SchedaTelefonica::SchedaTelefonica() { m_importo = 10; }

23 Modificatori public: permette a qualunque classe o oggetto di qualunque tipo, di avere accesso allattributo o al metodo a cui è applicato. protected: permette laccesso solo alle classi e agli oggetti il cui tipo è una sottoclasse di quella in cui è utilizzato. Le sottoclassi sono trattate nellambito dellereditarietà nella prossima unità. private: permette laccesso solo agli oggetti della classe stessa in cui è utilizzato.

24 Attributi statici class Gatto { public: static int NumeroDiGatti; Gatto() { NumeroDiGatti++; } ~Gatto() { NumeroDiGatti--; } } Gatto::NumeroDiGatti = 0;

25 Metodi statici class Matematica { public: static int Soma (int addendo1, int addendo2) { return addendo1 + addendo2; } } Il metodo Somma riceve in input due parametri che sono gli addendi della somma che deve computare, e ritorna in output il valore della somma effettuata. Tutto ciò che gli serve per eseguire loperazione gli viene passato dallesterno, e il risultato che produce non serve per aggiornare lattributo di un oggetto, bensì viene semplicemente ritornato a chi ha invocato il metodo. Per invocare un metodo static si utilizza la tradizionale notazione puntata solo che al posto del nome delloggetto si userà il nome della classe, come nellesempio seguente: int somma = Matematica::Somma(3, 5);


Scaricare ppt "Programmazione ad oggetti. OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha lobiettivo di formalizzare gli oggetti del mondo."

Presentazioni simili


Annunci Google