Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Costruttore che prende una costante

    Ciao,
    sto provando a scrivere le classi per questo test.
    Non riesco a capire come implementare la classe Room.
    Qualcuno sa darmi un suggerimento?
    Grazie.

    codice:
    public class TestHotels {
         public static void main(String[] args) {
            
         Hotel h1 = new Hotel("SeaView Hotel","Miami");
         assert h1 instanceof List;
         List<Room> l = h1;
            
         h1.addRoom(new Room(Room.DOUBLE_ROOM));
         h1.addRoom(new Room(Room.TWIN_ROOM)); 
         h1.addRoom(new Room(Room.SINGLE_ROOM));
         h1.addRoom(new Room(Room.SUITE_ROOM));
                   ...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da AnthraXite Visualizza il messaggio
    Non riesco a capire come implementare la classe Room.
    Purtroppo con il poco codice postato e senza conoscere motivazioni/requisiti di quanto dovresti fare ... non è che si possa dire molto.

    Quote Originariamente inviata da AnthraXite Visualizza il messaggio
    codice:
         Hotel h1 = new Hotel("SeaView Hotel","Miami");
         assert h1 instanceof List;
         List<Room> l = h1;
    Perché ti aspetti che Hotel sia un List<Room> ?

    Se hai fatto che:

    public class Hotel implements List<Room>

    sappi che non è particolarmente buono.
    E se invece avessi fatto es.:

    public class Hotel extends ArrayList<Room>

    allora ... è ancora peggio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Purtroppo con il poco codice postato e senza conoscere motivazioni/requisiti di quanto dovresti fare ... non è che si possa dire molto.


    Perché ti aspetti che Hotel sia un List<Room> ?

    Se hai fatto che:

    public class Hotel implements List<Room>

    sappi che non è particolarmente buono.
    E se invece avessi fatto es.:

    public class Hotel extends ArrayList<Room>

    allora ... è ancora peggio.
    Essendo una prova d'esame viene fornito solo il test e lo studente deve scrivere delle classi che funzionino con quel test, a prescindere dal fatto che quello che fa non sia particolarmente utile.
    Se osservi bene tutto è deducibile dal test. Se non lo fosse non sarebbe una prova d'esame.
    Se nel test trovo "assert h1 instanceofList"non posso far altro che adeguarmi e se Hotel extends ArrayList fa funzionare il test ho raggiunto il mio scopo.

    Comunque confrontandomi anche con colleghi ho trovato la soluzione. Era più semplice di quanto immaginassi.
    Mi ero fissato sul fatto che dovessi per forza implementare un enum ed invece bastava dichiarare nella classe Room quelle 4 costanti e far prendere un int al costruttore di Room.
    In questo modo:

    codice:
    public class Room {     
    
        public final static int SINGLE_ROOM=1, DOUBLE_ROOM=2, TWIN_ROOM=2, SUITE_ROOM=4;
        private int size;
       
        
        public Room(int size){
         this.size=size;
        }
    ...
    Mi resta il dubbio che si possa ancora fare implementando un enum.
    Se vuoi ti passo l'intero test così mi dai un'opinione sul fatto che si possa risolvere tutto in 60 minuti.

    Grazie comunque per la risposta.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da AnthraXite Visualizza il messaggio
    Essendo una prova d'esame viene fornito solo il test e lo studente deve scrivere delle classi che funzionino con quel test
    E .. precisarlo prima, no?

    Quote Originariamente inviata da AnthraXite Visualizza il messaggio
    Mi resta il dubbio che si possa ancora fare implementando un enum.
    Se TestHotels NON può essere (per quanto precisato) cambiato, allora no. Perché se Room è una normale classe per avere qualunque N oggetti Room (come è giusto che sia), allora quei DOUBLE_ROOM ecc.. NON possono essere costanti di una enum. Non usati/scritti così.

    Se in Room ci fosse stata una nested enum es. Type, allora si sarebbe dovuto scrivere:

    h1.addRoom(new Room(Room.Type.DOUBLE_ROOM));

    O con enum esterna es. RoomType:

    h1.addRoom(new Room(RoomType.DOUBLE_ROOM));

    allora sì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Ok mi hai tolto ogni dubbio.

    Per il fatto di aver scritto che era un test nel primo post pensavo si capisse qual era l'intento.
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.