badboyss zei:
@blackrabbit map hebben we nog niet gezien,we mogen enkel dingen gebruiken die we al gezien hebben.
Ik vind dat eigenlijk erg. Was bij ons vroeger ook bij bepaalde opdrachten. Dan vind je soms goede oplossingen op internet die performanter zijn dan je huidige implementatie, mag je ze niet eens gebruiken. Maar nja, niks aan te doen

.
badboyss zei:
De array is gewoon om een x aantal kamers te maken per verdiep en daar de klant en kamer gegevens in bij te houden.
Het kan natuurlijk zoals ik hier al gelezen heb op vele verschillende manieren,maar voor het moment zitten we juist halfwege head first dus echt nog de basic.
Nu zijn klant en kamer van elkaar losgekoppeld en een classe reservering waarbij alles word bijgehouden.
Het probleem is dat ik die 2 nu samen in een array moet krijgen
grts b,
Heb je code eens bekeken en er zijn nog wat foutjes;
Mijn IDE geeft hier al warnings op. Strings vergelijken doe je met compareTo() of equals()

. allekamers.equals(""); dus
De reden is misschien niet zo vanzelfsprekend. Als je strings vergelijkt met de "=="-operator, ga je kijken of de pointers gelijk zijn. Met andere woorden of je twee referenties naar dezelfde string hebt.
In dit geval is zelfs beter:
Code:
if(allekamers.isEmpty())
return "geen";
Als je een woord intypt bij wachtwoord krijg je een exception die je moet afhandelen:
Welkom bediende geef U naam aub :
David
Welkom David geef u login in aub :
test
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at hotel.BediendeGevegevens.paswoord(BediendeGevegevens.java:41)
at hotel.Reservering.reserveer(Reservering.java:31)
at hotel.Lapda.main(Lapda.java:11)
Java Result: 1
PS: Dit heb je trouwens overal. Je hebt nergens exception handling toegevoegd voor non-integer input

.
Daarenboven is het "uw" naam en "uw" login. "U" is een persoonlijk voornaamwoord

. "U" schrijf je bovendien ook met kleine letter aangezien wij geen speciale personen zijn

. Heb ook een aantal schrijffouten zien staan. Bijvoorbeeld "bediende.getBediendeLoging()" zal waarschijnlijk "login" moeten zijn

.
Code:
public KlantGegevens() {
super();
}
Expliciete calls naar super zijn niet nodig, wordt impliciet gedaan. Ook in de andere constructor die je hebt

.
Code:
int a = 5;
Verdiep Basic = new Verdiep(a);//we maken een nieuw verdiep met x aantal kamer
int b = 3;
Verdiep BasicExtra = new Verdiep(b);
int c = 1;
Verdiep Junior = new Verdiep(c);
int d = 1;
Verdiep SeniorSuite = new Verdiep(d);
De waarden in variabelen stoppen en die enkel op de regel erna gebruiken is niet echt handig

. Ik begrijp dat je waarschijnlijk geen hardcoded waarden wilt gebruiken. Maar de waarden de regel erboven te definieren en nergens anders gebruiken, is niet echt een optimale oplossing

.
Code:
Verdiep verdiep = new Verdiep(0);
Instantiatie van objecten die later toch een andere referentie toegewezen krijgen;
Code:
if (keuze == 1)
{
verdiep = Basic;
....
Veel redundantie (je kan die inlezen.VraagKlantGegevens() gewoon buiten de reeks if-testen zetten. Daarenboven gebruik je niet eens een if-else if structuur waardoor je onnodig extra if-testen gaat uitvoeren. Als keuze == 1 dan moet hij niet meer kijken of keuze == 2 etc

.
Code:
if (keuze == 1)
{
verdiep = Basic;
inlezen.VraagKlantGegevens();
inlezen.basic();
}
if (keuze == 2 )
{
verdiep = BasicExtra;
inlezen.VraagKlantGegevens();
inlezen.basicplus();
}
Bovendien vang je de resultaten van "inlezen.VraagKlantGegevens();" niet eens op

.
Ook geef je soms teveel informatie:
Code:
bediende.getBediendenNaam()
Die functie getBediendenNaam mag gewoon "getNaam" zijn. Het is redelijk duidelijk dat als de klasse "Bediende" een functie "getNaam" heeft, dat die de naam van de bediende zal teruggeven

.
En het belangrijkste is dat je meer moet delegeren. Sommige klassen doen veel te weinig, en andere doen dan weer teveel. Probeer elke klasse een specifieke taak te laten doen.
Ik zou, zoals Blackrabbit hierboven zegt, eens een schema maken (niet noodzakelijk in UML - gewoon wat kadertjes op papier is ook goed)

.
Stel jezelf de volgende vragen:
- Wat moet de applicatie precies doen? - functionaliteit
- Wat moet de applicatie later doen? - uitbreidbaarheid
- Voor wie is de applicatie gemaakt? Senioren, jongeren of misschien programmeurs? - doelgroep
- ...
Dan kijk je naar de datastructuren en algoritmen die je nodig gaat hebben:
- Je weet dat je reservaties moet maken. Dat wilt zeggen een link tussen een kamer en een klant. Hiervoor heb je een datastructuur nodig -> welke? Wat moet die datastructuur bieden (snelle access? snelle zoekopdrachten? ...)
Dan kijk je naar de klassen die je nodig hebt om dat allemaal te verwezenlijken.
Bijvoorbeeld zo kan je je de volgende vragen stellen:
- Waarom is er nergens een klasse Hotel?
- Waarom bevat KlantGegegevens geen functies voor het inlezen van klantgegevens, waarom is dat allemaal in VraagGegevens gezet?
- Waarom bevat je Reservering-klasse zoveel (teveel misschien?) functionaliteit?
- Is een klasse Verdiep wel vereist? Waarom niet gewoon een klasse hotel met een 2D-array van kamers. Al zal je dan lege elementen hebben indien een verdiep minder kamers heeft dan anderen, is dat een probleem voor de applicatie? etc

- Kan je kamers geen speciale nummers geven op deze manier:
> Kamers krijgen nummers in de "100" waarbij het hondertal de verdieping aanduidt, zoals op scholen meestal het geval is.
Bijvoorbeeld: Kamer 302 = tweede kamer op het derde verdiep.
Kamer 005: vijfde kamer op gelijkvloers etc etc
- Is een functie zoals "printMenu" niet handiger om alles wat leesbaarder te houden?
Code:
private void printMenu()
{
System.out.println("");
System.out.println("1) Kamer reserveren");
System.out.println("2) Reservatie verwijderen");
System.out.println("3) Kijken welke kamers nog vrij zijn per type");
System.out.println("4) Kijken welke klant in welke kamer zit per type");
System.out.println("5) Kijken voor hoeveel dagen de kamer bezet is ");//*
System.out.println("6) De bezetting van het hotel bekijken");
System.out.println("7) De reserveringsdatum per kamernummer en type bekijken");
System.out.println("8) Programma beëindigen");
}
Zijn maar vragen die je eens aan jezelf moet stellen

.
Succes.