My BNRStockHolding Challenge solution


#1

I used the values for purchasePrice, currentPrice, and numberOfShares that are given in the book. Here’s my code:

BNRStockHolding.h

#import <Foundation/Foundation.h>

@interface BNRStockHolding : NSObject

{
    //These are the instance variables
    float _purchaseSharePrice;
    float _currentSharePrice;
    int _numberOfShares;
}

// BNRPerson has methods to read and set its instance variables
- (float)purchaseSharePrice;
- (void)setPurchaseSharePrice:(float)p;
- (float)currentSharePrice;
- (void)setCurrentSharePrice:(float)c;
- (int)numberOfShares;
- (void)setNumberOfShares:(int)n;

// These are instance methods
- (float)costInDollars;   // purchaseSharePrice * numberOfShares
- (float)valueInDollars;  // currentSharePrice * numberOfShares

@end

BNRStockHolding.m

#import "BNRStockHolding.h"

@implementation BNRStockHolding

- (float)purchaseSharePrice
{
    return _purchaseSharePrice;
}

- (void)setPurchaseSharePrice:(float)p
{
    _purchaseSharePrice = p;
}

- (float)currentSharePrice
{
    return _currentSharePrice;
}

- (void)setCurrentSharePrice:(float)c
{
    _currentSharePrice = c;
}

- (int)numberOfShares
{
    return _numberOfShares;
}

- (void)setNumberOfShares:(int)n
{
    _numberOfShares = n;
}

- (float)costInDollars
{
    float p = [self purchaseSharePrice];
    return [self numberOfShares] * p;
}

- (float)valueInDollars
{
    float c = [self currentSharePrice];
    return [self numberOfShares] * c;
}

@end

main.m

#import <Foundation/Foundation.h>
#import "BNRStockHolding.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        BNRStockHolding *stock0 = [[BNRStockHolding alloc] init];
        BNRStockHolding *stock1 = [[BNRStockHolding alloc] init];
        BNRStockHolding *stock2 = [[BNRStockHolding alloc] init];
        
        [stock0 setPurchaseSharePrice:2.30];
        [stock0 setCurrentSharePrice:4.50];
        [stock0 setNumberOfShares:40];
        
        [stock1 setPurchaseSharePrice:12.19];
        [stock1 setCurrentSharePrice:10.56];
        [stock1 setNumberOfShares:90];
        
        [stock2 setPurchaseSharePrice:45.10];
        [stock2 setCurrentSharePrice:49.51];
        [stock2 setNumberOfShares:210];
        
        NSMutableArray *listOfStocks = [NSMutableArray array];
        
        [listOfStocks addObject:stock0];
        [listOfStocks addObject:stock1];
        [listOfStocks addObject:stock2];
        
        int stockNumber = 1;
        
        for (BNRStockHolding *s in listOfStocks) {
            float finalValue = [s valueInDollars] - [s costInDollars];
            NSLog(@"Your stake in stock #%d is currently worth %f", stockNumber, finalValue);
            stockNumber++;
        }
        
    }
    return 0;
}

Output:
Your stake in stock #1 is currently worth 88.000000
Your stake in stock #2 is currently worth -146.699951
Your stake in stock #3 is currently worth 926.099609


#2

it’s good~