Hallo Leute,
habe hier eine etwas umfangreichere Aufgabe und kleinere Fragen. Ich hoffe ihr könnt mir helfen
Aufgabe:
In einem sozialen Netzwerk dreht sich alles um die Interaktion mit Freunden und den
Freunden der Freunde. Diese Bekanntschaften über Eck kann man beliebig weit ana-
lysieren. Laut dem Kleine-Welt-Phänomen, kennt ein Mensch jeden anderen Menschen
im Durchschnitt über ca. 6 Ecken. Gegeben ist die Klasse Person. Entwickeln Sie eine Klasse SozialesNetzwerk, welche die Methode
public Person[] getFreundeskette(Person start, Person ende)
enthält. Die Methode analysiert die Bekanntschaften des sozialen Netzwerks hinsicht-
lich der Bekanntschaften, durch welche Person start mit der Person ende verbunden ist.
Dabei wird davon ausgegangen, dass die Person ende nicht weiter als 6 Ecken von der
Person start entfernt ist. Der Rückgabewert der Methode ist daher ein Personen-Array
mit length = 6, welches die Personen in der identifizierten Freundschaftskette beinhaltet.
Dabei enhält der Index 0 den Ausgangspunkt und damit einen direkten Freund der Per-
son start. Die letzte Person im Array ist die Person ende selbst. Dies muss aber nicht
zwangsläufig der Index 5 sein, sondern ist abhängig von der Länge der Freundschaftsket-
te. Überschüssige Plätze im Array sollen den Wert null enthalten. Die Aufgabe ist von
Ihnen durch Rekursion zu lösen! Als Beispiel sollen die Personen des folgenden Netz-
werks dienen. Pfeile zwischen Personen symbolisieren eine einseitige oder beiderseitige
Freundschaft.
Klasse Person:
Hier die Objekte im sozialen Netzwerk.
Ich hab mit dem Konstruktor der Klasse Person schonmal die ganzen Objekte initialisiert. Hier mein Ansatz:
Dabei muss ich ja auch das Array "Freundesliste" der einzelnen Personen initialisieren. Ich habe bis jetzt aber nur die Anzahl der Freunde in den Arrays gesetzt. Wie stelle ich denn nun z.B. ein, das Thomas mit Theresa befreundet ist? Könnt ihr mir da weiterhelfen?
habe hier eine etwas umfangreichere Aufgabe und kleinere Fragen. Ich hoffe ihr könnt mir helfen
Aufgabe:
In einem sozialen Netzwerk dreht sich alles um die Interaktion mit Freunden und den
Freunden der Freunde. Diese Bekanntschaften über Eck kann man beliebig weit ana-
lysieren. Laut dem Kleine-Welt-Phänomen, kennt ein Mensch jeden anderen Menschen
im Durchschnitt über ca. 6 Ecken. Gegeben ist die Klasse Person. Entwickeln Sie eine Klasse SozialesNetzwerk, welche die Methode
public Person[] getFreundeskette(Person start, Person ende)
enthält. Die Methode analysiert die Bekanntschaften des sozialen Netzwerks hinsicht-
lich der Bekanntschaften, durch welche Person start mit der Person ende verbunden ist.
Dabei wird davon ausgegangen, dass die Person ende nicht weiter als 6 Ecken von der
Person start entfernt ist. Der Rückgabewert der Methode ist daher ein Personen-Array
mit length = 6, welches die Personen in der identifizierten Freundschaftskette beinhaltet.
Dabei enhält der Index 0 den Ausgangspunkt und damit einen direkten Freund der Per-
son start. Die letzte Person im Array ist die Person ende selbst. Dies muss aber nicht
zwangsläufig der Index 5 sein, sondern ist abhängig von der Länge der Freundschaftsket-
te. Überschüssige Plätze im Array sollen den Wert null enthalten. Die Aufgabe ist von
Ihnen durch Rekursion zu lösen! Als Beispiel sollen die Personen des folgenden Netz-
werks dienen. Pfeile zwischen Personen symbolisieren eine einseitige oder beiderseitige
Freundschaft.
Klasse Person:
Java:
public class Person {
/** Liste aller Freunde*/
private Person[] freundesliste;
/** Name der Person*/
private String name;
/**
* Konstruktor
* @param name Name der Person.
* @param freundesliste Freundesliste der Person.
*/
public Person(String name, Person[] freundesliste) {
this.freundesliste = freundesliste;
this.name = name;
}
/**
* Gibt die Freundesliste einer Person zurueck.
* @return Freundesliste als Array.
*/
public Person[] getFreunde() {
return freundesliste;
}
/**
* Ermoeglicht das nachtraegliche veraendern der Freundesliste.
* @param freundesliste neue Freundesliste.
*/
public void setFreunde(Person[] freundesliste) {
this.freundesliste = freundesliste;
}
/**
* Gibt den Namen der Person zurueck.
* @return Name der Person.
*/
public String getName() {
return name;
}
/**
* Stellt fest, ob eine andere Person ein Freund dieser Person ist.
* @param person Person nach der in der Freundesliste gesucht wird.
* @return true wenn die Person ein Freund ist; andernfalls fasle.
*/
public boolean isFriendWith(Person person) {
for (Person p : freundesliste) {
if (p != null && person != null && p.getName().equals(person.getName())) {
return true;
}
}
return false;
}
/**
* Gibt an, ob zwei Personen gleich sind.
* @param person Person mit der verglichen wird.
* @return true, wenn die Namen der beiden Personen identisch sind; andernfalls false.
*/
public boolean equals(Person person){
return name.equals(person.getName());
}
/**
* Gibt die Person als String zurueck.
* @return Name der Person.
*/
public String toString(){
return getName();
}
}
Hier die Objekte im sozialen Netzwerk.
Ich hab mit dem Konstruktor der Klasse Person schonmal die ganzen Objekte initialisiert. Hier mein Ansatz:
Java:
public class SozialesNetzwerk {
public Person[] getFreundeskette(Person start, Person ende){
Person theresa = new Person("Theresa",new Person[0]);
theresa.setFreunde(null);
Person thomas = new Person("Thomas",new Person[1]);
Person kerstin = new Person("Kerstin",new Person[3]);
Person michael = new Person("Michael",new Person[1]);
Person adam = new Person("Adam",new Person[1]);
}
}