help ik kom er niet uit :( foutmelding in java: constructor is undefined

Status
Niet open voor verdere reacties.

masterh43

Gebruiker
Lid geworden
1 sep 2013
Berichten
6
Beste experts,

Ik moet voor mijn opleiding iets programmeren en ik kom er niet uit.

In de onderstaande class krijg ik de foutmelding:

de constructor Kok(String, String, String, String, String) is undefined.
Dezelfde melding krijg ik ook bij 'bezorger'

Kan iemand mij zeggen wat ik fout doe en hoe ik dit kan oplossen

[SQL]// java lijst importeren:

import java.util.ArrayList;

public class ShoarmaDamascus {
ShoarmaDamascus shoarma = new ShoarmaDamascus();

// onderstaande variabelen worden alleen in deze class gebruikt en niet buiten de class, daarom --> private en niet public

private int aantalkoks;
private int aantalbezorgers;
private ArrayList<Administratie> admin = new ArrayList<Administratie>();

// met de onderstaande methods gaan wij het aantal koks en het aantal bezorger tellen met behulp van de Arraylist.

public int telKoks() {
int koks = 20;
Kok k1 = new Kok();
for(int i = 20; i < admin.size()-1; i++){
if(admin.get(i).getClass().equals(k1.getClass())){
koks++;
}
}
return koks;
}

public int getaantalbezorgers() {
int bezorgers = 20;
Bezorger b1 = new Bezorger();

for(int i = 20; i < admin.size()-1; i++){

if(admin.get(i).getClass().equals(b1.getClass())){
bezorgers++;
}
}
return bezorgers;
}

// Met de onderstaande method is het de bedoeling dat de naam van de klant te zien is.

public String getBestelling(Klant a){
return a.getNaam() + " heeft besteld";
}

// Hier volgt de constructor v/d class ShoaramDamasucus. Hiermee wordt de arraylist ingevuld en worden de prints beschreven.

public ShoarmaDamascus(){
admin.add(new Kok("Hans", "Beeklaan 909", "2527KO", "Den Haag", "144483283"));
admin.add(new Kok("Piet", "Banaanstraat 191", "2657KO", "Amsterdam","14484979"));
admin.add(new Bezorger("Pietje", "Hoekstraat 221", "2920LO", "Utrecht", "7654321", false));
admin.add(new Bezorger("Vlugge Jaapie", "Gordijnstraat 22", "5959LO", "Tilburg", "1234567", true));
admin.add(new Klant("Handige Harry", "Baronstraat 11", "2783LO", "Rotterdam", aantalbezorgers));
aantalkoks = telKoks();
System.out.println("Aantal koks aanwezig: " + aantalkoks);
aantalbezorgers = getaantalbezorgers();
System.out.println("Aantal bezorger standby:" + aantalbezorgers);
System.out.println(getBestelling((Klant)admin.get(4)));;
}

public static void main (String[] args) {
}
}[/SQL]
 
Laatst bewerkt:
Wat je fout doet is exact wat de meldnig zegt; je probeert een object te maken van class kok, een constructor met vijf string parameters aan te roepen. Maar volgens Java heeft je class 'kok" helemaal geen constructor de vijf strings verwacht.

Ik ga je niet vertellen hoe je dit oplost, want daar is het te logisch voor :-)
 
Bedankt voor je reactie. Ik heb namelijk onderstaande class kok.
De constructor heb ik wel beschreven in de superclass

Code:
public class Kok extends Administratie {
	public boolean kookboek;
	
	public Kok(String naam, String adres, String postcode, String woonplaats, double salaris, int bsnNummer) {
		super();
                System.out.println("Ik ben kok en mijn naam is " + naam);
	}
        public Kok(){
            
        }
}


Superclass:


Code:
public class Administratie {

	public String naam;
    public String adres;
    public String postcode;
    public String woonplaats;
    public int bsnNummer;

    
    public Administratie(String naam, String adres, String postcode, String woonplaats, int bsnNummer) {
        this.naam = naam;
        this.adres = adres;
        this.postcode = postcode;
        this.woonplaats = woonplaats;
        this.bsnNummer = bsnNummer;
    }
    
    public Administratie(){
        
    }
   
	public void setNaam(String Naam) {
        this.naam = Naam;
    }
    public String getNaam() {
        return this.naam;
    }
    
    public void setAdres(String Adres) {
        this.adres = Adres;
    }
    public String getAdres() {
        return this.adres;
    }
    
    public void setPostcode(String Postcode) {
        this.postcode = Postcode;
    }
    public String getPostcode() {
        return this.postcode;
    }
    
    public void setWoonplaats(String Woonplaats) {
        this.woonplaats = Woonplaats;
    }
    public String getWoonplaats() {
        return this.woonplaats;
    }
    
    public void setBsnNummer(int BsnNummer) {
        this.bsnNummer = BsnNummer;
    }
    public String getBsnNummer() {
        return this.bsnNummer();
    }

}
 
Ik ben nu even aan het kijken, maar volgens mij weet ik het even niet meer. Wil je verklappen hoe ik dit kan oplossen?
 
Java doet aan overloading, je kunt elke method (dus ook de constructor) meerdere malen definieren zolang je elke keer maar een andere set parameters definieert.

Jij hebt alleen deze sconstructor gedefinieert:

public Kok(String naam, String adres, String postcode, String woonplaats, double salaris, int bsnNummer)

Die verwacht geen vijf strings, dus klaagt java dat er geen constructor is die vijf strings verwacht.
In andere talen zou de compiler je waarschijnlijk vertellen dat parameter vijf een double zou moeten zijn en dat je bent vergeten om de zesde parameter mee te geven.
 
Nou, wat dacht je van de juiste gegevens meegeven?

Waarom extend de kok class trouwens op administratie, is een kok een uitgebreidere versie van een administratie? Of is een kok een uitbreiding op een persoon, en heeft een persoon een stukje administratie in zich? :-)
 
Je houdt het wel spannend:) Bedankt voor de hints. Het is inderdaad niet logisch wat ik heb gedaan. Ik ga het aanpassen.
ik laat wel weten als het gelukt is :thumb:
 
Ik wil nog even een toevoeging geven. Hij houdt het zo spannend, omdat het hele idee van programmeren is dat je er zelf over nadenkt. Code kopiëren kan iedereen, net als spaghetti-code schrijven. Wat een goede programmeur onderscheidt is dat hij zijn keuzes kan verantwoorden en dat zijn code het gebruik eigenlijk al uitlegt. In jouw geval is het daarom ook raar dat een Kok van Administratie erft. Ik zou zeggen dat de administratie een lijst met personen heeft en dat een kok toevallig een van die personen is.

Hieronder een klein voorbeeldje geschetst.

Code:
public class Administratie {
     private List<Persoon> werknemers;

}

Code:
public class Persoon {
    ...
    //basis functionaliteit van een persoon (naam, adres, functie ...)
}

Code:
public class Kok extends Persoon {
      private List<Ingredienten> gebruikteIngredienten;

      public Kok(...) {
           super(...); //initialisatie van de onderliggende persoon klasse.
           gebruikteIngredienten = new List<Ingredienten>(); //bijvoorbeeld ..
      }
}
 
Laatst bewerkt:
:) :thumb: Helemaal top, bedankt voor je goede feedback. Ik ga aan de slag
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan