| User.java |
1 /**
2 * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
3 * Ein User mit einer Freundesliste
4 */
5 class User {
6
7 private String name; // Name
8
9 private Friend friendList; // erster Knoten der Freundesliste
10
11 /**
12 * Konstruktor setzt den Namen
13 */
14 public User(String name) {
15 this.name = name;
16 }
17
18 /**
19 * liefert den Namen
20 */
21 public String name() {
22 return name;
23 }
24
25 /**
26 * liefert den Beginn (ersten Knoten) der Freundesliste
27 */
28 public Friend friends() {
29 return friendList;
30 }
31
32 /**
33 * zeigt die Freunde an
34 */
35 public void showFriends() {
36 System.out.print("{ "+name()+": ");
37
38 Friend friend = friendList;
39 while (friend != null) { // Listenende erreicht ?
40 User u = friend.who();
41 System.out.print(u.name()+" ");
42
43 // nächster Knoten in der Liste
44 friend = friend.next();
45 }
46 System.out.println("}");
47 }
48
49 /**
50 * Test auf Freundschaft
51 */
52 public boolean isFriend(User user) {
53
54 Friend friend = friendList;
55 while (friend != null) {
56
57 // wenn "user" ein Freund ist
58 if (user == friend.who()) return true;
59
60 // nächster Knoten in der Liste
61 friend = friend.next();
62 }
63 return false;
64 }
65
66 /**
67 * trägt in die Freundesliste ein
68 */
69 public void addFriend(User user) {
70
71 // wenn "user" noch nicht Freund ist
72 if (!isFriend(user)) {
73
74 // Erzeugen eines neuen Listenknotens, der
75 // vorne in die Liste eingehängt wird
76 friendList = new Friend(user, friendList);
77
78 // trage auch "mich" als Freund von "user" ein
79 user.addFriend(this);
80 }
81 }
82
83 /**
84 * zeigt gemeinsame Freunde an
85 */
86 void showCommonFriends(User user) {
87 System.out.print("{ "+name()+" & "+user.name()+": ");
88
89 Friend friend = friendList;
90 while (friend != null) {
91
92 User f = friend.who();
93 // wenn "user" Freund einer "meiner" Freunde ist
94 if (f.isFriend(user))
95 System.out.print(f.name()+" ");
96
97 // nächster Knoten in der Liste
98 friend = friend.next();
99 }
100 System.out.println("}");
101 }
102
103 }
104