class PhoneBook

Werbung
Abteilung für Telekooperation
Übung Softwareentwicklung 1
für Wirtschaftsinformatik
UE09 Schrittweise Verfeinerung /
Doppeltverkettete Liste
WS 200^8
Dr. Wieland Schwinger
[email protected]
http://www.tk.uni-linz.ac.at/teaching/
http://www.tk.uni-linz.ac.at/blackboard/
Abteilung für Telekooperation
 "Dealing with complexity is an inefficient and
unnecessary waste of time, attention and mental
energy. There is never any justification for things
being complex when they could be simple."
 "In computer science, abstraction is a mechanism
and practice to reduce and factor out details so that
one can focus on a few concepts at a time."
 "Even a thousand miles journey starts with a
single step." (Lao Tseu)
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-2
Abteilung für Telekooperation
Vorgehensweise
Entwurf ist ein iterativer Process:
Analyse
Implementierung
Entwurf
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-3
Abteilung für Telekooperation
Vorgehensweise
Verfeinerung in 2 Ebenen:
Funktionaler Umfang (neue Methoden)
Klasse 1 M 1 M 2 M 3 Klasse 1 M 1 M 2 ...
Detailierungsgrad
der Spezifikation
Verbale Beschreibung
Strukturierte
Beschreibung
Psydocode
Code
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-4
Abteilung für Telekooperation
PhoneBook - Anforderungen
 Gesucht wird ein Java-Programm, dass eine entsprechende
Datenstruktur für die Verwaltung von Telephoneinträgen
zur Verfügung stellt.
 Es soll dabei möglich sein:
■ Telephonbucheinträge hinzuzufügen / entfernen
■ Einen Telephonbucheintrag zu suchen
■ Die Liste aller verwalteter Einträge eines Telephonbuchs in
sortierter Reihenfolge auszugeben
■ Verschiedene Telephonbücher zu verwalten (z.b. ein privates
Telephonbuch und ein Geschäftstelephonbuch)
 Hinweise:
■ Verwalten Sie die Einträge durch eine doppelt verkettete Liste
■ Speichern Sie pro Eintrag einfach Name und Telephonnummer als
String
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-5
Abteilung für Telekooperation
Entwurfsschritt 1
Anforderungen detailieren, öffentlichen Methoden
finden
Folgende Methoden ist erforderlich:
■ Telephonbucheinträge hinzuzufügen, ändern, entfernen
 add(Telephoninformaitonen einer Person)
 update(Telephoninformaiton einer Person)
 delete(Name einer Person)
■ Einen Telephonbucheintrag zu suchen
 search(Name einer Person)
■ Die Liste aller verwalteter Einträge eines Telephonbuchs in
sortierter Reihenfolge auszugeben
 print()
Folgende Attribute ist erforderlich:
■ Verschiedene Telephonbücher zu verwalten (z.b. ein privates
Telephonbuch und ein Geschäftstelephonbuch)
 durch Instanzen der Klasse PhoneBook
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-6
Abteilung für Telekooperation
Entwurfsschritt 2
Aufstellen der "offensichtlichen" Klassen
Welche Klassen werden benötigt:
1) "Hauptprogramm", dass die Verwendung des
Telephonbuches steuert
=> PhoneBookTest
2) Telephonbücher, die eine doppelt verkettete Liste von
Telephonbucheinträgen verwalten
=> PhoneBook
3) Telephonbucheinträge, die einen Eintrag mit Name und
Telephonnummer verwalten
=> PhoneBookEntry
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-7
Abteilung für Telekooperation
Entwurfsschritt 3
Zuordnen der Funktionalität zu den Klassen
Welche Klassen werden benötigt:
1) PhoneBookTest
■
Verschiedene Telephonbücher zu verwalten (z.b. ein privates Telephonbuch und ein
Geschäftstelephonbuch)
 durch Instanzen der Klasse PhoneBook
 Testen der Funktionalität
2) PhoneBook
■
Telephonbucheinträge hinzuzufügen, ändern, entfernen
 add(Telephoninformationen einer Person)
 update(Telephoninformaiton einer Person)
 delete(Name einer Person)
■
Einen Telephonbucheintrag zu suchen
 search(Name einer Person)
■
Die Liste aller verwalteter Einträge eines Telephonbuchs in sortierter Reihenfolge auszugeben
 print()
