import java.util.ArrayList; class Oving4 { public static void main(String[] args) { //tester Rom System.out.println("Tester rom: \n\n"); Rom nr69 = new Rom(69, 13); // nr 69, størrelse 13 Kunde Skrue = new Kunde("Skrue McDuck", "1-800-555"); // navn , tlf Tidspunkt t1 = new Tidspunkt(200301001200L); Tidspunkt t2 = new Tidspunkt(200301070230L); Tidspunkt t3 = new Tidspunkt(200301070330L); Tidspunkt t4 = new Tidspunkt(200301070430L); nr69.nyReservasjon( t1, t2, Skrue, 5); //går nr69.nyReservasjon( t1, t3, Skrue, 5); //går ikke, overlapp nr69.nyReservasjon( t3, t4, Skrue, 5); //går nr69.nyReservasjon( t1, t2, Skrue, 22); // går ikke, for mange System.out.println(nr69); System.out.println("Tester konf.sent.: \n\n"); Konferansesenter DenBlaLagune = new Konferansesenter(); DenBlaLagune.leggTilRom( 10, 10 ); //nr , antall DenBlaLagune.leggTilRom( 20, 5 ); DenBlaLagune.leggTilRom( 30, 10 ); DenBlaLagune.leggTilRom( 40, 9 ); DenBlaLagune.leggTilRom( 50, 20 ); DenBlaLagune.reserverRom(200301201200L, 200301201200L, 1, "Skrue McDuck", "1-LOL-555"); DenBlaLagune.reserverRom(200301201200L, 200301201230L, 9, "Skrue McDuck", "1-LOL-555"); DenBlaLagune.reserverRom(200301201200L,200301201330L, 9, "Skrue McDuck", "1-LOL-555"); DenBlaLagune.reserverRom(200301201200L,200301201630L, 9, "Skrue McDuck", "1-LOL-555"); DenBlaLagune.reserverRom(200301201200L,200301201800L, 9, "Skrue McDuck", "1-LOL-555"); if ( !(DenBlaLagune.leggTilRom(10,10)) ) { System.out.println("Kunne ikke opprette rom. Rommet eksisterer allerede.\n\n"); } System.out.println(DenBlaLagune); } } class Reservasjon { private Tidspunkt fraTid; private Tidspunkt tilTid; private Kunde kunde; public Reservasjon(Tidspunkt startFra, Tidspunkt startTil, Kunde startKunden) { fraTid = startFra; tilTid = startTil; kunde = startKunden; } public Tidspunkt finnFraTid() { return fraTid; } public Tidspunkt finnTilTid() { return tilTid; } /* * Metoden returnerer true dersom tidsintervallet [sjekkFraTid, sjekkTilTid] overlapper * med det tidsintervallet som er i det reservasjonsobjektet vi er inne i [fraTid, tilTid] */ public boolean overlapp(Tidspunkt sjekkFraTid, Tidspunkt sjekkTilTid) { if (sjekkTilTid.compareTo(fraTid) <= 0 || sjekkFraTid.compareTo(tilTid) >= 0) { return false; // ikke overlapp } else return true; // opptatt i denne perioden } public String toString() { return "Kunde: " + kunde.finnNavn() + ", tlf: " + kunde.finnTlf() + ", fra " + fraTid.toString() + ", til " + tilTid.toString() + "\n"; } /* Metode som prøver klassen Reservasjon public static void main(String[] args) { Kunde k = new Kunde("Anne Hansen", "12345678"); Reservasjon r1 = new Reservasjon( new Tidspunkt(200302011000L), new Tidspunkt(200302011100L), k); System.out.println("Reservasjon 1: " + r1.toString()); Reservasjon r2 = new Reservasjon( new Tidspunkt(200301211000L), new Tidspunkt(200301211000L), k); System.out.println("Reservasjon 2: " + r2.toString()); Reservasjon r3 = new Reservasjon( new Tidspunkt(200302011130L), new Tidspunkt(200302011300L), k); System.out.println("Reservasjon 3: " + r3.toString()); Reservasjon r4 = new Reservasjon( new Tidspunkt(200302010900L), new Tidspunkt(200302011100L), k); System.out.println("Reservasjon 4: " + r4.toString()); /* Prøver overlapp() System.out.println(r1.overlapp(new Tidspunkt(200302011000L), new Tidspunkt(200302011100L))); // true System.out.println(r1.overlapp(new Tidspunkt(200302021000L), new Tidspunkt(200302021100L))); // false System.out.println(r1.overlapp(new Tidspunkt(200302011030L), new Tidspunkt(200302011100L))); // true System.out.println(r1.overlapp(new Tidspunkt(200302010930L), new Tidspunkt(200302011030L))); // true } Utskrift: Reservasjon 1: fra 01-02-2003 kl 1000, til 01-02-2003 kl 1100 Reservasjon 2: fra 21-01-2003 kl 1000, til 21-01-2003 kl 1000 Reservasjon 3: fra 01-02-2003 kl 1130, til 01-02-2003 kl 1300 Reservasjon 4: fra 01-02-2003 kl 0900, til 01-02-2003 kl 1100 true false true true */ } class Kunde { private String navn; private String tlf; public Kunde(String startNavn, String startTlf) { navn = startNavn; tlf = startTlf; } public String finnNavn() { return navn; } public String finnTlf() { return tlf; } public String toString() { return navn + ", tlf " + tlf; } /* Tester klassen Kunde public static void main(String[] args) { Kunde k = new Kunde("Ole Olsen", "12345678"); System.out.println("Prøver finn-metodene:\n Navn: " + k.finnNavn() + "\n Tlf.: " + k.finnTlf()); System.out.println("Prøver toString()-metoden: " + k); } Utskrift: Systemet finner ikke angitt bane. Pr°ver finn-metodene: Navn: Ole Olsen Tlf.: 12345678 Pr°ver toString()-metoden: Ole Olsen, tlf 12345678 */ } class Tidspunkt implements Comparable { private long tid; // format ååååmmddttmm public Tidspunkt(long startTid) { tid = startTid; } public long finnTidspunkt() { return tid; } /* formaterer tidspunktet slik: dd-mm-åååå kl ttmm */ public String toString() { // foretar trygg omforming til mindre type, // dato og klokkeslett er hver for seg innenfor tallområdet til int int dato = (int) (tid / 10000); int klokkeslett = (int) (tid % 10000); int år = dato / 10000; int mndDag = dato % 10000; int mnd = mndDag / 100; int dag = mndDag % 100; String tid = ""; if (dag < 10) tid += "0"; tid += dag + "-"; if (mnd < 10) tid += "0"; tid += mnd + "-" + år + " kl "; if (klokkeslett < 1000) tid += "0"; tid += klokkeslett; return tid; } public int compareTo(Tidspunkt detAndre) { if (tid < detAndre.tid) return -1; else if (tid > detAndre.tid) return 1; else return 0; } /* Tester klassen Tidspunkt public static void main(String[] args) { Tidspunkt t1 = new Tidspunkt(200301201200L); Tidspunkt t2 = new Tidspunkt(200301070230L); Tidspunkt t3 = new Tidspunkt(200301070230L); System.out.println("t1 = " + t1.finnTidspunkt() + " formattert: " + t1); // bruker toString() System.out.println("t2 = " + t2.finnTidspunkt() + " formattert: " + t2); System.out.println("t3 = " + t3.finnTidspunkt() + " formattert: " + t3); System.out.println("t1 compareto t2 er lik " + t1.compareTo(t2)); System.out.println("t2 compareto t1 er lik " + t2.compareTo(t1)); System.out.println("t3 compareto t2 er lik " + t3.compareTo(t2)); System.out.println("t2 compareto t3 er lik " + t2.compareTo(t3)); } Utskrift: t1 = 200301201200 formattert: 20-01-2003 kl 1200 t2 = 200301070230 formattert: 07-01-2003 kl 0230 t3 = 200301070230 formattert: 07-01-2003 kl 0230 t1 compareto t2 er lik 1 t2 compareto t1 er lik -1 t3 compareto t2 er lik 0 t2 compareto t3 er lik 0 */ } class Rom { private int størrelse; private int nummer; private ArrayList res = new ArrayList(); public Rom(int nummer, int størrelse) { this.størrelse = størrelse; this.nummer = nummer; } public int finnStørrelse() { return størrelse; } public int finnRomnr() { return nummer; } public int finnAntRes() { return res.size(); } public boolean nyReservasjon( Tidspunkt fra, Tidspunkt til, Kunde kunde, int antPers) { boolean overlapp = false; //while(!overlapp && i < res.size()) { for (int i=0; i rom = new ArrayList(); public Konferansesenter(){} public boolean leggTilRom( int nr, int størrelse ) { if ( (finnRomEtterNr(nr) != null) ) return false; else { if ( ( nr > 0 ) && ( størrelse > 0 ) ) { rom.add( new Rom( nr, størrelse ) ); return true; } else return false; } } public Rom finnRomEtterIndeks(int indx) { if ( (indx >= 0) && (indx < rom.size()) ) { return rom.get(indx); } else return null; } public Rom finnRomEtterNr(int romnr) { int indeks = -1; for(int i=0; i