A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对象作为方法的连续传递,昨晚不怎么理解,然后在朋友的帮助和仔细看老师视频,仔细研究了一下,然后自己也写出了一下代码,虽然花费的时候比较久,但是现在至少是理解了。正在学习的朋友们可以看看,或者大神们看看是不是还有什么我可以改进的。
  1. /*
  2. 枪类:
  3. 名称:Gun
  4. 属性:型号(_size),子弹个数(_bulletCount)
  5. 行为:射击

  6. 人类:
  7. 名称:soldier
  8. 属性:姓名(_name), life level(等级)
  9. 行为:跑,蹲,开枪,跳

  10. 子弹类:
  11. 名称: Bullet
  12. 属性:子弹个数,型号(_model)

  13. //要求士兵在射击的时候不但要给枪, 还要 给一个弹夹  才能射击
  14. //子弹不能为负数

  15. */

  16. #import <Foundation/Foundation.h>

  17. #pragma mark Bullet类的声明
  18. @interface Bullet : NSObject
  19. {
  20.     //实例变量
  21. @public
  22.     //型号
  23.     NSString *_model;
  24.     //子弹数
  25.     int _bulletCount;
  26. }
  27. @end
  28. #pragma mark Bullet类的实现
  29. @implementation Bullet
  30. @end

  31. #pragma mark Gun类的声明
  32. @interface Gun : NSObject
  33. {
  34.     //定义实例变量
  35. @public
  36.     NSString *_size;
  37.     int _bulletCount;
  38. }
  39. //行为
  40. -(void)shoot:(Bullet *)bullet;
  41. @end

  42. #pragma mark Gun类的实现
  43. @implementation Gun
  44. -(void)shoot:(Bullet *)bullet
  45. {
  46.     //判断子弹数>0
  47.     //子弹对象中的子弹个数
  48.     if (bullet->_bulletCount >0) {
  49.         //子弹数 -1
  50.         bullet->_bulletCount --;
  51.         NSLog(@"枪正在射击,还有%d发子弹",bullet->_bulletCount);
  52.     }else{
  53.         //如果子弹 < 0 ,则提示没有子弹,请添加子弹
  54.         NSLog(@"没有子弹了,请添加子弹");
  55.     }
  56. }
  57. @end


  58. #pragma mark Soldier类的声明
  59. @interface Sodier : NSObject
  60. {
  61.     //定义实例变量
  62.     @public
  63.     //姓名(_name)
  64.     NSString *_name;
  65.     //life
  66.     int _life;
  67.     //level(等级)
  68.     int _level;
  69. }
  70. //枪的行为
  71. -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
  72. @end

  73. #pragma mark Soldier类的实现
  74. @implementation Sodier
  75. -(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet
  76. {
  77.     //让枪装上子弹后射击
  78.     //子弹作为参数传递给射击的方法
  79.     [gun shoot:bullet];
  80. }
  81. @end




  82. int main(int argc, const char * argv[]) {
  83.     @autoreleasepool {
  84.         
  85.         //创建一个士兵对象
  86.         Sodier *s = [Sodier new];
  87.         s->_name = @"三多";
  88.         s->_life = 100;
  89.         s->_level =8;
  90.         
  91.         
  92.         //创建枪的对象
  93.         Gun *gun = [Gun new];
  94.         gun->_size = @"小米加步枪";
  95.         gun->_bulletCount = 3;
  96.         
  97.         //创建子弹类的对象
  98.         Bullet *myBullet = [Bullet new];
  99.         myBullet->_model = @"5mm口径";
  100.         myBullet->_bulletCount = 3;
  101.         
  102.         [s fireByGun:gun andBullet:myBullet];
  103.         [s fireByGun:gun andBullet:myBullet];
  104.         [s fireByGun:gun andBullet:myBullet];
  105.         [s fireByGun:gun andBullet:myBullet];
  106.         
  107.         
  108.     }
  109.     return 0;
  110. }
复制代码


14 个回复

正序浏览
昨天写的,现在竟然忘了。。楼主总结的真细,致敬。
回复 使用道具 举报
安若曦 发表于 2015-9-13 21:11
自己在家瞎学了一个月,现在准备申请入学考试,所以才来论坛转

很棒啊,在家里我都不大学的进去,向你学习
回复 使用道具 举报
荣荣 发表于 2015-9-13 06:11
楼主是个很用心的人,加油!

谢谢鼓励!
回复 使用道具 举报

谢谢,我会加油的,一定要进黑马学习
回复 使用道具 举报
bdw9005 发表于 2015-9-13 09:58
妹子看似不是很眼熟,不过怎么学习的进度差不多呢

自己在家瞎学了一个月,现在准备申请入学考试,所以才来论坛转
回复 使用道具 举报
0826iOS_sunzhen 发表于 2015-9-13 10:02
很不错,这个代码我今天有必要敲一下,依赖关系

经常敲敲,就更加熟悉了
回复 使用道具 举报
很不错,这个代码我今天有必要敲一下,依赖关系
回复 使用道具 举报
妹子看似不是很眼熟,不过怎么学习的进度差不多呢
回复 使用道具 举报
妹纸加油
回复 使用道具 举报
楼主是个很用心的人,加油!
回复 使用道具 举报

哈哈,互相学习吗,不客气的
回复 使用道具 举报
安若曦 发表于 2015-9-12 09:27
可以插入代码的,就是在选择字体这一栏有一对尖括号,点击就可以插入你想插入的代码 ...

NSLog(@"谢谢");
回复 使用道具 举报
毛强 发表于 2015-9-12 09:23
请问你的代码是怎么发布的,好规范呢,就像编辑器上写的一样,还可以点击复制呢? ...

可以插入代码的,就是在选择字体这一栏有一对尖括号,点击就可以插入你想插入的代码
回复 使用道具 举报
请问你的代码是怎么发布的,好规范呢,就像编辑器上写的一样,还可以点击复制呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马