Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
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?
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.
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;
}
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.)