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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jx836202365 于 2015-9-10 20:51 编辑

这里人这个类里面的一个样了一条狗这句话想了半天才试出来,我把能试的方法试过了才最终从对象定义中看出怎么搞...dog这里居然和int一样可以定义其他对象...
  1. #import <Foundation/Foundation.h>
  2. //定义一个类,名字是dog,父类是NSObject
  3. @interface dog : NSObject

  4. {
  5.     //狗的属性声明,他有下面这些属性
  6.     //这里加上让dog类属性能够全文件访问
  7.     @public
  8.     //狗的毛色
  9.     NSString *_color;
  10.     //狗的速度
  11.     float _speed;
  12.     //狗的性别,枚举类型
  13.     enum sex{公,母}_isex;
  14.     //狗的体重
  15.     float _weight;
  16.    
  17. }
  18. //定义类的方法
  19. //狗能吃
  20. -(void)eat;
  21. //狗能叫
  22. -(void)shout;
  23. //狗能跑
  24. -(void)run;
  25. //比较毛色
  26. -(int)comCotherColor:(NSString*)color;
  27. //比较速度
  28. -(float)comSotherspeed:(float)Ospeed;

  29. //结束声明
  30. @end

  31. //方法实现
  32. @implementation dog
  33. //狗吃东西,体重加0.5KG,并且向控制台输出吃完后的体重
  34. -(void)eat{
  35.    
  36.     float *p= &_weight;
  37.    
  38.     *p+=0.5f;//间接访问变量_weight,改变它的值
  39.    
  40.     NSLog(@"体重达到%.2f",_weight);
  41.    
  42. }

  43. //狗叫得话,输出颜色,速度,性别,重量
  44. -(void)shout{
  45.    
  46.     NSLog(@"color=%@,speed=%.2f,sex=%d,weight=%.2f",_color,_speed,_isex,_weight);
  47.    
  48. }

  49. //狗跑得话,一次体重减轻0.5KG,没有参数,没有返回值
  50. -(void)run{
  51.    
  52.     float *p=&_weight;
  53.    
  54.     *p-=0.5f;
  55.    
  56.     NSLog(@"speed=%.2f,weight=%.2f",_speed,_weight);
  57.    
  58.    
  59. }

  60. //狗和其他狗比较颜色,参数是其他狗的颜色,相同就返回1,不同返回0;有参有返回值
  61. -(int)comCotherColor:(NSString*)color{
  62.    
  63.     if (_color==(NSString*)color) {
  64.         return 1;
  65.     }else{
  66.         return 0;
  67.     }
  68.    
  69. }

  70. //狗和其他狗比较速度,返回它们的差值,有参有返回值
  71. -(float)comSotherspeed:(float)Ospeed{
  72.    
  73.    
  74.     return _speed-Ospeed;
  75. }


  76. //结束方法
  77. @end
  78. /*

  79. 1.声明并且定义一个类叫人类,属性是姓名和拥有狗的名

  80. 2.声明并且定义方法.

  81. 3.方法是  人指挥狗做一些狗类的属性,狗就执行自己的一些属性,调用自己的方法

  82. 人的属性就是名字和拥有一条dog类型的狗



  83. */

  84. //声明一个类,名字叫做Person ,父类是NSObject
  85. @interface Person : NSObject

  86. {
  87.     //这里声明可以让全程序能够访问参数
  88.     @public
  89.     //人的属性有姓名,对象名是_name
  90.     NSString *_name;
  91.     //还有一个狗类型的狗,对象名是_dog
  92.    
  93.     dog *_dog;//花了好久想出来...灵感是狗对象的定义,dog能定义对象...
  94.    
  95.    
  96. }

  97. //-代表对象的方法,只能由对象调用,+代表类的方法,只能由类调用

  98. //人的方法是

  99. //第一,给食物,狗自己吃东西
  100. -(void)giveD;
  101. //遛狗,狗自己跑
  102. -(void)runD;


  103. @end
  104. //方法的实现
  105. @implementation Person



  106. //给食物方法的实现
  107. -(void)giveD{

  108.     //狗自己吃东西,调用对象方法
  109.    
  110.     [_dog eat];
  111.    
  112. }

  113. //遛狗的方法
  114. -(void)runD{
  115.    
  116.    
  117.     //狗自己走

  118.     [_dog run];
  119. }


  120. @end

  121. int main(){
  122.     //自动回收变量
  123.     @autoreleasepool {
  124.         
  125.         //定义一个狗类型的对象,对象名是dog1,并且使用new申请内存空间,初始化,最后返回空间的地址给对象,所以用指针接收.
  126.         dog *dog1=[dog new];
  127.         //dog1的重量,速度,性别,颜色,在此设定
  128.         dog1->_weight=78.5f;
  129.         
  130.         dog1->_speed=14.4f;
  131.         
  132.         dog1->_isex=公;
  133.         
  134.         dog1->_color=@"白色";
  135.         
  136.         //如果需要让狗跑,执行狗跑的方法,体重减轻
  137.         [dog1 run];
  138.         
  139.         //狗吃东西,执行狗吃东西的方法//体重增加,并且输出体重
  140.         [dog1 eat];
  141.         
  142.         //狗咆哮,执行咆哮的结果//输出狗的所有属性
  143.         [dog1 shout];
  144.         
  145.         //狗比较速度,知道另一只狗的速度是12.3,得到14.4-12.3
  146.         float s=[dog1 comSotherspeed:12.3f];
  147.         //并且打印
  148.         NSLog(@"%.2f",s);
  149.         
  150.         
  151.         //定义一个person类型的对象,名字是liming
  152.         Person *liming=[Person new];
  153.         //对人名初始化为黑色
  154.         liming->_name=@"heise";
  155.         //让他拥有的狗设定为前面定义的dog1
  156.         liming->_dog=dog1;
  157.         
  158.         //他给狗吃东西,狗会执行[dog1 eat]
  159.         [liming giveD];
  160.         
  161.         [liming giveD];
  162.         
  163.         [liming runD];
  164.         
  165.     }
  166.    
  167.    
  168.     return 0;
  169. }





复制代码

设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)

2>行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)


9,思考&实现:
2.结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)

2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马