欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

IOS开发之电子菜单的设计与实现(继承、封装、多态)

来源: 开发者 投稿于  被查看 9277 次 评论:231

IOS开发之电子菜单的设计与实现(继承、封装、多态)


//
//  main.m
//  电子菜单
//

#import 
#import Food.h
#import CoolFood.h
#import HotFood.h
#import MainFood.h
#import Drinks.h
#import BillBoard.h

int 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



 

用户评论