programmazione orientata agli oggetti in linguaggio java€¦ · 12 23 g. mecca - programmazione...

21
G. Mecca – Università della Basilicata – [email protected] Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Incapsulamento versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) 2 G. Mecca - Programmazione Orientata agli Oggetti Sommario m Interfaccia e Implementazione m Incapsulamento m Utilizzo delle Liste La Media Pesata m Il Concetto di “interface” Ruoli e Responsabilità: Incapsulamento >> Sommario

Upload: others

Post on 13-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

1

G. Mecca – Università della Basilicata – [email protected]

Programmazione Orientataagli Oggetti in Linguaggio Java

Ruoli e Responsabilità:Incapsulamento

versione 2.0Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

2G. Mecca - Programmazione Orientata agli Oggetti

Sommario

m Interfaccia e Implementazionem IncapsulamentomUtilizzo delle ListeðLa Media Pesata

m Il Concetto di “interface”

Ruoli e Responsabilità: Incapsulamento >> Sommario

Page 2: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

2

3G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

m Implementazione di un componenteðcodice sorgente di una classe ðche descrive la natura e le capacità del

componenteðquali sono le sue proprietàðquali sono i suoi metodi e di quali operazioni

si compongonoðquali sono i livelli di visibilità

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

4G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

mCiclo di vita di un componenteðdue fasi principali

mSviluppoðconcepimento (progettazione)ðscrittura e compilazione

mUtilizzoðesecuzione dei metodi all’interno di altri

componenti

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

Page 3: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

3

5G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

m In ciascuna faseðintervengono attori diversi

mSviluppoðsviluppatore del componente

mUtilizzoðsviluppatore dei componenti che utilizzano il

componente in questioneðo, nella nostra metafora: altri componenti che

chiamano metodi del componente

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

6G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

mUn principio fondamentaleði diversi attori hanno prospettive diverse

rispetto allo stesso componente

mPer lo sviluppatore del componenteðsono rilevanti tutti i dettagli relativi

all’implementazione del componenteðtutto il codice sorgente della classe

corrispondente

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

Page 4: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

4

7G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

mPer lo sviluppatore degli altri componentiðla prospettiva è completamente diversaðè rilevante solo l’interfaccia del componente

m Interfaccia del componenteðl’elenco dei servizi che il componente è in

grado di offrire all’esternoðe il modo per utilizzarliðin pratica: tutte le proprietà pubbliche ed i

metodi pubblici del componente

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

8G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

package circonferenze;

public class Circonferenza {

private double ascissaCentro;private double ordinataCentro;private double raggio;

public getLunghezza() {return 2 * raggio * PIGRECO;

}...

}

circonferenze

Circonferenza

instance-of

: Principale

lunghezza circonferenza ?

circonferenze ?

implementazione

interfaccia

double ascissaCentrodouble ordinataCentrodouble raggio

98765 : Circonferenza

double getAscissaCentro()double getOrdinataCentro()double getRaggio()double getLunghezza()double getSuperficie()...

Page 5: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

5

9G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

mMetaforaðinterfaccia: quello che il robot sa fare >> i

compiti che è disponibile a svolgereðquali sono e come è possibile richiederliðimplementazione: tutti i dettagli di come lo fa

>> gli strumenti e le tecniche per svolgere i suoi compitiðcosa conosce e quali passi esegue

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

10G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

mAnalogoðsupponiamo che il nostro omino sia un

idraulicoðalla massaia con la lavatrice rotta interessa

la sua interfaccia, ovvero: “riparami la lavatrice”, “ecco fatto, sono 500 Euro”ðnon le interessa la sua implementazione

(come e con quali strumenti ripara la lavatrice)

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

Page 6: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

6

11G. Mecca - Programmazione Orientata agli Oggetti

Interfaccia e Implementazione

m L’accoppiamento con altri componentiðè strettamente collegato all’interfacciaðgli altri componenti inviano messaggi

riguardanti proprietà e metodi pubbliciðcambiare l’interfaccia richiede di cambiare

anche i componenti accoppiati

mCome scegliere l’interfaccia ?ðin modo da minimizzare l’accoppiamento

