Klassendiagramm: unique

J

jono

Top Contributor
1. Wie setze ich die Person "unique"?
2. Ich verstehe jetzt auch nicht ganz, wie ich das mit compareTo zu machen habe, das Interface Comparable muss ich ja nicht implementieren, sondern nur die Klasse "Person" muss das das interface implementieren, oder? Und wie vergleiche ich das denn jetzt? Ich wüsste jetzt z.B. nur
Java:
 int result = firstname.compareTo(...);
Was muss in die Klammern, wie schreibe ich compareTo(); so, sodass firstname, lastname und email auf Einmaligkeit überprüft werden...
Die grün gefärbten UML-Elemente, die als Interfaces deklariert sind, habe ich implementiert, also die Methoden dieser Interfaces habe ich jetzt mit "@Override" in die jeweils neue Klasse geladen.
 

Anhänge

  • teams.png
    teams.png
    54,1 KB · Aufrufe: 36
J

jono

Top Contributor
Java:
private int id;
    private HashSet<String> firstname = new HashSet<String>();
    private HashSet<String> lastname = new HashSet<String>();
    private HashSet<String >email = new HashSet<String>();
    private TeamImpl team;
Habe das jetzt mit unique mal so gedacht zu machen...
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
1. Wie setze ich die Person "unique"?
Die Klasse Person kann das nicht selbst sicherstellen, dass muss immer der umgebende Kontext machen.

2. Ich verstehe jetzt auch nicht ganz, wie ich das mit compareTo zu machen habe, das Interface Comparable muss ich ja nicht implementieren, sondern nur die Klasse "Person" muss das das interface implementieren, oder?
Wenn die Klasse das Interface implementiert, implementierst du doch das Interface Comparable?!

Was muss in die Klammern, wie schreibe ich compareTo(); so, sodass firstname, lastname und email auf Einmaligkeit überprüft werden...
compareTo soll nicht auf "Einmaligkeit" prüfen (ergibt bei firstname & lastname auch wenig Sinn), sondern auf größer/gleich/kleiner vergleichen.

Ihr habt doch bestimmt irgendeine Erklärung zu compareTo bekommen?

Ansonsten, wie machst du es denn "per Hand" wenn du Namen vergleichen sollst?


Java:
private int id;
    private HashSet<String> firstname = new HashSet<String>();
    private HashSet<String> lastname = new HashSet<String>();
    private HashSet<String >email = new HashSet<String>();
    private TeamImpl team;
Habe das jetzt mit unique mal so gedacht zu machen...
Damit drückst du aus:
Person hat beliebig viele, ungeordnete Vornamen, Nachname und Mail-Adressen und "besitzt" ein "TeamImpl".

Das hat nicht mehr viel mit dem Diagramm zu tun.
 
J

jono

Top Contributor
Die Klasse Person kann das nicht selbst sicherstellen, dass muss immer der umgebende Kontext machen.
Also am besten in der Klasse, die das Interface "Team" implementiert, oder?
Wenn die Klasse das Interface implementiert, implementierst du doch das Interface Comparable?!
Ja, ich weiß, habe es umständlich formuliert. Damit war gemeint, dass ich das Interface Comparable nicht an sich als Code schreiben (implementieren) muss, da das ja eine vorgeschriebene Klasse ist, die man mit "implements" implementiert.
compareTo soll nicht auf "Einmaligkeit" prüfen (ergibt bei firstname & lastname auch wenig Sinn), sondern auf größer/gleich/kleiner vergleichen.

Ihr habt doch bestimmt irgendeine Erklärung zu compareTo bekommen?

Ansonsten, wie machst du es denn "per Hand" wenn du Namen vergleichen sollst?
Ja, das meinte ich so. Einmaligkeit im Sinne von vollständiger Gleichheit von Vor- und Nachnamen. Tatsächlich haben wir keine Beschreibung dazu, die Einzige ist die im angehängten UML-Diagramm. Ich würde, wie du schon sagst, darauf untersuchen, ob jeweils Vorname und Nachname gleich sind , wenn beide gleich sind, dann soll irgendeine Fehlermeldung geworfen werden.
Ich schicke mal die Interfaces, das beschreibt eigentlich schon alles mit JavaDoc:
Java:
/**
* Represents a person with 5 attributes. Each person belongs to exactly one
* {@link Team}. Person IDs and email addresses have to be unique.
*
*
*/
public interface Person extends Comparable<Person> {
    /**
     * @return the ID of this Person
     */
    public int getId();

    /**
     * @return the firstname of this Person
     */
    public String getFirstname();

    /**
     * @return the lastname of this Person
     */
    public String getLastname();

    /**
     * @return the email address of this Person, guaranteed to be not null and not
     *         empty
     */
    public String getEmail();

    /**
     * @return the {@link Team} of this Person, guaranteed to be not null
     */
    public Team getTeam();
}

Java:
import java.util.Collection;

