Mithilfe von einer Nummer einen Namen finden n-Beziehung

anno21100

Mitglied
Hallo alle zusammen,
Ich sitze grade an einer Abituraufgabe und bräuchte Hilfe. Ich soll die Klassen Server und Kunde implementieren (ohne empfangeVonController() und eintragenVerbrauch(..)). Also ist es im Prinzip nur findeKunde, wie man sieht kann ich mit dem Constructor von Kunde nur mit String etwas anfangen, aber bei der findeKunde Methode bekomme ich nur eine kdNr. Mein erster Gedanke war eine ArrayList und dann mit Contains, aber dafür bräuchte ich ja auch den Namen und kann nur die kdNr vergleichen. Man könnte auch ein Algorithmus schreiben, der verschiedene Buchstaben zusammen setzt, oder eine gängige Namensliste einliest. Allerdings ist dies (ziemlich sicher) nicht der Sinn der Aufgabe. Also bräuchte ich Hilfe. Und bei dem Constructor komm ich auch nicht weiter in der Server...
Code:
import java.net.*;
import java.util.ArrayList;

public class Server{
    private ServerSocket serversocket;
    
    public Server(int port){
        /*????*/
    }
    public Kunde findeKunde(int kdNr) {
        ArrayList<Kunde> kundenliste = new ArrayList<Kunde>();
        kundenliste.contains(/*??????*/);
        }
    
    
}
 

Anhänge

  • Aufgabe ABI.PNG
    Aufgabe ABI.PNG
    21,8 KB · Aufrufe: 7
Die Klasse `Kunde` hat ja auch ein privates Attribute `int kdNr`. Und laut der Zeichnung hat die Klasse `Server` auch eine private Assoziation (z.B. in Form einer java.util.List) nach `Kunde`. Also könnte die Klasse `Server` erstmal so aussehen:
Java:
import java.net.*;
import java.util.*;
public class Server{
  private ServerSocket serversocket;
  private List<Kunde> kunden = new ArrayList<>();
  ...
}
Wenn man jetzt noch annimmt, dass neben dem privaten Attribut `kdNr` die Klasse Kunde auch noch ein public "Getter" für die Kundennummer besitzt (sonst wäre die Lösung der Aufgabe gar nicht möglich, da die Klasse `Server` gar nicht an die nötige Information eines Kunden kommen könnte), dann kannst du doch einfach durch die Liste der Kunden gehen und suchen, welcher davon die gesuchte Kundennummer hat. Oder, du bildest die Assoziation als eine java.util.Map ab, wenn nur ein einziger Kunde dieselbe Kundennummer (offensichtlich) haben kann.
 
Ehh Server hält eine Liste von Kunden (als Objektvariable). Diese kann "durchsucht" werden, genauer ist indexbasierter Zugriff mit ihr möglich...
 
War es wirklich so einfach?
Und was ist mit dem

Code:
import java.net.*;
import java.util.*;

public class Server{
    private ServerSocket serversocket;
    private ArrayList<Kunde> kunden = new ArrayList<>();
    
    public Server(int port) {
        
    }
    public Kunde findeKunde(int kdNr){
        return kunden.get(kdNr);
    }
}
 
Wie kann ich denn an die getKdNr kommen, da ich ja eigentlich nur an diese mit Kunde kunde = new Kunde( Hier müsste ja denn ein String stehen). Dann könnte ich ohne Problem kunde.getKdNr schreiben aber das geht ja nicht weil ich keinen String habe... Stehe komplett auf dem Schlauch tut mir leid :/
 
Zuletzt bearbeitet:
Ok hat sich erledigt habs gerafft.... danke für die Hilfe


Hier ist die Lösung, falls das jemand nochmal sucht:
Code:
public Kunde findeKunde(int kdNr){
        for(int i = 0; i < kunden.size() ; i++ ) {
            if((kunden.get(i)).getKdNr() == kdNr) {
                return kunden.get(i);
        }
        }
        return null;
    }
 

Neue Themen


Zurück
Oben