黑马程序员技术交流社区

标题: OC学习笔记之练习笔记· [打印本页]

作者: chunhuayun    时间: 2015-10-3 22:46
标题: OC学习笔记之练习笔记·
本帖最后由 chunhuayun 于 2015-10-3 22:55 编辑

看了一天OC,根据视频上老师的要求,自己动手写了个小例子。欢迎大家指出不足的地方
【要求】
设计一个“狗”类
1)属性
颜色、速度(m)、性别,体重(kg)
2)行为
吃:每吃一次,体重增加0.5kg,输出处完后的体重
叫:输出所有属性
跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重
比较颜色:跟别的狗一样,两个值做减法得零,返回NO,不一样,做减法得到非零,返回YES
比较速度:跟别的狗比较速度,返回速度差
【代码实现如下】
  1. //
  2. //  main.m
  3. //  PersonAndDoa
  4. //
  5. //  Created by amos on 10/3/15.
  6. //  Copyright (c) 2015 augmentum. All rights reserved.
  7. //

  8. #import <Foundation/Foundation.h>


  9. #pragma mark 枚举变量定义部分
  10. //定义颜色
  11. typedef enum{Black,Red,White,Yellow,Silver}Color;
  12. //定义性别
  13. typedef enum{Female,Male} Sex;

  14. #pragma mark 狗类定义部分
  15. @interface Dog : NSObject{
  16.     @public
  17.     NSString *_name; //名字
  18.     float _weight;  //体重
  19.     Color _color;   //颜色
  20.     Sex _sex;       //性别
  21.     float _speed;   //速度
  22. }
  23. //吃东西 _weight+=0.5
  24. -(void)eat:(NSString*)food;

  25. //运动 _weight-=0.5
  26. -(void)run;

  27. //bark 叫-->打印狗的所有信息
  28. -(void)bark;

  29. //与其他狗比较颜色,相同返回YES,不同返回NO
  30. -(BOOL)compareColorWithOther:(Dog*)dog;

  31. //与其他狗比较速度,返回速度差
  32. -(float)compareSpeedWithOther:(Dog*)dog;

  33. @end

  34. #pragma mark 狗类实现部分
  35. @implementation Dog

  36. //狗吃东西_weight += 0.5
  37. -(void)eat:(NSString *)food{
  38.     self->_weight += 0.5;
  39.     NSLog(@"%@ eat %@,然后打了一个饱嗝,吃完体重为%.2f",self->_name, food, self->_weight);
  40. }
  41. //狗运动_weight -= 0.5
  42. -(void)run{
  43.     self->_weight -= 0.5;
  44.     NSLog(@"%@ 撒欢跑了起来,跑完后体重为:%.2f",self->_name,self->_weight);
  45. }
  46. //狗叫
  47. -(void)bark{
  48.     NSLog(@"[name:%@ sex:%d weight:%.2f color:%d speed:%.2f]",_name,_sex,_weight,_color,_speed );
  49. }
  50. //与其他狗比较颜色,与其他狗颜色相同返回NO,否则返回YES
  51. -(BOOL)compareColorWithOther:(Dog *)dog{
  52.     return _color-dog->_color != 0 ? YES : NO;
  53. }
  54. //与其他狗比较速度,返回速度差
  55. -(float)compareSpeedWithOther:(Dog *)dog{
  56.     return _speed - dog->_speed;
  57. }
  58. @end

  59. int main(int argc, const char * argv[])
  60. {

  61.     @autoreleasepool {
  62.         //定义第一只狗
  63.         Dog *dog1 = [[Dog alloc] init];
  64.         dog1->_name = @"Lisa";
  65.         dog1->_weight = 20.4f;
  66.         dog1->_sex = Female;
  67.         dog1->_color = White;
  68.         dog1->_speed = 10.9f;
  69.         //定义第二只狗
  70.         
  71.         Dog *dog2 = [Dog new];
  72.         dog2->_name = @"Blue";
  73.         dog2->_weight = 40.6f;
  74.         dog2->_sex = Male;
  75.         dog2->_color = Black;
  76.         dog2->_speed = 30.9f;
  77.         
  78.         //dog1执行动作
  79.         [dog1 eat:@"Rich wiht Shit"];
  80.         [dog1 run];
  81.         [dog1 eat:@"Shit"];
  82.         [dog1 bark];
  83.         
  84.         //两只狗比较颜色
  85.         if (![dog1 compareColorWithOther:dog2]) {
  86.             NSLog(@"%@ 与%@的颜色相同",dog1->_name, dog2->_name);
  87.         }
  88.         else{
  89.             NSLog(@"%@ 与%@的颜色不相同",dog1->_name, dog2->_name);
  90.         }
  91.          //两只狗比较速度
  92.         float temp = [dog1 compareSpeedWithOther:dog2];
  93.         if([dog1 compareSpeedWithOther:dog2] >= 0){
  94.             NSLog(@"%@ 的速度大于等于%@的速度",dog1->_name, dog2->_name);
  95.         }
  96.         else{
  97.             NSLog(@"%@ 的速度小于%@的速度",dog1->_name, dog2->_name);
  98.         }
  99.         
  100.     }
  101.     return 0;
  102. }
复制代码
打印结果:2015-10-03 22:45:43.959 PersonAndDoa[2220:303] Lisa eat Rich wiht Shit,然后打了一个饱嗝,吃完体重为20.90
2015-10-03 22:45:43.961 PersonAndDoa[2220:303] Lisa 撒欢跑了起来,跑完后体重为:20.40
2015-10-03 22:45:43.962 PersonAndDoa[2220:303] Lisa eat Shit,然后打了一个饱嗝,吃完体重为20.90
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] [name:Lisa sex:0 weight:20.90 color:2 speed:10.90]
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] Lisa 与Blue的颜色不相同
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] Lisa 的速度小于Blue的速度2015-10-03 22:45:43.963 PersonAndDoa[2220:303] Lisa 的速度小于Blue的速度

作者: 大宝820    时间: 2015-10-3 23:35
写的不错,家加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2