Ruoli e Responsabilità: Incapsulamento >> Interfaccia e Implementazione

12G. Mecca - Programmazione Orientata agli Oggetti

Incapsulamento

mNella programmazione a oggettiðquesto corrisponde ad un principio

essenzialem Incapsulamento (“Information Hiding”)ðl’interfaccia di un componente deve essere la

più semplice e piccola possibileðl’implementazione dovrebbe essere il più

possibile nascostaðovvero: usare public il meno possibile

Ruoli e Responsabilità: Incapsulamento >> Incapsulamento

ATTENZIONEal principio

di incapsulamento

Page 7: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

7

13G. Mecca - Programmazione Orientata agli Oggetti

Incapsulamento

mAlcune consuetudini generaliðle proprietà di un componente dovrebbero

essere parte dell’implementazione e NON dell’interfaccia >> privateðtutti i metodi “di servizio” del componente –

metodi non destinati ad essere chiamati dall’esterno NON dovrebbero far parte dell’interfaccia >> private

Ruoli e Responsabilità: Incapsulamento >> Incapsulamento

14G. Mecca - Programmazione Orientata agli Oggetti

Incapsulamento

mAttenzioneðil concetto di incapsulamento è un concetto

generale della programmazioneðvale anche per la programm. procedurale

m La grande differenzaðnella programmazione procedurale è una

disciplina: non è possibile nascondere realmente l’implementazione di una libreriaðnella programmazione a oggetti è un vincolo

Ruoli e Responsabilità: Incapsulamento >> Incapsulamento

Page 8: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

8

15G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo delle Liste

mUn esempio tipicoðla libreria per gestire liste

m Tipicamenteðun’unica interfaccia (inserisci, cancella, ...)ðdue principali implementazioniðimplementazione statica (basata su array e

indicatore di riempimento)ðimplementazione doppiamente collegata

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

16G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo delle Liste

mNella programmazione proceduraleðnon è possibile impedire ai programmatori di

utilizzare direttamente parti dell’implementazioneðesempio: non è possibile nascondere

completamente l’indicatore di riempimentoðquesto rende più difficile sostituire una

versione della libreria con l’altra

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Page 9: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

9

17G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo delle Liste

m In Javaðdue versioni della listaðjava.util.ArrayList: implementazione basata

su array e indicatore di riempimentoðjava.util.LinkedList: implementazione

doppiamente collegataðle classi hanno la stessa interfacciaðl’implementazione è rigorosamente nascostaðdi conseguenza le classi sono sostituibili

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

18G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo delle Liste

m L’interfaccia comune

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

svuota la listavoid clear()

lista vuotaboolean isEmpty()

dimensioneint size()

cerca l’elemento oint indexOf(Object o)

cambia l’elemento i-esimoObject set(int index, Object element)

elimina in posizioneObject remove(int index)

preleva l’elemento i-esimoObject get(int index)

aggiunge in posizione void add(int index, Object element)

aggiunge in codaboolean add(Object o)

Page 10: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

10

19G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo delle Liste

mUna particolarità delle listeðle liste di java.util contengono

esclusivamente riferimenti ad istanze della classe Object

mAttenzioneðqui sono fortemente coinvolti ereditarietà e

polimorfismoðper ora solo regole meccanicheðper illustrarle: la Media Pesata

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

ATTENZIONEalle particolarità

delle liste

20G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

m Tre classi in it.unibas.mediapesataðPrincipaleðStudenteðEsame

m Inoltreðlo studente deve conoscere i suoi esamiðuna lista di esami universitariðjava.util.ArrayList

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Page 11: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

11

21G. Mecca - Programmazione Orientata agli Oggetti

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Principale Studente

it.unibas.mediapesata

12345 : Principaledouble ascissaCentrodouble ordinataCentrodouble raggio

98765 : Calcolatricedouble ascissaCentrodouble ordinataCentrodouble raggio

98765 : CalcolatriceString insegnamentoint votoint creditiboolean lode

98765 : Esame

instance-of

instance-of

Esame

432543 : Studente

ArrayList

java.util

8766 : ArrayList

instance-of

