Test code for class methods
BankAccount.h
#import
@interface BankAccount : NSObject
@property (readonly) double balance;
+(BankAccount *) accountWithBalance:(double)amt;
-(void) deposit:(double)amt;
+(void) setInterestRate:(double) rate;
-(void) applyInterest;
@end
BankAccount.m
#import "BankAccount.h"
@interface BankAccount()
@property (readwrite) double balance;
@end
@implementation BankAccount
+(BankAccount *) accountWithBalance:(double)amt
{
BankAccount *temp = [BankAccount alloc];
temp.balance = amt;
return temp;
}
-(void) deposit:(double)amt
{
self.balance += amt;
}
double interestRate = 0.05;
-(void) applyInterest
{
double amt = self.balance*interestRate;
self.balance += amt;
}
+(void) setInterestRate:(double) rate
{
interestRate = rate;
}
@end
Code using the BankAccount class
BankAccount *acct1 = [BankAccount alloc];
BankAccount *acct2 = [BankAccount alloc];
[acct1 deposit:1000];
[acct2 deposit:2000];
[acct1 applyInterest];
[acct2 applyInterest];
[BankAccount setInterestRate:0.08];
NSLog(@"%6.2f %6.2f", acct1.balance, acct2.balance);
[acct1 applyInterest];
[acct2 applyInterest];
NSLog(@"%6.2f %6.2f", acct1.balance, acct2.balance);
BankAccount *acct3 = [BankAccount accountWithBalance:100];
NSLog(@"acct3: %6.2f", acct3.balance);