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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

重点是关于学生的狗的那块,有点不懂,怎么定义和实现的
  1. #import <Foundation/Foundation.h>

  2. typedef enum {
  3.     SexMan,
  4.     SexWoman
  5. } Sex;

  6. typedef struct {
  7.     int year;
  8.     int month;
  9.     int day;
  10. } Date;


  11. typedef enum {
  12.     ColorBlack,
  13.     ColorRed,
  14.     ColorGreen
  15. } Color;

  16. @interface Dog : NSObject
  17. {
  18.     @public
  19.     double weight; // 体重
  20.     Color curColor; // 毛色
  21. }

  22. - (void)eat;
  23. - (void)run;
  24. @end

  25. @implementation Dog
  26. - (void)eat
  27. {
  28.     // 每吃一次,体重就加1
  29.     weight += 1;
  30.     //weight = weight +  1;
  31.     NSLog(@"狗吃完这次后的体重是%f", weight);
  32. }

  33. - (void)run
  34. {
  35.     weight -= 1;
  36.     NSLog(@"狗跑完这次后的体重是%f", weight);
  37. }
  38. @end

  39. /*
  40. 学生
  41. 成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色,吃、跑)
  42. 方法:吃、跑步、遛狗(让狗跑)、喂狗(让狗吃)
  43. */
  44. @interface Student : NSObject
  45. {
  46.     @public
  47.     Sex sex; // 性别
  48.     Date birthday; // 生日
  49.     double weight; // 体重(kg)
  50.     Color favColor; // 最喜欢的颜色
  51.     char *name;
  52.    
  53.     // 重点:狗
  54.     Dog *dog;
  55. }
  56. - (void)eat;
  57. - (void)run;
  58. - (void)print;

  59. - (void)liuDog;
  60. - (void)weiDog;
  61. @end

  62. @implementation Student

  63. - (void)liuDog
  64. {
  65.     // 让狗跑起来(调用狗的run方法)
  66.     [dog run];
  67. }

  68. - (void)weiDog
  69. {
  70.     // 让狗吃东西(调用狗的eat方法)
  71.     [dog eat];
  72. }

  73. - (void)print
  74. {
  75.     NSLog(@"性别=%d, 喜欢的颜色=%d, 姓名=%s, 生日=%d-%d-%d", sex, favColor, name, birthday.year, birthday.month, birthday.day);
  76. }

  77. - (void)eat
  78. {
  79.     // 每吃一次,体重就加1
  80.     weight += 1;
  81.     //weight = weight +  1;
  82.     NSLog(@"学生吃完这次后的体重是%f", weight);
  83. }

  84. - (void)run
  85. {
  86.     weight -= 1;
  87.     NSLog(@"学生跑完这次后的体重是%f", weight);
  88. }
  89. @end

  90. int main()
  91. {
  92.     Student *s = [Student new];
  93.    
  94.     Dog *d = [Dog new];
  95.     d->curColor = ColorGreen;
  96.     d->weight = 20;
  97.     s->dog = d;
  98.    
  99.    
  100.     [s liuDog];
  101.    
  102.     [s weiDog];
  103.     return 0;
  104. }


  105. void test()
  106. {
  107.     Student *s = [Student new];
  108.     s->weight = 50;
  109.    
  110.     // 性别
  111.     s->sex = SexMan;
  112.    
  113.     // 生日
  114.     Date d = {2011, 9, 10};
  115.     s->birthday = d;
  116.    
  117.     s->name = "Jack";
  118.    
  119.     /*
  120.      s->birthday.year = 2011;
  121.      s->birthday.month = 9;
  122.      s->birthday.day = 10;
  123.      */
  124.    
  125.     // 喜欢的颜色
  126.     s->favColor = ColorBlack;
  127.     /*
  128.      [s eat];
  129.      [s eat];
  130.      
  131.      [s run];
  132.      [s run];
  133.      */
  134.    
  135.     [s print];
  136. }
复制代码

0 个回复

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