Oggetti Composti (1) Oggetti Composti (2)

Documenti analoghi
Programmazione orientata agli oggetti Classi, package e file system. Package

CLASSI e FILE I PACKAGE

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Java Le stringhe. Stringhe

Esempio: Costruttori ed ereditarietà

Esercizi della lezione 5 di Java

Java: Compilatore e Interprete

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

IL CONCETTO DI CLASSE

Oggetti e classi. Cos è un oggetto

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Esempio: Interfacce. Gioco Interfacce

Programmazione a Oggetti Modulo B

UML Diagrammi delle classi. UML Diagramma classi 1

14 - Metodi e Costruttori

Definizione di metodi

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Object Oriented Software Design

Programmazione ad oggetti

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

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

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

Algoritmi di Ricerca. Esempi di programmi Java

Livelli di astrazione

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione

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

Eccezioni Precisazioni e approfondimenti

Ereditarietà e Polimorfismo

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione orientata agli oggetti Il modello di Java. OOP in Java

Definizione di classi

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Abstact Data Type. Abstact Data Type. Pubblico e privato. Struttura di un ADT

TIPI PRIMITIVI: LIMITI

Prova d Esame Compito A

Laboratorio di Programmazione 1 [Java]

Ingegneria del Software

Corso sul linguaggio Java

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Esempi di esercizi d esame

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

Introduzione. Java. Esempio. Esempio

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Le variabili. Olga Scotti

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

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

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

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Corso sul linguaggio Java

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Allocazione Dinamica della Memoria

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Programmazione Orientata agli Oggetti

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A

Lezione 9 programmazione in Java Classi come contenitori

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il concetto di Package

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Esercitazione n 1. Obiettivi

Classi Inner. Una Inner class è una classe la cui dichiarazione si trova all interno di un altra classe (La classe ospitante è detta top level):

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

La classe java.lang.object

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Proprietà delle Classi e degli Oggetti in Java

GESTIONE DEI PROCESSI

Il linguaggio Java: aggiunte in Java 1.5

Il pattern decorator. L21_DecoratorPattern 1

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Modulo 2: Strutture fondamentali della programmazione Java

Introduzione alla Programmazione in Java attraverso un esempio commentato

Studente (Cognome Nome):

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Esercizio: la classe CashRegister

Riferimenti ed Oggetti

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

I Layout Manager di java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Introduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a

Descrivono la collaborazione di un gruppo di oggetti per implementare collettivamente un comportamento

Design Pattern in Java

Transcript:

Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe In questo modo abbiamo oggetti composti da altri oggetti Consideriamo ad esempio una classe Orologio: public class Orologio Counter ore, minuti; Ogni oggetto di classe Orologio sarà composto da due oggetti di classe Counter: c è quindi una relazione di composizione fra la classe Orologio e la classe Counter Oggetti Composti (2) Il diagramma UML che rappresenta questa relazione di composizione è: Orologio Counter Orologio può usare gli oggetti di classe Counter contenuti al suo interno: può quindi accedere ai metodi pubblici non può accedere agli attributi e ai metodi privati

Costruzione degli Oggetti () Gli attributi ore e minuti, come tutte le variabili che hanno come tipo una classe sono solo dei riferimenti La loro dichiarazione non implica creazione di oggetti Devono essere creati esplicitamente con new La cosa migliore è definire un costruttore per la classe Orologio e creare i due oggetti al suo interno: public class Orologio Counter ore, minuti; public Orologio() ore = new Counter(); minuti = new Counter(); Costruzione degli Oggetti (2) In questo modo quando creiamo un oggetto di classe Orologio abbiamo la creazione automatica degli oggetti contenuti Infatti se scriviamo: Orologio o; o = new Orologio(); Generiamo una sequenza di allocazioni di questo tipo: o o Istanza di Orologio -ore -minuti o Istanza di Orologio -ore -minuti Istanza di Counter Istanza di Counter

Distruzione In fase di distruzione le cose sono altrettanto automatiche Quando l oggetto di classe Orologio non è più usato da nessuno viene distrutto dal Garbage Collector La distruzione dell istanza di Orologio fa sparire i due attrubuti ore e minuti Questi erano gli unici riferimenti esistenti alle due istanze di classe Counter Quindi le due istanze non sono più utilizzate da nessuno e vengono distrutte dal Garbage Collector Esempio:.Specifiche Come sempre partiamo dalla definizione delle classi e dei comportamenti: La classe Orologio implementa un orologio con ore e minuti L Orologio deve esporre i seguenti metodi pubblici: reset() che azzera il conteggio di ore e minuti tic() che fa avanzare l orologio di un minuto. Se il conteggio dei minuti arriva a 60 il contatore dei minuti si azzera e si incrementa quello delle ore. Se il contatore delle ore è arrivato a 24 si azzera il contatore delle ore getminuti() e getore() che restituiscono il valore di ore e minuti La classe EsempioOrologio ha un metodo main che crea un orologio e invoca i suoi metodi

Esempio: 2.Scelte Implementative Vediamo se nelle classi viste in precedenza abbiamo qualcosa di riutilizzabile La classe Counter è quello che ci serve per realizzare i contatori delle ore e dei minuti Quindi la classe Orologio definirà al suo interno sue variabili di tipo Counter per implementare il comportamento richiesto Quando creiamo un istanza della classe Orologio dovremo creare le due istanze di Counter I metodi di Orologio invocheranno i metodi di Counter delle due istanze Abbiamo quindi un meccanismo di composizione di oggetti Esempio: 3. Modello Rappresentiamo la situazione appena descritta: EsempioOrologio +main() : void Orologio -ore : Counter -minuti : Counter +tic() : void +reset() : void +getore() : int +getminuti() : int 2 Counter -val : int +inc() : void +reset() : void +getvalue() : int

Esempio: 4.Implementazione di Orologio public class Orologio private Counter ore, min; public Orologio() ore = new Counter(); min = new Counter() public void reset() ore.reset(); minuti.reset(); public void tic() min.inc(); if (min.getvalue() == 60) min.reset(); ore.inc(); if (ore.getvalue == 24) ore.reset(); public int getore()return ore.getvalue; public int getminuti()return min.getvalue; Esempio: 5.Implementazione di EsempioOrologio public class EsempioOrologio public static void main(string args[]) Orologio o = new Orologio(); o.tic(); o.tic(); o.reset();

Esempio: 6.Considerazioni E importante notare che nel costruire questa applicazione abbiamo applicato in modo esteso il principio di separazione fra interfaccia e implementazione La classe Orologio usa due istanze della classe Counter basandosi slo sui metodi pubblici (interfaccia) Non viene fatta la minima ipotesi su come Counter sia fatta al suo interno (implementazione) Lo stesso accade per EsempioOrologio: usa i metodi pubblici di Orologio e non si preoccupa minimamente di come questo sia fatto In questo esempio c è l essenza del modo di procedere con il modello ad oggetti: abbiamo costruito per strati la nostra applicazione