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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0826iOS_sunzhen 中级黑马   /  2015-9-9 21:16  /  1077 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个人可以吃不同的食物,只要吃东西就会增加体重0.6,如果 要是出门遛弯,每走100,体重减0.2,小于100步忽略不计。 请用面向对象思想实现。
思路;
类名:Person
属性:年龄(_age)、体重(_weight)
动作:吃饭(eat)方法、散步(walk)方法
  1. #import <Foundation/Foundation.h>

  2. /**
  3. *  Person类,年龄_age,体重_weight;
  4. */
  5. @interface Person : NSObject
  6. {
  7.     @public
  8.     int _age;
  9.     float _weight;
  10. }

  11. -(void)eat;
  12. -(void)walk:(int)step;

  13. @end

  14. @implementation Person

  15. -(void)eat{
  16.     _weight+=0.6;
  17. }

  18. -(void)walk:(int)step{
  19.     _weight = _weight-(step/100)*0.2;
  20.    
  21. }

  22. @end

  23. int main(int argc, const char * argv[]) {
  24.     @autoreleasepool {
  25.         Person *per=[Person new];
  26.         per->_age = 23;
  27.         per->_weight=60;
  28.         
  29.         //调用方法
  30.         [per eat];
  31.         [per walk:500];
  32.         
  33.         NSLog(@"age = %d",per->_age);
  34.         NSLog(@"weight = %0.2f",per->_weight);
  35.         
  36.     }
  37.     return 0;
  38. }
复制代码
刚刚完成第7题!


评分

参与人数 2黑马币 +8 收起 理由
13817049701 + 4 赞一个!
TTsu + 4 这个代码太强了,思维和逻辑如此之慎密只该.

查看全部评分

12 个回复

正序浏览
同舟ing 发表于 2015-9-10 20:28
振哥,你不要太牛b哦!!我刚开始看了你写的瞬间思路大开啊!谢大神!

