我ながら馬鹿ではないか、どうしてこんなプログラムにそれほど入れ込んでいるのか?
それでも大幅にブログラムが簡略化され、短くなっているのをどうしても記録しておきたいのです・・・
/////////////////////////// // Cyclist.h /////////////////////////// #import <Foundation/Foundation.h> @interface Cyclist : NSObject @property (copy) NSString* name; @property (assign) float power; -(id) init; -(id) initWithName:(NSString*)name:(float)power; -(NSString*) run:(float) slope; -(NSString*) description; @end /////////////////////////// // GrowingCyclist.h /////////////////////////// #import "Cyclist.h" @interface GrowingCyclist : Cyclist -(NSString*)run:(float) slope; @end /////////////////////////// // Utility.h /////////////////////////// #import <Foundation/Foundation.h> void MyPrint(NSString*); /////////////////////////// // Cyclist.m /////////////////////////// #import "Cyclist.h" @implementation Cyclist @synthesize name; @synthesize power; -(id) init{ if(self = [super init]){ } return self; } -(id) initWithName:(NSString *)_name:(float)_power{ if(self = [super init]){ name = _name; power = _power; } return self; } -(NSString*) run:(float)slope{ NSString* _temp; if(power >= slope) { _temp=[[NSString alloc]initWithFormat:@"%@ 登攀力 %.1fは、登れます!!", name, power]; } else { _temp=[[NSString alloc]initWithFormat:@"%@ 登攀力 %.1fは、登れません", name, power]; } return _temp; } -(NSString*) description{ NSString* _temp=[[NSString alloc] initWithFormat:@"[名前:%@] [登攀力:%.1f]", name, power]; return _temp; } @end /////////////////////////// // GrowingCyclist.m /////////////////////////// #import "GrowingCyclist.h" @implementation GrowingCyclist:Cyclist -(NSString*)run:(float)slope{ NSString* _temp = [super run:slope]; self.power += 0.5; return _temp; } @end /////////////////////////// // Utility.m /////////////////////////// #import "Utility.h" void MyPrint(NSString* str){ printf("%s\n", [str UTF8String]); return; } /////////////////////////// // main.m /////////////////////////// #import <Foundation/Foundation.h> #import "Cyclist.h" #import "GrowingCyclist.h" #import "Utility.h" int main(int argc, const char * argv[]) { @autoreleasepool { Cyclist* cyclist1=[[Cyclist alloc] initWithName:@"老成した齋藤":4.0]; GrowingCyclist* cyclist2=[[GrowingCyclist alloc] initWithName:@"成長する齋藤":4.0]; float slope = 3.0; int trial = 3; printf("****今度の坂道は%.1f度です これから%i回練習します****\n", slope, trial); MyPrint([cyclist1 description]); MyPrint([cyclist2 description]); for (int i=0; i<trial; i++){ printf("@試技%i回目\n", i+1); MyPrint([cyclist1 run:slope]); MyPrint([cyclist2 run:slope]); } MyPrint([cyclist1 description]); MyPrint([cyclist2 description]); slope = 7.0; trial = 5; printf("\n\n****今度の坂道は%.1f 度です これから%i回練習します****\n", slope, trial); MyPrint([cyclist1 description]); MyPrint([cyclist2 description]); for (int i=0; i<trial; i++){ printf("@試技%i回目\n", i+1); MyPrint([cyclist1 run:slope]); MyPrint([cyclist2 run:slope]); } } return 0; }
これで結果出力は以下の通り
****今度の坂道は3.0度です これから3回練習します**** [名前:老成した齋藤] [登攀力:4.0] [名前:成長する齋藤] [登攀力:4.0] @試技1回目 老成した齋藤 登攀力 4.0は、登れます!! 成長する齋藤 登攀力 4.0は、登れます!! @試技2回目 老成した齋藤 登攀力 4.0は、登れます!! 成長する齋藤 登攀力 4.5は、登れます!! @試技3回目 老成した齋藤 登攀力 4.0は、登れます!! 成長する齋藤 登攀力 5.0は、登れます!! [名前:老成した齋藤] [登攀力:4.0] [名前:成長する齋藤] [登攀力:5.5] ****今度の坂道は7.0 度です これから5回練習します**** [名前:老成した齋藤] [登攀力:4.0] [名前:成長する齋藤] [登攀力:5.5] @試技1回目 老成した齋藤 登攀力 4.0は、登れません 成長する齋藤 登攀力 5.5は、登れません @試技2回目 老成した齋藤 登攀力 4.0は、登れません 成長する齋藤 登攀力 6.0は、登れません @試技3回目 老成した齋藤 登攀力 4.0は、登れません 成長する齋藤 登攀力 6.5は、登れません @試技4回目 老成した齋藤 登攀力 4.0は、登れません 成長する齋藤 登攀力 7.0は、登れます!! @試技5回目 老成した齋藤 登攀力 4.0は、登れません 成長する齋藤 登攀力 7.5は、登れます!!