Глава 19

Используя класс StockHolding из предыдущего упражнения, напишите про- грамму, которая создает экземпляр класса Portfolio (портфель акций) и за- полняет его объектами StockHolding из упражнения предыдущей главы. Объект Portfolio должен уметь вычислять свою текущую стоимость.

Решение:

Файл StockHolding.h

#import <Foundation/Foundation.h>

@interface StockHolding : NSObject

@property float purchaceSharePrice, currentSharePrice;
@property int numberOfShares;

- (float)costInDollars;
- (float)valueInDollars;
- (StockHolding *)parameters :(float)purchacedPrice :(float)currentPrice :(int)numberShares;

@end

Файл StockHolding.m

@implementation StockHolding

@synthesize purchaceSharePrice, currentSharePrice, numberOfShares;

- (float)costInDollars {
return [self purchaceSharePrice] * [self numberOfShares];
}

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

- (StockHolding *)parameters:(float)purchacedPrice :(float)currentPrice :(int)numberShares {

[self setPurchaceSharePrice:purchacedPrice];
[self setCurrentSharePrice:currentPrice];
[self setNumberOfShares:numberShares];

return self;
}

@end

Файл Portfolio.h

#import "StockHolding.h"

@interface Portfolio : StockHolding {
NSMutableArray *portfolio;
}

- (void)addPortfolioObject:(StockHolding *)sh;
- (float)portfolioValue;
@end

Файл Portfolio.m

#import "Portfolio.h"

@implementation Portfolio

- (void)addPortfolioObject:(Portfolio *)sh {
if (!portfolio) {
portfolio = [[NSMutableArray alloc] init];
}
[portfolio addObject:sh];
}

- (float)portfolioValue {
float sum = 0;
for (Portfolio *sh in portfolio) {
sum += [sh valueInDollars];
}
return sum;
}

@end

Файл main.m

#import <Foundation/Foundation.h>
#import "StockHolding.h"
#import "Portfolio.h"

int main(int argc, const char * argv[]) {
@autoreleasepool {

StockHolding *package1 = [[StockHolding alloc] init];
StockHolding *package2 = [[StockHolding alloc] init];
StockHolding *package3 = [[StockHolding alloc] init];

[package1 parameters:2.30 :4.50 :40];
[package2 parameters:12.19 :10.56 :90];
[package3 parameters:45.10 :49.51 :210];


Portfolio *myPortfolio = [[Portfolio alloc] init];

[myPortfolio addPortfolioObject:package1];
[myPortfolio addPortfolioObject:package2];
[myPortfolio addPortfolioObject:package3];
[myPortfolio portfolioValue];

NSLog(@"Общая стоимость пакета акций в портфеле состовляет: $%.2f", [myPortfolio portfolioValue]);

}
return 0;
}
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.