instance-of

22G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

m Le operazioni sulla listaðaggiungi esameðfornisci i dati dell’esame i-esimoðfornisci il numero di esami

mAttenzioneðla classe java.util.ArrayList rappresenta una

lista di riferimenti ad oggetti della classe Object

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Page 12: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

12

23G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

mRicapitolazione veloceðtutte le classi di Java estendono

implicitamente Object

mRegola n. 1: eredità delle caratteristicheðtutti gli oggetti ereditano i metodi di Object

mRegola n. 2: sostituibilitàðtutti gli oggetti di Java possono essere

considerati anche oggetti di tipo Object

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

24G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

mConseguenze della lista di Objectðla lista può contenere riferimenti ad oggetti

qualunque (qualunque oggetto può essere considerato un Object)ðma ci sono piccole conseguenzeðanche in questo caso le vediamo come

regole meccaniche

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Page 13: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

13

25G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

mRegola n. 1: inserimento in una listaðil riferimento da inserire viene “trasformato”

in un riferimento ad Object (es: rif. ad Esame)ðnon cambia il suo valore

mRegola n. 2: prelevamento dalla listaðil riferimento deve essere “ritrasformato” in

un riferimento del tipo originale attraverso un cast (es: Esame)ðanche in questo caso non cambia il valore

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

26G. Mecca - Programmazione Orientata agli Oggetti