黑马币那么少,再不好好学习,怎么对得起我自己
回复 使用道具 举报
振哥,你不要太牛b哦!!我刚开始看了你写的瞬间思路大开啊!谢大神!
回复 使用道具 举报
我今天也刚刚写了这个
回复 使用道具 举报
回复 使用道具 举报
oxzjsku 发表于 2015-9-10 18:15
Dog *_dog;  这个之后再怎么弄  main函数里面怎么赋值额 还是不用赋值了?
  1. //
  2. //  main.m
  3. //  第二题
  4. //2.设计一个”狗“类
  5. //1> 属性
  6. //* 颜色
  7. //* 速度(单位是m/s)
  8. //* 性别
  9. //* 体重(单位是kg)
  10. //2>行为
  11. //* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
  12. //* 吠(叫):输出所有的属性
  13. //* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
  14. //* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
  15. //做减法得到非零值,返回YES(1)
  16. //* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
  17. //  Created by mac on 15/9/10.
  18. //  Copyright (c) 2015年 zhy. All rights reserved.
  19. //
  20. #import <Foundation/Foundation.h>
  21. #pragma mark 枚举狗的颜色
  22. typedef enum Color {kWhite,kBlack,kYellow}dogColor;

  23. #pragma mark "狗"类的声明
  24. //1> 属性
  25. @interface Dog : NSObject
  26. {
  27. @public
  28.     dogColor   _color;
  29.     float      _speed;
  30.     NSString * _sex;
  31.     float      _weight;
  32. }
  33. //2> 行为
  34. -(void)eat:(int)_time;
  35. -(void)bark;
  36. -(void)run:(int)_time2;
  37. -(int)compare:(dogColor)_color2;
  38. -(int)compare2:(float)_speed2;
  39. @end

  40. #pragma mark "狗"类的实现
  41. @implementation Dog
  42. //3> 实现
  43. -(void)eat:(int)_time
  44. {
  45.     _weight += (0.5)*_time;
  46.     NSLog(@"吃完后的体重:%.2f",_weight);
  47.    
  48. }
  49. -(void)bark
  50. {
  51.     NSLog(@"颜色:%d,速度:%.2fm/s,性别:%@,体重:%.2fkg",_color,_speed,_sex,_weight);
  52. }
  53. -(void)run:(int)_time2
  54. {
  55.     _weight -= (0.5)*_time2;
  56.    
  57.     NSLog(@"跑完后的体重:%.2fkg",_weight);
  58. }
  59. -(int)compare:(dogColor)_color2
  60. {
  61.     if (0 == (_color) - (_color2)) {
  62.         BOOL flag = NO;
  63.         NSLog(@"结果为%d,则跟别的狗颜色一样",flag);
  64.     }else{
  65.         BOOL flag = YES;
  66.         NSLog(@"结果为%d,则跟别的狗颜色不一样",flag);
  67.     }
  68.     return 0;
  69. }
  70. -(int)compare2:(float)_speed2
  71. {
  72.     float chaZhi = _speed - _speed2;
  73.    
  74.     NSLog(@"跟别的狗的速度差为:%.2f",chaZhi);
  75.    
  76.     return 0;
  77. }
  78. @end

  79. #pragma mark -
  80. #pragma mark 添加人类
  81. @interface Person : NSObject
  82. {
  83. @public
  84.     NSString *_personName;
  85.     Dog *_dog;
  86. }

  87. -(void)giveFood:(int)_time;
  88. -(void)walkDog:(int)length;

  89. @end

  90. @implementation Person
  91. /**
  92. *  喂食
  93. */
  94. -(void)giveFood:(int)_time{
  95.     [_dog eat:_time];
  96. }
  97. /**
  98. *  遛狗
  99. *
  100. *  @param length 多少米
  101. */
  102. -(void)walkDog:(int)length{
  103.     [_dog run:length];
  104. }

  105. @end

  106. #pragma mark _
  107. int main(int argc, const char * argv[]){
  108.     @autoreleasepool {
  109.         Dog *dog =[Dog new];
  110.         
  111.         dog ->_color = kBlack;
  112.         
  113.         dog ->_sex   = @"公的";
  114.         
  115.         dog ->_speed = 6.02;
  116.         
  117.         dog ->_weight= 40;
  118.         
  119.         [dog eat:2];
  120.         
  121.         [dog bark];
  122.         
  123.         [dog run:2];
  124.         
  125.         [dog compare:kWhite];
  126.         
  127.         [dog compare2:5.01];
  128.         
  129.         
  130.         //这边是人类出现之后,将dog传入
  131.         Person *per=[Person new];
  132.         per->_personName=@"张三";
  133.         per->_dog=dog;
  134.         [per walkDog:2];
  135.         [dog bark];
  136.     }
  137.    
  138.     return 0;
  139. }
复制代码
回复 使用道具 举报

  Dog *_dog;  这个之后再怎么弄  main函数里面怎么赋值额 还是不用赋值了?
回复 使用道具 举报
TTsu 中级黑马 2015-9-10 18:07:53
7#
这个代码太强了,思维和逻辑如此之慎密只该天上有,人间哪的几回闻啊
回复 使用道具 举报
oxzjsku 发表于 2015-9-10 18:01
请教下那个先声明"人"类的里面 再用"狗"做属性的 怎么弄, 我没读懂是什么意思. 就差这一题了 在线等.急=.=~ ...
  1. @interface Person : NSObject
  2. {
  3.     @public
  4.     NSString *_personName;
  5.     Dog *_dog;
  6. }

  7. -(void)giveFood;
  8. -(void)walkDog:(int)length;

  9. @end

  10. @implementation Person
  11. /**
  12. *  喂食
  13. */
  14. -(void)giveFood{
  15.     [_dog eat:1];
  16. }
  17. /**
  18. *  遛狗
  19. *
  20. *  @param length 多少米
  21. */
  22. -(void)walkDog:(int)length{
  23.     [_dog run:length];
  24. }

  25. @end
复制代码
回复 使用道具 举报
请教下那个先声明"人"类的里面 再用"狗"做属性的 怎么弄, 我没读懂是什么意思. 就差这一题了 在线等.急=.=~
回复 使用道具 举报
哦,是啊。lz威武
回复 使用道具 举报
a124113798 发表于 2015-9-9 21:31
需求没有看全啊,小于100步忽略不计的功能没实现。。。。

_weight = _weight-(step/100)*0.2;当输入的步数小于100步,(step/100)*0.2=0 已经实现了
回复 使用道具 举报
需求没有看全啊,小于100步忽略不计的功能没实现。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马