• Non ci sono risultati.

Classi e oggetti Classi e oggetti

N/A
N/A
Protected

Academic year: 2021

Condividi "Classi e oggetti Classi e oggetti"

Copied!
21
0
0

Testo completo

(1)

Introduzione alle classi Introduzione alle classi

e agli oggetti e agli oggetti

Walter Didimo

Walter Didimo

(2)

Classi e oggetti Classi e oggetti

La classe classe rappresenta l’unità di base della programmazione ad oggetti:

• una classe definisce una tipologia di elementi tipologia di elementi (cioè una categoria di elementi dello stesso tipo)

• un elemento del tipo definito da una classe si chiama oggetto oggetto o istanza istanza della classe

Automobile

Automobile 001 Automobile 002 Automobile 003 Classe

Classe

Istanze Istanze

(3)

Caratteristiche delle classi Caratteristiche delle classi

Definire una classe significa specificare:

• le propriet propriet à à delle sue istanze, cioè come come esse sono fatte

• il comportamento comportamento delle sue istanze, cioè cosa cosa esse sanno fare (quali servizi possiamo richiedere loro)

Propriet Proprietàà - base

- altezza

Rettangolo

Comportamento Comportamento - calcola il perimetro - calcola l’area

...

(4)

Struttura di una classe Struttura di una classe

Una classe ha un nome nome e si compone di:

• un insieme di campi campi (detti anche attributi), che attributi descrivono le proprietà delle sue istanze

• un insieme di metodi, che descrivono il metodi comportamento delle sue istanze

Rettangolo Rettangolo int base

int altezza

int perimetro () int area ()

….

nomenome

campi campi

metodi metodi

(5)

Nome di una classe Nome di una classe

Il nome nome di una classe descrive in breve la tipologia delle sue istanze

• • regole: regole

− non può contenere spazi bianchi e simboli di punteggiatura

• • convenzioni: convenzioni

− inizia sempre con una lettera maiuscola

− se si compone di più parole, le parole si scrivono

attaccate ed ogni parola inizia con lettera maiuscola

(6)

Esempi di nomi Esempi di nomi

• nomi validi che rispettano le convenzioni:

Rettangolo Rettangolo

AutomobileDaNoleggio AutomobileDaNoleggio

• nomi validi che non rispettano le convenzioni:

rettangolo rettangolo

AutomobiledaNoleggio AutomobiledaNoleggio

• nomi non validi:

Automobile Da Noleggio

Automobile Da Noleggio

Automobile.Da.Noleggio

Automobile.Da.Noleggio

(7)

Campi di una classe Campi di una classe

I campi campi descrivono le proprietà delle istanze della classe; ogni campo:

• ha un nome

• descrive una proprietà

• può assumere valori di un certo tipo (dominio); esempi

int int numeri interi

double double numeri reali

String String stringhe alfanumeriche

…..

(8)

Nome di un campo Nome di un campo

regole: regole

− non può contenere spazi bianchi e simboli di punteggiatura

convenzioni: convenzioni

− inizia sempre con una lettera minuscola

− se si compone di più parole, le parole si scrivono

attaccate e dalla seconda in poi ogni parola inizia con

una lettera maiuscola

(9)

Oggetti (istanze) di una classe Oggetti (istanze) di una classe

Rettangolo Rettangolo int base

int altezza

….

rett1: Rettangolo rett1: Rettangolo base = 10

altezza = 3

….

rett2: Rettangolo rett2: Rettangolo base = 4

altezza = 2

….

rett3: Rettangolo rett3: Rettangolo base = 6

altezza = 7

….

(10)

Stato di un oggetto Stato di un oggetto

L’insieme dei valori assunti dai campi di un oggetto istante per istante determina lo stato stato dell’oggetto

• lo stato di un oggetto può cambiare nel tempo

• un oggetto cambia stato ogni volta che varia il valore di almeno uno dei suoi campi

