关闭

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

标签: objective-c继承打僵尸
273人阅读 评论(1) 收藏 举报
分类:

需求:

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



0
0
猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4569次
    • 积分:150
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    文章存档