/**
* Represents a Team with a member list. The team name identifies a team and
* hence has to be uniqe. The members are {@link Person}s.
*
*
*/
public interface Team {
    /**
     * @return the name of this Team, guaranteed to be not null and not empty
     */
    public String getName();

    /**
     * @return the members of this team as a {@link Collection} of {@link Person}s
     */
    public Collection<Person> getMembers();
}

Java:
import java.io.IOException;
import java.util.Collection;

public interface TeamReader {
    /**
     * Reads the CSV file {@code csvFilename} and returns a {@link Collection} of
     * {@link Team}s. The CSV file is TAB-delimited and contains a headline. Each
     * line corresponds to a {@link Person} and has 5 fields: person ID, team name,
     * lastname, firstname, email address.
     *
     * @param csvFilename
     *            the name of the CSV file
     * @return a {@link Collection} of {@link Team}s as defined in the CSV file
     * @throws IOException
     *             if there's a problem reading the CSV file
     * @throws DuplicateKeyException
     *             if there is a duplicate person ID or a duplicate email address
     */
    public Collection<Team> readCsvFile(String csvFilename) throws IOException, DuplicateKeyException;
}
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Also am besten in der Klasse, die das Interface "Team" implementiert, oder?
Du musst dann nur sicherstellen, dass eine Person nur innerhalb eines Teams erzeugt werden kann, und das nicht in einem anderen Team eine Person mit gleicher ID/mail existieren kann.

Ja, das meinte ich so. Einmaligkeit im Sinne von vollständiger Gleichheit von Vor- und Nachnamen. Tatsächlich haben wir keine Beschreibung dazu, die Einzige ist die im angehängten UML-Diagramm. Ich würde, wie du schon sagst, darauf untersuchen, ob jeweils Vorname und Nachname gleich sind , wenn beide gleich sind, dann soll irgendeine Fehlermeldung geworfen werden.
compareTo hat nichts mit Einmaligkeit zu tun. Es soll nur geprüft werden, ob (lastname, firstname, email) einer Person kleiner/gleich/größer als (lastname, firstname, email) einer anderen Person sind. Gleichheit ist dabei gültig und darf nicht zu einer Fehlermeldung führen. (Gleichheit ist nur implizit durch die Einzigartigkeit der email ausgeschlossen, für compareTo ist das allerdings irrelevant.)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
T Klassendiagramm in Java überführen Java Basics - Anfänger-Themen 2
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
B Klassendiagramm erklären Java Basics - Anfänger-Themen 3
C Klassendiagramm aus Java-Code entwickeln Java Basics - Anfänger-Themen 3
M UML-Klassendiagramm ArrayList Java Basics - Anfänger-Themen 1
X UML Klassendiagramm, UML Notation Java Basics - Anfänger-Themen 2
UnknownInnocent Best Practice Klassendiagramm aus fertigen Klassen erstellen lassen Java Basics - Anfänger-Themen 2
J UML - Klassendiagramm Java Basics - Anfänger-Themen 8
M Klassen Klassendiagramm - Hilfe benötigt Java Basics - Anfänger-Themen 0
K Klassendiagramm UML Java Basics - Anfänger-Themen 12
S Klassen Klassendiagramm Implementierung? Java Basics - Anfänger-Themen 5
A Klassen UML Klassendiagramm Java Basics - Anfänger-Themen 5
C Erste Schritte UML Klassendiagramm einen Prüfungsplan erstellen Java Basics - Anfänger-Themen 3
N Modellierung eines Programms in UML (Klassendiagramm) Java Basics - Anfänger-Themen 2
U klassendiagramm Java Basics - Anfänger-Themen 2
L UML Klassendiagramm Java Basics - Anfänger-Themen 8
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
M UML Klassendiagramm Java Basics - Anfänger-Themen 2
S Klassendiagramm - nur eigene Klassen? Java Basics - Anfänger-Themen 3
D Klassendiagramm Java Basics - Anfänger-Themen 4
M Klassendiagramm in Netbeans Java Basics - Anfänger-Themen 7
G UML-Klassendiagramm bitte prüfen! Java Basics - Anfänger-Themen 26
C UML Klassendiagramm erläutern! Java Basics - Anfänger-Themen 8
G dringende frage zu klassen und methoden ( klassendiagramm) Java Basics - Anfänger-Themen 19
B Unique ID nochmal Unique machen Java Basics - Anfänger-Themen 20
B Unique ID für Device im internen Netzwerk Java Basics - Anfänger-Themen 19
I Unique client information in WebApp Java Basics - Anfänger-Themen 3
I Unique ID für Computer Java Basics - Anfänger-Themen 10
Dingoe Input/Output Unique ID's für Objekte Java Basics - Anfänger-Themen 5
F Unique Object Java Basics - Anfänger-Themen 3
B Variablen unique Value Java Basics - Anfänger-Themen 12
J Datentypen Meine Hashliste ist nicht unique Java Basics - Anfänger-Themen 5
A ComboBox mit unique Werten Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben