Programmazione ad oggetti

Похожие документы
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Proprietà delle Classi e degli Oggetti in Java

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Strutture dati e loro organizzazione. Gabriella Trucco

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Definizione di metodi in Java

Ingegneria del Software

Programmazione Orientata agli Oggetti in Linguaggio Java

Allocazione Dinamica della Memoria

Object Oriented Programming

Sviluppo di programmi

Ereditarietà e Polimorfismo

Programmazione Orientata agli Oggetti

Variabili e Istruzioni

Uso di metodi statici. Walter Didimo

Laboratorio di programmazione

Definizione di classi

Lezione 9 programmazione in Java Classi come contenitori

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Primi passi col linguaggio C

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Modelli di interazione tra processi

Strutture Dinamiche. Fondamenti di Informatica

Caratteristiche di un linguaggio ad alto livello

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Programmazione in Java (I modulo)

Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona.

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C - sezione dichiarativa: costanti e variabili

Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Sistema Operativo (Software di base)

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Fondamenti di Informatica T1 Mappe

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare!

Modelli di interazione tra processi

Unità Didattica 2 I Linguaggi di Programmazione

Fondamenti di Informatica T. Linguaggio C: i puntatori

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Stringhe e allocazione dinamica della memoria

Linguaggio C: puntatori

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Design Patterns. Introduzione 2. Introduzione 3

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

L Allocazione Dinamica della Memoria

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

I/O FILE. Sommario I/O FILE. I/O FILE LETTURA DA FILE DI TESTO oggetto di tipo ifstream. I/O FILE: lettura e scrittura su file di testo

Concetti Introduttivi. Il Computer

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Le basi del linguaggio Java

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Algoritmi e basi del C Struttura di un programma

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VISUAL BASIC FOR APPLICATION

Concetto di Funzione e Procedura METODI in Java

Транскрипт:

Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo 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. 1

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 Il processo di astrazione: le classi Per popolare il dominio applicativo utilizzato dall applicazione è 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. 2

Una classe è un modello per la creazione di oggetti. La classe è paragonabile allo stampo gli oggetti sono i biscotti ottenuti con quello stampo 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 3

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 sull oggetto di quel tipo. Le classi in C++ class [nome della classe] [attributi] [metodi] class MiaClasse private: //visibilità char* mioattributo; public: //visibilità void miometodo() 4

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 è l istanza di una classe 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 5

Diagramma degli oggetti I diagrammi che rappresentano gli oggetti (Object Diagram in UML) mettono in luce i valori che assumono gli attributi Stato di un oggetto L insieme dei valori degli attributi di un oggetto è chiamato stato dell oggetto e generalmente può variare in funzione del tempo 6

Creazione di un oggetto Per creare un oggetto si effettua un istanziazione di una classe. In questa fase viene riservato uno spazio di memoria per conservare i valori degli attributi dell oggetto che si sta creando (per mantenere memorizzato da qualche parte lo stato dell oggetto) Istanziare un oggetto in C++ In C++ è possibile creare oggetti in due modi a seconda del tipo di memoria in cui si vuole allocare l oggetto Allocazione nello stack: Bicchiere coppa; coppa.riempi(); Allocazione nella memoria heap: Bicchiere* calice; calice = new Bicchiere(); calice->riempi(); delete calice; 7

Gli attributi di istanza Gli attributi di istanza sono quelli posseduti da un oggetto, chiamati anche più semplicemente attributi. L attributo di un oggetto è una variabile che ne descrive una caratteristica o proprietà Metodi: le azioni degli oggetti Un metodo è un azione che l oggetto 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. 8

Diagramma UML della classe Equazione -a: double -b: double -b: double +seta(in v : double) +geta() : double +setb(in v : double) +getb() : double +setc(in v : double) +getc() : double -delta(): double +pura() : boolean(idl) +spuria() : boolean(idl) +complessa() : boolean(idl) +soluzione1() : double +soluzione2() : double Esercizio Implementare in C++ la classe Equazione Istanziare due equazioni: 5x 2-3x+2=0 2x 2-4=0 9

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; L overloading consente di sovraccaricare il metodo con più di un significato. Metodo costruttore Il costruttore è un metodo particolare che viene invocato alla creazione dell oggetto e che contiene tutte le istruzioni da eseguire per la sua inizializzazione. 10

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 sull oggetto creato non sarà effettuata nessuna operazione di inizializzazione Può avere dei parametri di input che serviranno per effettuare le operazioni di inizializzazione alla creazione dell oggetto. 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 l oggetto invocando uno dei costruttori all atto della creazione e passandogli i parametri necessari nell ordine e in numero uguale a quanto definito nella dichiarazione. 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; 11

Modificatori public: permette a qualunque classe o oggetto di qualunque tipo, di avere accesso all attributo o al metodo a cui è applicato. protected: permette l accesso solo alle classi e agli oggetti il cui tipo è una sottoclasse di quella in cui è utilizzato. Le sottoclassi sono trattate nell ambito dell ereditarietà nella prossima unità. private: permette l accesso solo agli oggetti della classe stessa in cui è utilizzato. Attributi statici class Gatto public: static int NumeroDiGatti; Gatto() NumeroDiGatti++; ~Gatto() NumeroDiGatti--; Gatto::NumeroDiGatti = 0; 12

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 l operazione gli viene passato dall esterno, e il risultato che produce non serve per aggiornare l attributo 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 dell oggetto si userà il nome della classe, come nell esempio seguente: int somma = Matematica::Somma(3, 5); 13