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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 bdw9005 于 2015-9-11 22:03 编辑

设计一个狗类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2>行为
* :每吃一次,体重增加0.5kg,输出吃完后的体重
* ():输出所有的属性
* :每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
做减法得到非零值,返回YES(1)

* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
结合前面的,设计一个
1> 属性
* 姓名
* (养了一条狗)
2> 行为
* 喂狗:每喂一次,狗就会执行这个行为
* 遛狗:每溜一次,狗就会执行这个行为
  1. #import <Foundation/Foundation.h>
  2. typedef enum Sex{kMan,kWoman} sex;
  3. #pragma mark 狗 类
  4. //写一个狗的类
  5. // 类名:Dog
  6. // 实例变量 _color _speed _sex _weight
  7. // 行为: eat jiao run compareColor compareSpeed
  8. @interface Dog:NSObject
  9. {
  10. @public
  11.     //数据类型 _实例变量名
  12.     NSString * _color;
  13.     int _speed;
  14.     //NSString * _sex;
  15.     sex _sex;
  16.     float _weight;
  17. }
  18. //方法声明(无参 有参)
  19. -(float)eat;
  20. -(void)jiao;
  21. -(float)run;
  22. -(BOOL)compareColor:(NSString*)otherColor;
  23. -(int)compareSpeed:(int )otherSpeed;
  24. @end
  25. @implementation Dog
  26. //方法名
  27. -(float)eat{
  28.     _weight+=0.5f;
  29.     NSLog(@"wo吃东西了,我的体重增加到%.2f",_weight);
  30.     return _weight;
  31. }
  32. -(void)jiao{
  33.     NSLog(@"我的颜色是%@,速度是%d,性别是%d,体重%.2f",_color,_speed,_sex,_weight);
  34. }
  35. -(float)run{
  36.     _weight-=0.5f;
  37.     NSLog(@"wo跑步了,我的体重减少到%.2f",_weight);
  38.     return _weight;
  39. }
  40. -(BOOL)compareColor:(NSString *)otherColor{
  41.     if(_color == otherColor){
  42.         NSLog(@"haha,它和我的颜色相同");
  43.         return 0;
  44.     }else{
  45.         NSLog(@"很可惜,它和我的颜色不相同");
  46.         return 1;
  47.     }
  48. }
  49. -(int)compareSpeed:(int )otherSpeed{
  50.    
  51.     return _speed-otherSpeed;
  52. }
  53. @end
  54. #pragma mark -
  55. #pragma mark 人 类
  56. @interface Person:NSObject
  57. {
  58. @public
  59.     NSString *_name;
  60.     Dog * _dog;
  61. }
  62. -(void)giveFoodToDog:(Dog *)dog;
  63. -(void)runWithDog:(Dog *)dog;;

  64. @end
  65. @implementation Person

  66. -(void)giveFoodToDog:(Dog *)dog{
  67.     [dog eat];
  68. }
  69. -(void)runWithDog:(Dog *)dog{
  70.     [dog run];
  71. }
  72. @end
  73. int main(){
  74.     @autoreleasepool {
  75.         Dog *dog=[Dog new];
  76.         dog->_speed=20;
  77.         dog->_weight=30;
  78.         dog->_color=@"green";
  79.         dog->_sex=kWoman;
  80.         [dog jiao];
  81.         bool cp=[dog compareColor:@"black"];
  82.         NSLog(@"我的yanse:%@,比较结果wei:%d",dog->_color,cp);
  83.         int cS=[dog compareSpeed:10];
  84.         NSLog(@"速度差=%d",cS);
  85.         Person * person=[Person new];
  86.         person->_name=@"234";
复制代码

5 个回复

倒序浏览
哦哦,已收藏
回复 使用道具 举报
本帖最后由 coding_wang 于 2015-9-11 01:14 编辑

大概看了一下,我也是菜鸟,说的不一定对,说错了别介意。

我觉得不要把所有的变量都@public 重新写一下构造函数,新建对象的时候一次性搞定 清晰明了

还有 跟别的狗对比的时候 应该传递狗的对象作为参数,利用狗的getter函数获取另一只狗的颜色 然后做对比输出  这样对比的函数就直接设置为void类型就ok了
速度的对比也是这个样子。

回复 使用道具 举报
  1. person->_dog=dog;//........对狗进行初始化!!!!!!没有的话默认为null
  2.         [person giveFoodToDog:dog];//调用给狗狗吃东西的方法
  3.         [person runWithDog:dog];//调用遛狗的方法
  4.     }
  5.     return 0;
  6. }
复制代码
回复 使用道具 举报

互相交流
回复 使用道具 举报
coding_wang 发表于 2015-9-11 01:09
大概看了一下,我也是菜鸟,说的不一定对,说错了别介意。

我觉得不要把所有的变量都@public 重新写一下构 ...

很感谢这么中肯的建议,对oc还不大熟悉,希望以后能多多指教
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马