您的位置:首页 > 移动开发 > Objective-C

OC-继承-初始化方法-便利构造器(练习题-打僵尸)

2015-07-08 17:35 381 查看
需求:1、定义普通僵尸类:  实例变量:僵尸总血量、僵尸每次失血量。  方法:初始化方法、便利构造器、被打击失血、死亡。2、定义路障僵尸类:  实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。  方法:初始化方法、便利构造器、被打击失血、失去装备、死亡。3、定义铁桶僵尸类:  实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。  方法:初始化方法、便利构造器、被打击失血、失去装备、死亡。4、在main.m中创建普通僵尸对象,设置总血量50,每次失血量为 3。5、在main.m中创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点。6、在main.m中创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点。 main.m
//
//  main.m
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GeneralZombie.h"/* 普通僵尸 */
#import "RoadblockZombie.h"/* 路障僵尸 */
#import "BucketheadZombie.h"/* 铁桶僵尸 */

int main(int argc, const char * argv[]) {
@autoreleasepool {
/* 创建普通僵尸对象,设置总血量50,每次失血量为 3 */
GeneralZombie *genral = [GeneralZombie generalWithTotalBloodValume:50 loseBloodValume:1];

/* 创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点 */
RoadblockZombie *road = [RoadblockZombie roadblockZombieWithTotalBloodValume:80 loseBloodValume:2 prop:@"路障" weakness:@"无"];

/* 创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点 */
BucketheadZombie *bucket = [BucketheadZombie roadblockZombieWithTotalBloodValume:120 loseBloodValume:1 prop:@"铁桶" weakness:@"无"];

}
return 0;
}
GeneralZombie.h
<pre name="code" class="objc">//
//  GeneralZombie.h
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface GeneralZombie : NSObject
{
/* 声明两个实例变量 */
NSInteger _totalBloodValume;//总血量
NSInteger _loseBloodValume;//失血量
}

/* 声明setter,getter方法 */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume;
- (NSInteger)totalBloodValume;

- (void)setLoseBloodValume:(NSInteger)loseBloodValume;
- (NSInteger)loseBloodValume;

/* 声明初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume;

/* 声明便利构造器方法 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume;

/* 声明被打击失血方法 */

- (void)loseBlood;

/* 声明死亡方法 */
- (void)die;

@end
GeneralZombie.m
<pre name="code" class="objc">//
//  GeneralZombie.m
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import "GeneralZombie.h"

@implementation GeneralZombie
/* 实例变量赋值setter 取值getter */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume
{
_totalBloodValume = totalBloodValume;
}
- (NSInteger)totalBloodValume
{
return _totalBloodValume;
}

- (void)setLoseBloodValume:(NSInteger)loseBloodValume
{
_loseBloodValume = loseBloodValume;
}
- (NSInteger)loseBloodValume
{
return _loseBloodValume;
}

/* 初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume
{
self = [super init];
if (self) {

_totalBloodValume = totalBloodValume;
_loseBloodValume = loseBloodValume;
}
return self;
}

/* 便利构造器 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
loseBloodValume:(NSInteger)loseBloodValume
{
GeneralZombie *genera = [[GeneralZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];
return genera;
}

/* 被打击失血 */
- (void)loseBlood
{
_totalBloodValume -= _loseBloodValume;
NSLog(@"剩余血量:%ld", _totalBloodValume);

}

/* 死亡 */
- (void)die
{
NSLog(@"Death");
}

@end
RoadblockZombie.h  继承于GeneralZombie类
<pre name="code" class="objc">////  RoadblockZombie.h//  打僵尸////  Created by dllo on 15/6/29.//  Copyright (c) 2015年 dllo. All rights reserved.//#import "GeneralZombie.h"@interface RoadblockZombie : GeneralZombie{NSString *_prop;//道具NSString *_weakness;//弱点}/* 声明setter,getter方法 */- (void)setProp:(NSString *)prop;- (NSString *)prop;- (void)setWeakness:(NSString *)weakness;- (NSString *)weakness;/* 声明初始化方法 */- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;/* 声明便利构造器方法 */+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;/* 声明失去装备方法 */- (void)loseprop;@end
RoadblockZombie.m
<pre name="code" class="objc">////  RoadblockZombie.m//  打僵尸////  Created by dllo on 15/6/29.//  Copyright (c) 2015年 dllo. All rights reserved.//#import "RoadblockZombie.h"@implementation RoadblockZombie/* 实例变量赋值setter 取值getter */- (void)setProp:(NSString *)prop{_prop = prop;}- (NSString *)prop{return _prop;}- (void)setWeakness:(NSString *)weakness{_weakness = weakness;}- (NSString *)weakness{return _weakness;}/* 初始化方法 */- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness{self = [super initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];if (self) {_prop = prop;_weakness = weakness;}return self;}/* 便利构造器 */+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness{RoadblockZombie *road = [[RoadblockZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume prop:prop weakness:weakness];return road;}/* 失去装备 */- (void)loseprop{NSLog(@"loseProp");}@end
BucketheadZombie.h  继承于RoadblockZombie类(只需要创建BucketheadZombie类,不需要写代码, 所有实例变量和代码全部继承父类)BucketheadZombie.m
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息