IOS開發之電子功能表的設計與實現(繼承、封裝、多態)
//// main.m// 電子功能表//#import #import Food.h#import CoolFood.h#import HotFood.h#import MainFood.h#import Drinks.h#import BillBoard.hint main(int argc, const char * argv[]){ Food * food = [[Food alloc]init]; [food showInformation:@紅燒肉 andShowMaterial:@豬肉 蔥薑蒜andShowNurition:@鈣鐵鋅新維生素]; NSLog(@%@,food); @autoreleasepool { // insert code here... NSLog(@Hello, World!); } return 0;}
//// Menu.h// 電子功能表//#import #import Food.h#import CoolFood.h#import HotFood.h#import MainFood.h#import Drinks.h#import BillBoard.h@interface Menu : NSObject{ /**用來記錄點餐數量*/ int _recordOfFood; /**用來記錄點餐狀態*/ BOOL _statusOfFood; /**用來記錄食品價格*/ int _priceOfFood;}-(void)showInformation:(Food *)food;@end
//// Menu.m// 電子功能表//#import Menu.h@implementation Menu-(void)showInformation:(Food *)food{ if ([food isKindOfClass:[CoolFood class]]) { CoolFood * cool = (CoolFood *)food; [cool show]; } else if([food isKindOfClass:[HotFood class]]) { HotFood * hot = (HotFood *)food; [hot show]; } else if([food isKindOfClass:[MainFood class]]) { MainFood * mainFood = (MainFood *)food; [mainFood show]; } else { Drinks * drinks = (Drinks *)food; [drinks show]; }}@end
// Food.h// 電子功能表///* 可以使用繼承 電子功能表的實現 1.食品類 */#import @interface Food : NSObject{ /**用來記錄菜品名稱*/ NSString * _foodName; /**組成材料*/ NSString * _material; /**營養資訊*/ NSString * _nutrition; /**用來記錄食品種類*/ NSString * _kindOfFood;}@property NSString * foodName;@property NSString * material;@property NSString * nutrition;@property NSString * kindOfFood;-(void)showInformation:(NSString*)foodName andShowMaterial:(NSString *)material andShowNurition:(NSString *)nutrition;@end
//// Food.m// 電子功能表//#import Food.h@implementation Food@synthesize foodName = _foodName;@synthesize material = _material;@synthesize nutrition = _nutrition;@synthesize kindOfFood = _kindOfFood;-(void)showInformation:(NSString*)foodName andShowMaterial:(NSString *)material andShowNurition:(NSString *)nutrition;{ _foodName = foodName; _material = material; _nutrition = nutrition; NSLog(@%@ %@ %@,_foodName,_material,_nutrition);}-(NSString *)description{ return [NSString stringWithFormat:@食品名稱:%@食材:%@ 營養物質:%@,_foodName,_material,_nutrition];}@end
#import Food.h@interface CoolFood : Food-(void)show;@end
#import CoolFood.h@implementation CoolFood-(void)show{ NSLog(@您選擇的是涼菜);}@end
#import Food.h@interface HotFood : Food-(void)show;@end
#import HotFood.h@implementation HotFood-(void)show{ NSLog(@您選擇的是熱菜);}@end
#import Food.h@interface MainFood : Food-(void)show;@end
#import MainFood.h@implementation MainFood-(void)show{ NSLog(@您選擇的是熱菜);}@end
#import Food.h@interface Drinks : Food-(void)show;@end
#import Drinks.h@implementation Drinks-(void)show { NSLog(@您選擇的是酒水);}@end
#import @interface BillBoard : NSObject{ /**排名*/ int _rank; /**評論*/ NSString * _comment;}-(id)init;-(void)showRank:(int)rank;@end
#import BillBoard.h@implementation BillBoard-(id)init{ self = [super init]; if (self!=nil) { _rank = 0; } return self;}-(void)showRank:(int)rank{ _rank += rank; NSLog(@您的排名是%d,_rank);}@end