- //
- // main.m
- // practice
- //
- // Created by Sunshine_yang on 1/25/16.
- // Copyright (c) 2016 sunshine-429. All rights reserved.
- //
- /*
-
- 设计一个”狗“类
- 1> 属性
- * 颜色
- * 速度(单位是m/s)
- * 性别
- * 体重(单位是kg)
-
- 2> 行为
- * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
- * 吠(叫):输出所有的属性
- * 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
- * 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做减法得到非零值,返回YES(1)
- * 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
-
-
- */
- #import <Foundation/Foundation.h>
- // 狗的颜色
- typedef enum{Black, White, Bicolor}DogColor;
- // 狗的性别
- typedef enum{Man, Women} DOgSex;
- #pragma mark 狗的声明
- @interface Dog:NSObject
- {
- @public
- // 属性
- DogColor _color;
- DOgSex _sex;
- int _speed; // 速度(单位是m/s)
- float _weight; // 体重(单位是kg)
- }
- // 行为
- // 吃
- -(void)eat:(NSString *) foodName;
- // 叫
- -(void)bark;
- // 跑
- -(void)run;
- // 比较颜色
- -(BOOL)isCompareColor:(Dog *) dog;
- // 比较速度
- -(int)isCompareSpeed:(Dog *)dog;
- @end
- #pragma mark 狗的实现
- @implementation Dog
- // 吃
- -(void)eat:(NSString *) foodName{
- _weight += 0.5f;
- NSLog(@"吃完%@后的体重为%.1fkg", foodName, _weight);
- }
- // 叫
- -(void)bark{
- NSLog(@"狗的颜色是%d\t性别是%d\t速度是%dm/s\t体重是%.1fkg", _color, _sex, _speed, _weight);
- }
- // 跑
- -(void)run{
- _weight -= 0.5f;
- NSLog(@"当前速度为%dm/s\t跑完后的体重为%.1fkg", _speed, _weight);
- }
- // 比较颜色
- -(BOOL)isCompareColor:(Dog *) dog{
- if(_color == dog->_color)
- {
- return NO;
- }
- return YES;
- }
- // 比较速度
- -(int)isCompareSpeed:(Dog *)dog{
- return _speed - dog->_speed;
- }
- @end
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // 狗的创建
- Dog *d1 = [Dog new];
- d1->_sex = Women;
- d1->_color = Bicolor;
- d1->_speed = 30;
- d1->_weight = 20.2f;
-
- Dog *d2 = [Dog new];
- d2->_sex = Man;
- d2->_color = Bicolor;
- d2->_speed = 12;
- d2->_weight = 45.5f;
-
- // 方法的调用
-
- [d1 bark];
- [d1 eat:@"小粑粑"];
- [d1 run];
-
- [d2 bark];
- [d2 eat:@"小粑粑"];
- [d2 run];
-
-
- NSLog(@"%d", [d1 isCompareColor:d2]);
- NSLog(@"速度差为%d", [d1 isCompareSpeed:d2]);
-
- NSLog(@"%d", [d2 isCompareColor:d1]);
- NSLog(@"速度差为%d", [d2 isCompareSpeed:d1]);
- }
- return 0;
- }
复制代码 |
|