tempo tempo

t0 t1 t2

rett1: Rettangolo rett1: Rettangolo base = 10

altezza = 3

….

rett1: Rettangolo rett1: Rettangolo base = 5

altezza = 3

….

rett1: Rettangolo rett1: Rettangolo base = 10

altezza = 7

….

(11)

Altri esempi di classi e campi Altri esempi di classi e campi

AutomobileDaNoleggio AutomobileDaNoleggio String marca

String modello String targa

double prezzoOrario int litriCarburante

…..

Persona Persona String nome

String cognome

String codiceFiscale String dataDiNascita int età

…..

Automobile Automobile String marca

String modello String targa

Persona proprietario

…..

(12)

Metodi di una classe Metodi di una classe

I metodi metodi descrivono il comportamento delle istanze della classe; ogni metodo:

• ha un nome

• descrive un servizio che gli oggetti sanno svolgere

• ha un corpo, cioè un insieme di corpo istruzioni istruzioni che dicono come il metodo deve essere svolto

• può prendere dei dati in ingresso dati in ingresso (detti anche parametri

parametri)

• può restituire un dato in uscita dato in uscita (dato di ritorno) (dato di ritorno)

(13)

Prototipo e

Prototipo e signature signature di un metodo di un metodo

Il prototipo prototipo di un metodo è la specifica del nome, del tipo di parametri, e del tipo di dato in uscita

prototipo

prototipo = nome nome + tipo parametri tipo parametri + tipo dato di ritorno tipo dato di ritorno

La signature signature di un metodo è la sola specifica del nome e del tipo di parametri

signature

signature = nome nome + tipo parametri tipo parametri

(14)

Sintassi di un prototipo Sintassi di un prototipo

Il prototipo di un metodo ha la seguente sintassi

<tipo dato di ritorno> <nome metodo>

<tipo dato di ritorno> <nome metodo> (<tipo parametri>)

Indica il tipo di valore restituito dal metodo (voidvoid se il metodo non restituisce nulla)

Il nome del metodo;

non contiene spazi ed inizia per

convenzione con lettera minuscola

Indica una lista

(eventualmente vuota) di parametri; ogni

parametro ha un nome simbolico ed un tipo di valore associato

(15)

Esempi di prototipi Esempi di prototipi

Consideriamo gli oggetti di una classe Rettangolo; ecco Rettangolo un insieme di possibili metodi, descritti tramite i loro

prototipi

(double f) frazioneDiArea

double

(int b, int a) cambiaDimensioni

void

( ) perimetro

int

tipo parametri tipo parametri nome metodo

nome metodo tipo dato di ritorno

tipo dato di ritorno

(16)

Invocazione di metodi Invocazione di metodi

Un programma ad oggetti consiste nella definizione di classi e oggetti cooperanti cooperanti

• un oggetto ogg1 può ottenere un servizio da un oggetto ogg2, chiedendogli di eseguire uno dei suoi metodi

• la richiesta di servizio si chiama invocazione di invocazione di metodo

metodo e corrisponde all’invio di un messaggio da ogg1 ad ogg2

− ogg1 deve specificare la signature del metodo di

ogg2 che vuole invocare

(17)

Schema di invocazione di metodi Schema di invocazione di metodi

Sia ogg2 un oggetto della classe Rettangolo e Rettangolo

supponiamo che ogg1 voglia chiedere ad ogg2 di eseguire il metodo double double frazioneDiArea frazioneDiArea (double ( double f), f), specificando per f il valore 0.25

ogg1ogg1

….

….

ogg2:Rettangolo ogg2:Rettangolo base = 10

altezza = 5

….

frazioneDiArea

frazioneDiArea (0.25)(0.25)

12.512.5

(18)

Cosa accade nel tempo Cosa accade nel tempo

Istruzione 1 Istruzione 2 Istruzione 3

…..

…..

Istruzione n Istruzione 1 Istruzione 2 Istruzione 3