■
Verschiedene Telephonbücher zu verwalten (z.b. ein privates Telephonbuch und ein
Geschäftstelephonbuch)
 name Text, der das Telephonbuch beschreibt
3) PhoneBookEntry
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-8
Abteilung für Telekooperation
Entwurfsschritt 4 - PhoneBook
Klärung der funktionalen Anforderungen
1) Steuert die Verwendung des Telephonbuches:
 Soll verschiedene Telephonbücher anlegen können:
PhoneBook bizzPhoneBook = new PhoneBook("Business Phone Book");
PhoneBook privatePhoneBook = new PhoneBook("Private Phone Book");
 Soll einen Eintrag hinzufügen können:
if ( !(bizzPhoneBook.add("Hugo Boss", "+43(0)1/9990999")) )
IO.writeLn("could not be inserted");
 Soll einen Eintrag ändern können:
if (! ( bizzPhoneBook.update("Kevin Klein", "+43(0)1/9990999")))
IO.writeLn("could not be updated");
 Soll einen Eintrag löschen können:
if (! ( bizzPhoneBook.delete("Giorgio Armani")))
IO.writeLn("could not be deleted");
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-9
Abteilung für Telekooperation
Entwurfsschritt 4 - PhoneBook
Klärung der funktionalen Anforderungen
cont.
 Soll nach einem Eintrag gesucht werden können:
