AddressCard.h
#import <Foundation/NSObject.h>#import <Foundation/NSString.h>
@interface AddressCard: NSObject
{
NSString *name;
NSString *email;
}
@property (copy, nonatomic) NSString *name, *email;
-(void) print;
@end
AddressCard.m
#import “ AddressCard.h ”@implementation AddressCard
@synthesize name, email;
-(void) print
{
NSLog (@ ” ==================================== ” );
NSLog (@ ” | | ” );
NSLog (@ ” | %-31s | ” , [name UTF8String]);
NSLog (@ ” | %-31s | ” , [email UTF8String]);
NSLog (@ ” | | ” );
NSLog (@ ” | | ” );
NSLog (@ ” | | ” );
NSLog (@ ” | O O | ” );
NSLog (@ ” ==================================== ” );
}
-(void) setName: (NSString *) theName andEmail: (NSString *) theEmail
{
self.name = theName;
self.email = theEmail;
}
@end
Addressbook.h
#import <Foundation/NSArray.h>
#import “ AddressCard.h ”
@interface AddressBook: NSObject
{
NSString *bookName;
NSMutableArray *book;
}
-(id) initWithName: (NSString *) name;
-(void) addCard: (AddressCard *) theCard;
-(void) removeCard: (AddressCard *) theCard;
-(AddressCard *) lookup: (NSString *) theName;
-(int) entries;
-(void) list;
-(void) dealloc;
@end
Addressbook.m
#import “ AddressBook.h ”@implementation AddressBook;
// set up the AddressBook ’ s name and an empty book
-(id) initWithName: (NSString *) name
{
self = [super init];
if (self) {
bookName = [ NSString alloc] initWithString: name];
book = [[NSMutableArray alloc] init];
}
return self;
}
-(void) addCard: (AddressCard *) theCard
{
[book addObject: theCard];
}
-(int) entries
{
return [book count];
}
-(void) list
{
NSLog (@ ” ======== Contents of: %@ ========= ” , bookName);
for ( AddressCard *theCard in book ) // fast enumeration to sequence through each element of the book array.
NSLog (@ ” %-20s %-32s ” , [theCard.name UTF8String],
[theCard.email UTF8String]);
NSLog (@ ” ================================================== ” );
}
-(void) dealloc
{
[bookName release];
[book release];
[super dealloc];
}
-(AddressCard *) lookup: (NSString *) theName
{
for ( AddressCard *nextCard in book )
if ( [[nextCard name] caseInsensitiveCompare: theName] == NSOrderedSame )
return nextCard;
return nil;
}
-(void) removeCard: (AddressCard *) theCard
{
[book removeObjectIdenticalTo: theCard];
}
-(BOOL) isEqual (AddressCard *) theCard
{
if ([name isEqualToString: theCard.name] == YES &&
[email isEqualToString: theCard.email] == YES)
return YES;
else
return NO;
}
-(void) sort
{
[book sortUsingSelector: @selector(compareNames:)];
}
// Compare the two names from the specified address cards
-(NSComparisonResult) compareNames: (id) element
{
return [name compare: [element name]];
}
@end
Test Program
#import “ AddressBook.h ”
#import <Foundation/NSAutoreleasePool.h>
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *aName = @ ” Julia Kochan ” ;
NSString *aEmail = @ ” jewls337@axlc.com ” ;
NSString *bName = @ ” Tony Iannino ” ;
NSString *bEmail = @ ” tony.iannino@techfitness.com ” ;
NSString *cName = @ ” Stephen Kochan ” ;
NSString *cEmail = @ ” steve@kochan-wood.com ” ;
NSString *dName = @ ” Jamie Baker ” ;
NSString *dEmail = @ ” jbaker@kochan-wood.com ” ;
AddressCard *card1 = [[AddressCard alloc] init];
AddressCard *card2 = [[AddressCard alloc] init];
AddressCard *card3 = [[AddressCard alloc] init];
AddressCard *card4 = [[AddressCard alloc] init];
AddressBook *myBook = [AddressBook alloc];
// First set up four address cards
[card1 setName: aName andEmail: aEmail];
[card2 setName: bName andEmail: bEmail];
[card3 setName: cName andEmail: cEmail];
[card4 setName: dName andEmail: dEmail];
// Now initialize the address book
myBook = [myBook initWithName: @ ” Linda ’ s Address Book ” ];
NSLog (@ ” Entries in address book after creation: %i ” ,
[myBook entries]);
// Add some cards to the address book
[myBook addCard: card1];
[myBook addCard: card2];
[myBook addCard: card3];
[myBook addCard: card4];
NSLog (@ ” Entries in address book after adding cards: %i ” ,
[myBook entries]);
// List all the entries in the book now
[myBook list];
// Look up a person by name
NSLog (@ ” Stephen Kochan ” );
myCard = [myBook lookup: @ ” stephen kochan ” ];
if (myCard != nil)
[myCard print];
else
NSLog (@ ” Not found! ” );
[myBook sort];
[myBook list];
[myBook removeCard: myCard];
[myBook list]; // verify it ’ s gone
[card1 release];
[card2 release];
[card3 release];
[card4 release];
[myBook release];
[pool drain];
return 0;
}
沒有留言:
張貼留言