Marco Faella I pattern Template Method e Factory Method
|
|
|
- Donato Casagrande
- 9 anni fa
- Visualizzazioni
Transcript
1 Marco Faella I pattern Template Method e Factory Method 12 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Docente: [email protected] A.A
2 Esercizio: corpi celesti Cominciamo questa lezione con un esercizio, che ci condurrà ad un nuovo design pattern Per un programma di astronomia, si implementino le tre classi Planet, Moon e Star, che rappresentano, rispettivamente, un pianeta, una luna (ovvero, un satellite naturale) ed una stella. A ciascuno di questi corpi celesti è associato un nome ed una massa. Quando si crea un oggetto pianeta o luna, bisogna anche specificare il corpo intorno al quale questo orbita. Le classi devono verificare che i pianeti orbitino intorno a una stella, e le lune intorno a dei pianeti. Il tentativo di violare queste regole porta ad un'eccezione. Si fornisca anche una classe (o interfaccia) Body che rappresenta un generico corpo celeste, ed è quindi una superclasse di tutte le precedenti. La classe Body dispone di un metodo satelliteiterator, che restituisce un iteratore sull'insieme di satelliti di questo corpo. La slide seguente mostra un esempio d'uso di queste classi.
3 Esercizio: corpi celesti Le classi descritte nella slide precedente devono poter essere utilizzate nel modo seguente i dati astronomici sono tratti da Body b[] = new Body[5]; b[0] = new Star("Sole", 1.98e30); // Marte orbita intorno al sole b[1] = new Planet("Marte", 6.14e23, b[0]); // Phobos e Deimos orbitano intorno a Marte b[2] = new Moon("Phobos", 1.07e16, b[1]); b[3] = new Moon("Deimos", 2.24e15, b[1]); java.util.iterator i = b[1].satelliteiterator(); System.out.println(" Lune di Marte: "); while (i.hasnext()) { Moon m = (Moon) i.next(); System.out.println(m.getName() + " : " + m.getmass()); System.out.println(" ed ora..."); b[4] = new Moon("Giove", 1, b[0]);
4 Esercizio: corpi celesti Il codice della slide precedente dovrebbe avere un output simile al seguente Lune di Marte: Phobos : 1.07E16 Deimos : 2.24E15 ed ora... Exception in thread "main" planets.body$invalidbodytypeexception at planets.body.addsatellite(body.java:32) at planets.body.<init>(body.java:17) at planets.moon.<init>(moon.java:6) at PianetiTest.main(PianetiTest.java:24) Ovvero, l'iteratore restituito dal metodo satelliteiterator permette di ottenere, una alla volta, le due lune di Marte L'ultima istruzione, che tenta di definire Giove come una luna del sole, fallisce lanciando un'eccezione, perché una luna non può orbitare direttamente intorno ad una stella
5 Esercizio: soluzione di massima Abbozziamo una soluzione dell'esercizio, con particolare riferimento al controllo necessario ad assicurare che lune e pianeti orbitino intorno a corpi del tipo giusto Cercheremo di seguire il principio secondo il quale bisogna raccogliere nelle superclassi (in questo caso, Body) il maggior numero possibile di funzionalità comuni Decidiamo quindi di introdurre in Body un metodo di supporto, chiamato isvalidsatellite, che prende un corpo celeste x come argomento, e restituisce vero se e solo se questo corpo potrebbe orbitare intorno ad x Body sarà una classe astratta perché non ha senso in questo contesto istanziare un corpo celeste generico Questo ci dà l'occasione di lasciare il metodo isvalidsatellite astratto, in modo che ciascuna sottoclasse lo ridefinisca nel modo appropriato Le prossime slide presentano una possibile implementazione della classe Body
6 Esercizio: la classe Body, prima parte public abstract class Body { private double mass; private String name; private Body parent; private List satellites; public Body(String name, double mass, Body parent) { this.name = name; this.mass = mass; this.parent = parent; satellites = new LinkedList(); if (parent!= null) parent.addsatellite(this); /** Controlla che un corpo sia del tipo giusto per essere un satellite di this. */ protected abstract boolean isvalidsatellite(body other); /** Lanciata quando si tenta di far orbitare un corpo intorno ad un altro corpo del tipo sbagliato. */ public static class InvalidBodyTypeException extends RuntimeException { ;
7 Esercizio: la classe Body, seconda parte /** Restituisce un iteratore sui corpi che orbitano intorno a questo corpo. */ public Iterator satelliteiterator() { return satellites.iterator(); /** Aggiunge un satellite a questo corpo. Chiamato solo dalle sottoclassi. */ protected void addsatellite(body other) { if ( isvalidsatellite(other) ) satellites.add(other); else throw new InvalidBodyTypeException();
8 Esercizio: la classe Planet Riportiamo una possibile implementazione della classe Planet Grazie ad una accurata pianificazione delle responsabilità, siamo riusciti a ridurre al minimo il codice contenuto nelle sottoclassi come Planet indica che il metodo che segue intende eseguire l'overriding di uno della superclasse le annotazioni verranno illustrate in una lezione successiva public class Planet extends Body { public Planet(String name, double mass, Body parent) { super(name, mass, protected boolean isvalidsatellite(body other) { // Satellites of planets must be moons. return other instanceof Moon;
9 Il pattern TEMPLATE METHOD Contesto: 1) Un algoritmo è applicabile a più tipi di dati 2) L'algoritmo può essere scomposto in operazioni primitive. Le operazioni primitive possono essere diverse per ciascun tipo di dato 3) L'ordine di applicazione delle operazioni primitive non dipende dal tipo di dato Soluzione: 4) Definire una superclasse che abbia un metodo che realizza l'algoritmo e un metodo per ogni operazione primitiva 5) Le operazioni primitive non sono implementate nella superclasse (metodi astratti), oppure sono implementate in modo generico 6) Ridefinire in ogni sottoclasse i metodi che rappresentano operazioni primitive, ma non il metodo che rappresenta l'algoritmo
10 Diagramma del pattern TEMPLATE METHOD Il diagramma a destra illustra graficamente le classi coinvolte nel pattern TEMPLATE METHOD Vi si trova la superclasse, con metodi primitivi e metodo composito algorithm, e una sottoclasse, che ridefinisce appropriatamente i metodi primitivi Con riferimento all'esercizio dei corpi celesti: la classe Body rappresenta la superclasse il metodo addsatellite rappresenta algorithm il metodo isvalidsatellite è il metodo primitivo le classi Planet, Moon e Star sono le sottoclassi concrete di Body Figura 1: Diagramma UML tipico del pattern TEMPLATE METHOD.
11 Il pattern FACTORY METHOD Contesto: 1) Un tipo (creatore) crea oggetti di un altro tipo (prodotto) 2) Le sottoclassi del tipo creatore devono creare prodotti di tipi diversi 3) I clienti non hanno bisogno di sapere il tipo esatto dei prodotti Soluzione: 1) Definire un tipo per un creatore generico 2) Definire un tipo per un prodotto generico 3) Nel tipo creatore generico, definire un metodo (detto appunto metodo fabbrica) che restituisce un prodotto generico 4) Ogni sottoclasse concreta del tipo creatore generico realizza il metodo fabbrica in modo che restituisca un prodotto concreto
12 Diagramma del pattern FACTORY METHOD Il diagramma a destra illustra i rapporti tra le classi coinvolte nel pattern FACTORY METHOD Le due interfacce Creator e Product rappresentano il creatore generico e il prodotto generico, rispettivamente La relazione di dipendenza tra Creator e Product è dovuta semplicemente al fatto che il creatore ha un metodo (il metodo fabbrica, per l'appunto) che restituisce un oggetto di tipo Product Al di sotto, troviamo un creatore concreto e un prodotto concreto Naturalmente, la relazione di dipendenza si estende anche a loro Figura 2: Diagramma UML tipico del pattern FACTORY METHOD.
13 Applicazione del pattern FACTORY METHOD Il diagramma a destra illustra come il pattern FACTORY METHOD si ritrova applicato nella creazione di iteratori da parte delle collezioni come LinkedList Come si vede, Iterable rappresenta il creatore generico e Iterator il prodotto generico Un produttore generico è rappresentato dalla classe LinkedList, che implementa Iterable La classe LinkedList costruisce internamente un iteratore concreto, di una classe che non è documentata nella libreria standard, e che nel diagramma viene chiamata ConcreteIterator è probabile che questa sia una classe interna privata di LinkedList Figura 3: Diagramma dell'applicazione del pattern FACTORY METHOD alla creazione di iteratori da parte di collezioni della libreria standard.
14 Esempio negativo di FACTORY METHOD E' utile considerare esempi di progettazione che assomigliano al pattern FACTORY METHOD, ma che in realtà non gli corrispondono Ad esempio, consideriamo il metodo tostring della classe Object Non c'è un'interfaccia che rappresenti il creatore generico, però la classe Object potrebbe farne le veci Allo stesso modo, la classe String potrebbe fungere da prodotto generico Tuttavia, la classe String è final, cioè non è estendibile Quindi, manca uno dei presupposti principali del pattern, ovvero: Le sottoclassi del tipo creatore devono creare prodotti di tipi diversi Esercizio: esaminare la documentazione del metodo createetchedborder della classe javax.swing.borderfactory e stabilire se si tratta di un esempio del pattern FACTORY METHOD
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)
1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
La classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
Polimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo
Ereditarietà & Polimorfismo Ereditarietà Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un altra (classe base) La classe base modella un concetto generico La classe
Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73
Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro [email protected] Programmazione,
Progettazione del Software
Progettazione del Software Simulazione di esame Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Anno Accademico 2015/2016
Esercitazione. Docente Ing. Mariateresa Celardo
Esercitazione Docente Ing. Mariateresa Celardo [email protected] Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un
Fondamenti di Informatica T-1. Classi e metodi astratti
Classi e metodi astratti 2 Classi astratte L'ereditarietà è utile per rappresentare tassonomie e gerarchie di entità reali. Non sempre però tutti i livelli della gerarchia rappresentano entità concrete.
Linguaggi di programmazione II AA 2010/2011 Esercitazione 2
Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 1) Scrivere l'output del seguente programma Java public class Bean private String str; Bean(String str ) this.str = str; public String tostring()
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Programmazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
GESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Attraversamento di un albero (binario)
Attraversamento di un albero (binario) 1) Preordine Algorithm binarypreorder( T, v) //caso di albero binario Visita il nodo v; binarypreorder( T, T.leftChild(v)); //Attraversamento ricorsivo sottoalbero
QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio
QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre
Lezione 13 Classi interne
Lezione 13 Classi interne Questa lezione chiude la parte del corso più squisitamente dedicata alla programmazione orientata agli oggetti con Java. Sarà esaminato un nuovo tipo di classi, finora taciuto,
SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni
SOMMARIO Introduzione Proprietà e Operazioni DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica,
FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
Gestione delle eccezioni
Gestione delle eccezioni Raffaella Brighi, a.a. 2007/08 Ereditarietà Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. Casi di insuccesso Vi sono numerosi problemi
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
In questa lezione. Polimorfismo
In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo
Programmazione ad oggetti
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.
Definizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari
Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code
Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3
Introduzione...vii Organizzazione del libro... viii Struttura del libro e convenzioni... ix Codice sorgente e progetti... x Compilare ed eseguire direttamente i listati e gli snippet di codice... x Compilare
Alberi binari ( 7.3)
Alberi binari ( 7.3) + a 3 b Albero Binario ( 7.3) DEFINIZIONE Albero Binario è un albero ordinato in cui ogni nodo ha al più due figli. Un albero binario si dice proprio se ogni nodo ha o zero o figli
Alberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
Progettazione! Progettazione! Progettazione! Progettazione!
Creare un oggetto specificandone la classe esplicitamente! Orienta ad una particolare implementazione invece che ad una interfaccia! Può complicare i cambiamenti futuri! E meglio creare oggetti indirettamente!
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
Metodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Indice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Fondamenti di Informatica I
Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
RETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:
ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato
Main System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
Programmazione Java Avanzata PATTERN
Programmazione Java Avanzata PATTERN Anno 2011/2012 Pattern Una soluzione progettuale generale a un problema ricorrente Elementi per il riuso di software ad oggetti Vantaggiosi e obbligatori da usare Pattern
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
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 String Una stringa Java rappresenta uno specifico valore e come
Il pattern ABSTRACT FACTORY
Il pattern ABSTRACT FACTORY Abstract Factory L intento è quello di fornire una interfaccia per creare famiglie di oggetti in relazione o dipendenti tra loro, senza dovere specificare le loro classi concrete.
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
Esempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Uso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