PhoneBookEntry theEntry = bizzPhoneBook.search("Hugo
Boss");
if (theEntry == null) {
IO.writeLn("could not be found");
} else {
IO.writeLn("found: " + theEntry)
}
 Soll alle Einträge ausgeben können:
bizzPhoneBook.print();
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-10
Abteilung für Telekooperation
Entwurfsschritt 5 - PhoneBook
Aufstellung der Klassen, Attribute und Methoden
PhoneBook:
Folgende Attribute sind erforderlich:
String name;
// Name des Telephonbuchs
/* Verwaltet Telephonbucheinträge (PhoneBookEntry)
als doppelt verkettete Liste */
PhonebookEntry head; // first PhoneBookEntry in List
PhonebookEntry tail; // last PhoneBookEntry in List
Folgende Methoden sind erforderlich:
boolean add(String name, String phone)
boolean update(String name, String phone)
boolean delete(String name)
PhoneBookEntry search(String name)
void print()
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-11
Abteilung für Telekooperation
Entwurfsschritt 5 - PhoneBookEntry
Aufstellung der Klassen, Attribute und Methoden
PhoneBookEntry:
Folgende Attribute sind erforderlich:
 ein Telephonbucheintrag beinhaltet:
Die "Daten"/Objekte (Name und Telephonnummer)
String name;
String phoneNumber;
 Die Verkettung zum nächsten Telephonbucheintrag und zum
vorangegangegen Telephonbucheintrag
PhonebookEntry next; // naechster PhoneBookEntry in List
PhonebookEntry previous; // vorang. PhoneBookEntry i. Liste
Folgende Methoden sind erforderlich:
-
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-12
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch "Makroschritte"
boolean add(String name, String phone)
1) neues Telephonbucheintrag erstellen
2) Name und Telephonnummer in Telephonbucheintrag speichern
3) Telephonbucheintrag hinzufügen
boolean update(String name, String phone)
1) Telephonbucheintrag suchen
2) wenn gefunden Telephonnummer ändern
boolean delete(String name)
1) Telephonbucheintrag suchen
2) wenn gefunden Telephonbucheintrag löschen
PhoneBookEntry search(String x)
1) durchwandere die verkettete Liste vom Anfang bis zum Ende bis passender Telephonbucheintrag
gefunden wurde
2) wenn gefunden gib gefundenen Telephonbucheintrag zurück
void print()
1) durchwandere die verkettete Liste vom Anfang bis zum Ende und gibt dabei jeden
Telephonbucheintrag aus
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-13
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch "Makroschritte"
(Code)
class PhoneBook {
// Attribute eines Telephonbuchs
String name;
// Name des Telephonbuchs
PhonebookEntry head; // first PhoneBookEntry in List
PhonebookEntry tail; // last PhoneBookEntry in List
// Methoden eines Telephonbuchs
PhoneBook(String aName) {
// Konstruktur
//1) Initialisierung des Telephonbuchs
}
boolean add(String aName, String aPhoneNumber) {
//1) neuen Telephonbucheintrag erstellen
//2) Name und Telephonnummer in Telephonbucheintrag speichern
//3) Telephonbucheintrag hinzufügen => durch eigene Methode
add(PhoneBookEntry )
}
boolean add(PhoneBookEntry newEntry) {
//<REFINE LATER>
}
boolean update(String aName, String aPhoneNumber) {
//1) Telephonbucheintrag suchen => durch eigene Methode find(String)
//2) Falls gefunden Telephonnummer ändern
}
…….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-14
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch "Makroschritte"
(Code)
class PhoneBook {
…….
boolean delete(String aName) {
//1) Telephonbucheintrag suchen => durch eigene Methode find(String)
//2) Falls gefunden Telephonbucheintrag löschen => durch eigene
Methode delete(PhoneBookEntry)
}
boolean delete(PhoneBookEntry anEntry) {
//<REFINE LATER>
}
boolean search(Sring aName) {
//1) Durchwandere die verkettete Liste vom Anfang bis zum Ende
bis passender Telephonbucheintrag gefunden wurde
//2) Falls gefunden gib gefundenen Telephonbucheintrag zurück
}
void print() {
//1) Durchwandere die verkettete Liste vom Anfang bis zum Ende und
//
gibt dabei jeden Telephonbucheintrag aus
}
} // end class PhoneBook
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-15
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBookEntry
Detaillierung der Methoden durch "Makroschritte"
(Code)
class PhoneBookEntry {
// Attribute
//1) Die "Daten"/Objekte (Name und Telephonnummer)
String name;
//2) Die Verkettung zum nächsten Telephonbucheintrag und
PhoneBookEntry next;
//3) die Verkettung zum vorangegangegen Telephonbucheintrag
PhoneBookEntry previous;
// Methoden
PhoneBookEntry(String name, String phoneNumber) { //
Konstruktur
//1) Initialisierung
}
} // end class PhoneBookEntry
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-16
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook {
// Attribute eines Telephonbuchs
String name;
// Name des Telephonbuchs
PhoneBookEntry head;
//
//
//
//
PhoneBookEntry tail;
Zeiger auf den Beginn der doppelt
verketteten Liste
Zeiger auf das Ende der doppelt
verketteten Liste
…….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-17
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
PhoneBook(String aName) {
this();
name = aName;
}
// Konstruktur
PhoneBook() {
head = null; // eigentlich nicht mehr notwendig
tail = null; // da defaultmaessig auf null
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-18
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean add(String aName, String aPhoneNumber) {
// 1) neues Telephonbucheintrag erstellen
// 2) Name und Telephonnummer in
//
Telephonbucheintrag speichern
PhoneBookEntry anEntry = new PhoneBookEntry(aName, aPhone);
// 3) Telephonbucheintrag hinzufügen
return add(anEntry);
// => durch eigene Methode
//
add(PhoneBookEntry)
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-19
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean
//
//
//
//
add(PhoneBookEntry newEntry) {
1) hinzufügen, falls Telephonbuch leer einfügen
2) hinzufügen, falls Telephonbucheintrag kleiner als head
3) hinzufügen, falls Telephonbucheintrag größer als tail
4) hinzufügen, sonst
}
boolean
//
//
//
//
//
//
delete(PhoneBookEntry newEntry) {
suchen des Knotens
0) falls nicht vorhanden, false zurueckgeben (inkl. Fall, dass Liste leer)
1) loeschen, falls head gleich tail (d.h. nur ein Knoten in Liste)
2) loeschen, falls Telephonbucheintrag head
3) loeschen, falls Telephonbucheintrag tail
4) loeschen, sonst
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-20
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean add(PhoneBookEntry newEntry) {
// 1) wenn Telephonbuch leer einfügen
// 1.1) previous und next des Telephonbucheintrags auf null setzen
// 1.2) head und tail auf Telephonbucheintrag setzten
// 2) wenn Telephonbucheintrag kleiner als head
// 2.1) previous auf null und next auf alten head setzen
// 2.2) head auf Telephonbucheintrag setzten
// 3) wenn Telephonbucheintrag größer als tail
// 3.1) next auf null und previous auf alten tail setzen
// 3.2) tail auf Telephonbucheintrag setzten
// 4) sonst
// 4.1) suche position
// 4.2) fuege Telephonbucheintrag ein
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-21
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean
//
//
//
delete(PhoneBookEntry newEntry) {
suchen des Knotens
0) falls nicht vorhanden, false zurueckgeben (inkl. Fall, dass Liste leer)
1) loeschen, falls head gleich tail (d.h. nur ein Knoten in Liste)
// 1.1) head und tail auf leer setzen (Liste ist nun leer)
// 2) loeschen, falls Telephonbucheintrag head
// 2.1)
// 3) loeschen, falls Telephonbucheintrag tail
// 4) loeschen, sonst
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-22
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean add(PhoneBookEntry newEntry) {
// 1) wenn Telephonbuch leer einfügen
// 1.1) previous und next des Telephonbucheintrags auf null setzen
// 1.2) head und tail auf Telephonbucheintrag setzten
// 2) wenn Telephonbucheintrag kleiner als head
// 2.1) previous auf null und next auf alten head setzen
// 2.2) head auf Telephonbucheintrag setzten
// 3) wenn Telephonbucheintrag größer als tail
// 3.1) tail auf Telephonbucheintrag setzten
// 3.2) next auf null und previous auf alten tail setzen
// 4) sonst
// 4.1) suche position
// 4.2) fuege Telephonbucheintrag
// 4.2.1) setzte next des
// 4.2.2) setzte previous
// 4.2.3) setzte next des
// 4.2.4) setzte previous
ein
Telephonbucheintrags auf Nachfolger
des Telephonbucheintrags auf Vorgaenger
Vorgaengers auf Telephonbucheintrag
des Nachfolgers auf Telephonbucheintrag
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-23
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean add(PhoneBookEntry newEntry) {
if (head == null) {
// 1) wenn Telephonbuch leer einfügen
// 1.1) previous und next des T. auf null setzen
newEntry.next = null;
newEntry.previous = null;
// 1.2) head und tail auf Telephonbucheintrag setzten
head = tail = newEntry;
return true;
} else if (newEntry.lessThan(head)) {
// 2) wenn Telephonbucheintrag kleiner als head
// einfuegen bevor ersten Element
// 2.1) previous auf null und next auf alten head setz
head.previous = newEntry;
newEntry.next = head;
// 2.2) head auf Telephonbucheintrag setzten
head = newEntry;
return true;
…
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-24
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
boolean add(PhoneBookEntry newEntry) {
…
} else if (newEntry.greaterThan(tail)) {
// 3) wenn Telephonbucheintrag groesser als tail
// insert after last
// 3.1) tail auf Telephonbucheintrag setzten
tail.next = newEntry;
newEntry.previous = tail;
// 3.2) next auf null und previous auf alten tail setzen
tail = newEntry;
return true;
} else {
// 4) sonst
PhoneBookEntry anEntry = findPrevious(newEntry.name);
if (anEntry.equalsName(newEntry)) return false;
// 4.2.1) setzte next des Telephonbucheintrags auf Nachfolger
newEntry.next = anEntry.next;
// 4.2.2) setzte previous des Telephonbucheintrags auf Vorgaenger
newEntry.previous = anEntry;
// 4.2.3) setzte next des Vorgaengers auf Telephonbucheintrag
anEntry.next = newEntry;
// 4.2.4) setzte previous des Nachfolgers auf Telephonbucheintrag
newEntry.next.previous = newEntry;
return true;
}
Softwareentwicklung
I • UE • WS 2008/09 • Schwinger
}
Folie-25
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook
{
…
PhoneBookEntry findPrevious(String aName) {
PhoneBookEntry anEntry;
for (anEntry = head; anEntry != null && anEntry.lessThan(aName);
anEntry = anEntry.next);
if (anEntry == null) {
return null;
} else {
return anEntry.previous;
}
}
PhoneBookEntry search(String aName) {
PhoneBookEntry anEntry = findPrevious(aName);
if (anEntry == null || anEntry.next == null) {
return null;
// noting found
} else if ((anEntry.next.name.equals(aName)) {
return anEntry;
// are equal thus the one
} else {
return null;
// not equal thus null
}
}
….
Softwareentwicklung
I • UE • WS 2008/09 • Schwinger
Folie-26
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook {
…
boolean delete(String aName) {
PhoneBookEntry anEntry = find(aName);
if (anEntry == null) {
IO.writeLn("ERROR: name not found!");
return false;
} else { return delete(anEntry); }
}
boolean delete(PhoneBookEntry anEntry) {
PhoneBookEntry entry = find(anEntry.name);
if (anEntry == null) { return false; } // 0) falls nicht vorhanden, false zurueckgeben (inkl. Liste leer)
} else if (anEntry == head && anEntry == tail) {
// 1) loeschen, falls head gleich tail (d.h. nur ein Knoten in Liste)
head = tail = null;
return true;
} else if (anEntry == head) {
// 2) loeschen, falls Telephonbucheintrag head
head = anEntry.next;
anEntry.next.previous = null;
return true;
} else if (anEntry == tail) {
// 3) loeschen, falls Telephonbucheintrag tail
anEntry.previous.next = null;
tail = anEntry.previous;
return true;
} else {
// 4) loeschen, sonst
anEntry.previous.next = anEntry.next;
anEntry.next.previous = anEntry.previous;
return true; }
}
Softwareentwicklung
I • UE • WS 2008/09 • Schwinger
….
Folie-27
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBook
Detaillierung der Methoden durch Details (Code)
class PhoneBook {
…
boolean update(String aName, String aPhoneNumber) {
PhoneBookEntry anEntry = find(aName);
if (anEntry != null) {
anEntry.phoneNumber = aPhoneNumber;
// konnte man auch in PhoneBookEntry machen lassen
return true;
} else { return false; }
}
void print() {
IO.writeLn("The Phone Book: " + name);
if (head == null) { IO.write("\n is emtpy!");
} else {
PhoneBookEntry anEntry = head;
for (int i = 1;anEntry != null; i++) {
IO.write("\n " + i + ") ");
anEntry.print();
anEntry = anEntry.next;
}
} IO.write("\n");
}
….
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-28
Abteilung für Telekooperation
Entwurfsschritt 6 - PhoneBookEntry
Detaillierung der Methoden durch "Makroschritte"
(Code)
class PhoneBookEntry {
// Attribute
//1) Die "Daten"/Objekte (Name und Telephonnummer)
String name;
String phoneNumber;
//2) Die Verkettung zum nächsten Telephonbucheintrag und
PhoneBookEntry next;
//3) die Verkettung zum vorangegangegen Telephonbucheintrag
PhoneBookEntry previous;
// Methoden
PhoneBookEntry(String name, String phoneNumber) {
// Konstruktur
//1) Initialisierung
}
void print() {
//<TRIVIAL IMPLEMENTION>
}
boolean lessThan(PhoneBookEntry anEntry) {
//1) gib zurueck, ob der Name kleiner ist
}
boolean equalsName(PhoneBookEntry anEntry) {
//1) gib zurueck, ob der Name kleiner ist
}
Softwareentwicklung
I • UEPhoneBookEntry
• WS 2008/09 • Schwinger
} // end class
Folie-29
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBookEntry
Detaillierung der Methoden durch Details (Code)
class PhoneBookEntry {
String name;
String phoneNumber;
PhoneBookEntry next = null;
PhoneBookEntry previous = null;
PhoneBookEntry(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
public String toString() {
return ( "" + name + ", " + phoneNumber);
}
void print() {
IO.writeLn("" + this);
}
….
Softwareentwicklung
I • UE • WS 2008/09 • Schwinger
}
Folie-30
Abteilung für Telekooperation
Entwurfsschritt 7 - PhoneBookEntry
Detaillierung der Methoden durch Details (Code)
class PhoneBookEntry {
…
boolean lessThan(PhoneBookEntry anEntry) {
return (this.lessThan(anEntry.name));
}
boolean lessThan(String aName) {
int i;
int lengthOfShorterString = Math.min(this.name.length()-1, aName.length()-1);
for (i = 0; i <= lengthOfShorterString
&& this.name.charAt(i) == aName.charAt(i); i++);
if (i > lengthOfShorterString)
return (this.name.length()-1 < aName.length()-1); // came to an end
else return this.name.charAt(i) < aName.charAt(i); // some char did not match
}
boolean greaterThan(PhoneBookEntry anEntry) {
return (!equalsName(anEntry) && ! lessThan(anEntry));
}
boolean equalsName(PhoneBookEntry anEntry) {
return (this.name.equals(anEntry.name));
}
boolean equalsName(StringBuffer aName) {
return (this.name.equals(aName));
}
}
Softwareentwicklung I • UE • WS 2008/09 • Schwinger
Folie-31
Herunterladen