…..

…..

Istruzione n parametri

parametri

dati di ritorno dati di ritorno

ogg2: Rettangolo

ogg1ogg1

….

….

metodo metodo base = 10

altezza = 5 t0

tn+1

t1 t2 t3

tn

(19)

Nell Nell ’ ’ esempio specifico esempio specifico

area ← base × altezza frazione ← area × f return frazione

area ← base × altezza frazione ← area × f return frazione

0.250.25

12.512.5

ogg2: Rettangolo

ogg1ogg1

….

….

frazioneDiArea

frazioneDiArea ((doubledouble f)f) base = 10

altezza = 5 t0

t4

t1 t2 t3

(20)

Un altro esempio Un altro esempio

Sia ogg2 un oggetto della classe Rettangolo e Rettangolo

supponiamo che ogg1 voglia chiedere ad ogg2 di

eseguire il metodo void void cambiaDimensioni( cambiaDimensioni (int int a, int a, int b), b), specificando per a e b i valori 2 e 4

ogg1ogg1

….

….

ogg2:Rettangolo ogg2:Rettangolo base = 10

altezza = 5

….

cambiaDimensioni

cambiaDimensioni (2,4)(2,4)

base = 2 altezza = 4

Questo metodo cambia lo stato dell’oggetto!

(21)

Glossario dei termini principali Glossario dei termini principali

Specifica del nome e dei parametri di un metodo Signature (di un metodo)

Specifica del nome, dei parametri e del tipo di dato restituito da un metodo

Prototipo (di un metodo)

Insieme dei dati che il metodo prende in ingresso Parametri (di un metodo)

Insieme delle istruzioni che specificano come il metodo va svolto Corpo (di un metodo)

Insieme dei valori assunti dai campi di un oggetto istante per istante; lo stato di un oggetto può cambiare nel tempo

Stato

Descrizione di uno specifico servizio offerto dalle istanze di una classe; un metodo descrive parte del comportamento di una istanza della classe

Metodo

Costrutto di una classe che definisce una proprietà delle sue istanze; un campo può assumere valori di un certo dominio Campo (o Attributo)

Uno degli elementi di una classe Oggetto (o Istanza)

Descrizione di una tipologia di elementi; una classe specifica le proprietà e il comportamento della categoria di elementi che rappresenta

Classe

Significato Significato Termine

Termine

Riferimenti

Documenti correlati

CORSI DI LAUREA MAGISTRALE IN SCIENZE STORICHE E IN SCIENZE DEL GOVERNO CORSI DI LAUREA TRIENNALE IN STORIA, IN SCIENZE POLITICHE E SOCIALI E IN BENI CULTURALI. DOTTORATO IN

y Nel futuro l’interazione può portare a stati liberi diversi da quello iniziale y Nel 1943 Heisenberg formulò una teoria dello scattering introducendo un. operatore nello spazio

Funzione membro speciale con stesso nome della classe preceduto da una tilde ~; non ha tipo di ritorno. Viene invocato ogni qualvolta un oggetto esce dal

Esercizio 7 Dire, per ciascuna delle seguenti stringhe, se essa può essere un nome valido per un campo di una classe e se essa rispetta le convenzioni dei nomi per un campo.

Ogni oggetto della classe Triangolo deve essere definito attraverso la misura dei suoi tre lati e deve possedere i seguenti metodi: (i) un metodo per impostare la misura dei

In ogni istante del ciclo di vita di un oggetto EquazioneDiPrimoGrado, deve esserci un metodo che mi consenta di chiedere a tale oggetto di restituirmi il valore della soluzione

Esercizio 2 Dire, per ciascuna delle seguenti stringhe, se essa può essere un nome valido per un campo di una classe e se essa rispetta le convenzioni dei nomi per un campo.

 document:contiene le proprietà basate sul contenuto del docuumento come il titolo,i links, le form..  location: le proprietà basate