Media Pesatapackage it.unibas.mediapesata;public class Studente {

private String nome; private String cognome; private int matricola;private java.util.ArrayList esami = new java.util.ArrayList();

public void addEsame(Esame esame) {this.esami.add(esame);

}

public Esame getEsame(int i) {return (Esame)this.esami.get(i);

}

public int getNumeroEsami() {return this.esami.size();

}

...

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

il riferimento all’Esame viene trasformato in un rif. a Object: un oggetto di tipo Esame è anche un oggetto di tipo Object

il metodo get restituisce un riferimento ad un Object; il castè necessario per trasformarloin un riferimento ad un Esame

Page 14: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

14

27G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

[0][1][2]...

567 : Object[]

String insegnamentoint votoboolean lodeint crediti

98765 : Esame

2348

String nomeString cognomeint matricolaArrayList esami

948 : Studente

...

1270

...

...

98765

5544

String insegnamentoint votoboolean lodeint crediti

2348 : Esame

String insegnamentoint votoboolean lodeint crediti

5544 : Esame

Object[] valoriint indicatore

1270 : java.util.ArrayList

567

3

28G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

m In realtà peròðle implementazioni dei vari componenti sono

nascoste al loro interno (incapsulamento)

m InfattiðStudente si basa esclusivamente sull’interfaccia di

java.util.ArrayList (add(), get(), size())ðPrincipale si basa esclusivamente sull’interfaccia di

Studente per la gestione della lista di esami (addEsame(), getEsame(), getNumeroEsami())

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

Page 15: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

15

29G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

[0][1][2]...

1270 : java.util.ArrayList

2348

String nomeString cognomeint matricolaArrayList esami

948 : Studente

...

1270

...

...

98765

5544

boolean add(Object o)void add(Object o, int pos)void remove(int pos)int indexOf(Object o)int size()...

- lo studente “vede” solo l’interfaccia della lista, e non vede i dettagli della sua implementazione (tipo di rappresentazione)- Principale vede solo l’interfaccia dello studentee non i dettagli dell’implementazione (tipo di lista)

111 : Principalevoid addEsame(Esame e)Esame getEsame(int i)int getNumeroEsami()...

30G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

mVantaggi dell’incapsulamentoðè possibile cambiare il tipo di listaðper esempio per ragioni di prestazioniðil resto dell’applicazione non è influenzata

package it.unibas.mediapesata;public class Studente {

private String nome; private String cognome; private int matricola;private java.util.LinkedList esami = new java.util.LinkedList();

// il resto del codice della classe resta uguale

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

>> Studente.java

Page 16: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

16

31G. Mecca - Programmazione Orientata agli Oggetti

Media Pesata

Ruoli e Responsabilità: Incapsulamento >> Utilizzo delle Liste

le implementazioni cambiano completamentema non cambiano le interfacce – l’accoppiamento è minimo

[0][1][2]...

1270 : java.util.LinkedList

2348

String nomeString cognomeint matricolaArrayList esami

948 : Studente

...

1270

...

...

98765

5544

boolean add(Object o)void add(Object o, int pos)void remove(int pos)int indexOf(Object o)int size()...

111 : Principalevoid addEsame(Esame e)Esame getEsame(int i)int getNumeroEsami()...

32G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

m In sintesiðdato un componente, i componenti che ne

utilizzano i servizi dipendono esclusivamente dalla sua interfaccia e non dalla sua implementazioneðè possibile cambiare l’implementazione

senza influenzare gli altri componenti dell’applicazioneðpurchè l’interfaccia resti uguale

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

Page 17: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

17

33G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

mDi conseguenzaðè possibile vedere la questione

dell’incapsulamento da due punti di vistamDa una parteðun componente è completamente libero di

scegliere la sua implementazionemD’altra parteðè impegnato nei confronti di altri componenti

a mantenere inalterata la sua interfaccia

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

34G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

mNei linguaggi a oggettiðè possibile vincolare una classe di oggetti a

fornire una certa interfacciaðattraverso le “interface”

m Interfaceðstrumento per definire l’interfaccia di un

componenteðelenco di prototipi di metodi che il

componente si impegna ad implementare

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

Page 18: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

18

35G. Mecca - Programmazione Orientata agli Oggetti

Un Esempio: java.util.Listpackage java.util;

public interface List {

boolean isEmpty();void clear();Object get(int index);Object set(int index, Object element);boolean add(Object o);void add(int index, Object element);Object remove(int index);int indexOf(Object o);int lastIndexOf(Object o);int size();...

}

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

Attenzione: si tratta di unaversione semplificata della

vera java.util.List

NOTA: i metodi elencatinelle interface sono

considerati automaticamentepubblici

36G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

mUna classeðpuò impegnarsi ad implementare

un’interfacciaðdichiarandolo esplicitamente con la clausola

implements

mEsempioðpublic class ArrayList implements List {...}ðpublic class LinkedList implements List {...}

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

Page 19: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

19

37G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

m In questo casoðla classe si impegna a fare in modo che i

suoi oggetti implementino i metodi dell’interfaccia

mChe cosa vuol dire ?ðche dovranno, ad esempio, necessariamente

fornire un metodo pubblico int size()ðnon possono non implementarloðoppure implementarlo con un nome diverso

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

38G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

mMetaforaðuna interface è un “contratto” tra la classe ed

il resto del mondoðovvero una sorta di “specifica tecnica” sul

funzionamento dei robotðla classe si impegna a che gli oggetti che

fabbricherà avranno certe caratteristicheðe cioè saranno in grado di effettuare certi

compiti

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

Page 20: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

20

39G. Mecca - Programmazione Orientata agli Oggetti

Il Concetto di “interface”

m In questo modoðè possibile garantire la reale sostituibilità tra

componenti che implementano la stessa “interface”ðes: ArrayList e LinkedList

Ruoli e Responsabilità: Incapsulamento >> Il Concetto di interface

40G. Mecca - Programmazione Orientata agli Oggetti

Riassumendo

m Interfaccia e Implementazionem IncapsulamentomUtilizzo delle ListeðLa Media Pesata

m Il Concetto di “interface”

Ruoli e Responsabilità: Incapsulamento >> Sommario

Page 21: Programmazione Orientata agli Oggetti in Linguaggio Java€¦ · 12 23 G. Mecca - Programmazione Orientata agli Oggetti Media Pesata mRicapitolazione veloce ðtutte le classi di Java

03/06/2004

21

41G. Mecca - Programmazione Orientata agli Oggetti

Termini della Licenza

Termini della Licenza

m This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

m Questo lavoro viene concesso in uso secondo i termini dellalicenza “Attribution-ShareAlike” di Creative Commons. Per ottenereuna copia della licenza, è possibile visitarehttp://creativecommons.org/licenses/by-sa/1.0/ oppure inviare unalettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.