Esempio: Interfacce. Gioco Interfacce

Documenti analoghi
Esercizi della lezione 5 di Java

Esonero del corso di Programmazione a Oggetti

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

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

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Programmazione ad Oggetti: JAVA. Esercitazione

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

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Algoritmi di Ricerca. Esempi di programmi Java

Oggetti Composti (1) Oggetti Composti (2)

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Un esercizio d esame. Flavio De Paoli

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

Definizione di classi con array di oggetti

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

UML Diagrammi delle classi. UML Diagramma classi 1

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Esercitazione 15. Il problema dello Sleeping Barber

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Realizzazione di una classe con un associazione

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

Compute engine generici in RMI

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Proprietà delle Classi e degli Oggetti in Java

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

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:

Controllo degli accessi

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

Esercizi di Algoritmi e Strutture Dati

Esempi di esercizi d esame

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione n 4. Obiettivi

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

SAPIENZA Università di Roma, Facoltà di Ingegneria

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Scope e visibilità per classi

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Prova d Esame Compito A

Prova d Esame Compito B

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

public int gety() { return y;

Fondamenti di Informatica I

GESTIONE DEI PROCESSI

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

CLASSI ASTRATTE - ESERCIZIO

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

La velocità di una carovana

Laboratorio di Sistemi Distribuiti Leonardo Mariani

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

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

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

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

Programmazione a Oggetti Lezione 10. Ereditarieta

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

10 - Programmare con gli Array

IL CONCETTO DI CLASSE

RMI. Java RMI RMI. G. Prencipe

Programmazione 1 A.A. 2015/2016

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

SAPIENZA Università di Roma, Facoltà di Ingegneria

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

Esercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

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

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

Dalle Classi Alle Interfacce

Metodi di una Collection

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

Java: Compilatore e Interprete

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola

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

La concorrenza in Java package java.util.concurrent Antonio Furone

Le variabili. Olga Scotti

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

Esempio: il conto bancario

Laboratorio di Programmazione 1 [Java]

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Telematica II 17. Esercitazione/Laboratorio 6

Eventi di azione. // con interfaccia per eventi di azione

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

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

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

Classi Wrapper. int Integer float Float char Char byte Byte double Double. classe "wrapper"

L Abstract Windowing Toolkit. Le GUI in Java. Il Frame. Cenni sull ereditarietà. Gianpaolo Cugola - Sistemi Informativi in Rete

Esercizi di preparazione alla Seconda Parte

Transcript:

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 iniziale pari al numero 10 e può combattere, un Personaggio di tipo Mostro, invece, ha una forza fisica iniziale pari a 15 e può azzannare. I Personaggi del gioco sono Eroe, Vampiro e Licantropo. Eroe è solo della categoria Umano, Vampiro è solo della categoria Mostro, Licantropo è di tipo Mostro nelle notti di luna piena, altrimenti di tipo Umano. In particolare, la forza fisica dei personaggi diminuisce di un valore pari a: 3 per l Eroe ad ogni combattimento 2 per il Vampiro ad ogni azzanno 2 per il Licantropo nelle notti di luna piena, 3 nelle altre. 2

Specifiche I dovranno definire tutte le classi e le interfacce necessarie per realizzare il gioco Si dovrà inoltre definire una classe principale che: Istanzia tre oggetti: uno di tipo Eroe, uno di tipo Licantropo e uno di tipo Vampiro. Fa combattere tre volte l Eroe Fa combattere una volta il Vampiro Fa combattere il Licantropo due volte. Stampa al termine la forza fisica rimasta a ciascun personaggio 3 Modelliamo il problema Cosa conviene usare: subclassing o interfacce? Cosa modelliamo con le classi e cosa con le interfacce? La scelta corretta è usare: le interfacce per modellare i comportamenti le classi per modellare le entità concrete 4

Interfacce: Personaggio, Umano e Mostro public interface Personaggio public String getforza(); public interface Umano extends Personaggio public void combatti(); public interface Mostro extends Personaggio public void azzanna(); Umano Personaggio Mostro 5 La classe Vampiro public class Vampiro implements Mostro protected int forza; public Vampiro() forza=15; public void azzanna() forza =forza-2; Vampiro +Vampiro() public String getforza() return "Forza rimanente come vampiro: + forza; 6

La classe Eroe public class Eroe implements Umano protected int forza; public Eroe() forza= 10; public void combatti() forza=forza-3; Eroe +Eroe() public String getforza () return "Forza rimanente come eroe:" + forza; 7 La classe Licantropo public class Licantropo implements Mostro, Umano private boolean isuomo; protected int forzaumano, forzamostro; public Licantropo(boolean luna) isuomo =!luna; if (luna) forzamostro=15; forzaumano=0; else forzaumano=10; forzamostro=0; public String getforza () return "Forza rimanente come umano: +forzaumano+ "Forza rimanente come mostro"+forzamostro; public void azzanna() if (!isuomo) forzamostro=forzamostro-2; public void combatti () if (isuomo) forzaumano=forzaumano-3; Licantropo -isuomo : bool #forzaumano : int -forzamostro : int +Licantropo() 8

Classe principale: Giochiamo public class Giochiamo public static void main (String [] args) Eroe e = new Eroe(); Licantropo l = new Licantropo(true); Vampiro v = new Vampiro(); for (int i =0; i<3;i++) e.combatti(); v.azzanna(); l.azzanna(); l.azzanna(); System.out.println(v.getForza()); System.out.println(l.getForza()); System.out.println(e.getForza()); Giochiamo +main(in args : String[]) : void 9 Il diagramma delle classi Personaggio Umano Mostro Vampiro +Vampiro() Licantropo -isuomo : bool #forzaumano : int -forzamostro : int +Licantropo() Eroe +Eroe() Giochiamo +main(in args : String[]) : void 10