本帖最后由 chunhuayun 于 2015-10-3 22:55 编辑
看了一天OC,根据视频上老师的要求,自己动手写了个小例子。欢迎大家指出不足的地方
【要求】
设计一个“狗”类
1)属性
颜色、速度(m)、性别,体重(kg)
2)行为
吃:每吃一次,体重增加0.5kg,输出处完后的体重
叫:输出所有属性
跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重
比较颜色:跟别的狗一样,两个值做减法得零,返回NO,不一样,做减法得到非零,返回YES
比较速度:跟别的狗比较速度,返回速度差
【代码实现如下】
- //
- // main.m
- // PersonAndDoa
- //
- // Created by amos on 10/3/15.
- // Copyright (c) 2015 augmentum. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #pragma mark 枚举变量定义部分
- //定义颜色
- typedef enum{Black,Red,White,Yellow,Silver}Color;
- //定义性别
- typedef enum{Female,Male} Sex;
- #pragma mark 狗类定义部分
- @interface Dog : NSObject{
- @public
- NSString *_name; //名字
- float _weight; //体重
- Color _color; //颜色
- Sex _sex; //性别
- float _speed; //速度
- }
- //吃东西 _weight+=0.5
- -(void)eat:(NSString*)food;
- //运动 _weight-=0.5
- -(void)run;
- //bark 叫-->打印狗的所有信息
- -(void)bark;
- //与其他狗比较颜色,相同返回YES,不同返回NO
- -(BOOL)compareColorWithOther:(Dog*)dog;
- //与其他狗比较速度,返回速度差
- -(float)compareSpeedWithOther:(Dog*)dog;
- @end
- #pragma mark 狗类实现部分
- @implementation Dog
- //狗吃东西_weight += 0.5
- -(void)eat:(NSString *)food{
- self->_weight += 0.5;
- NSLog(@"%@ eat %@,然后打了一个饱嗝,吃完体重为%.2f",self->_name, food, self->_weight);
- }
- //狗运动_weight -= 0.5
- -(void)run{
- self->_weight -= 0.5;
- NSLog(@"%@ 撒欢跑了起来,跑完后体重为:%.2f",self->_name,self->_weight);
- }
- //狗叫
- -(void)bark{
- NSLog(@"[name:%@ sex:%d weight:%.2f color:%d speed:%.2f]",_name,_sex,_weight,_color,_speed );
- }
- //与其他狗比较颜色,与其他狗颜色相同返回NO,否则返回YES
- -(BOOL)compareColorWithOther:(Dog *)dog{
- return _color-dog->_color != 0 ? YES : NO;
- }
- //与其他狗比较速度,返回速度差
- -(float)compareSpeedWithOther:(Dog *)dog{
- return _speed - dog->_speed;
- }
- @end
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- //定义第一只狗
- Dog *dog1 = [[Dog alloc] init];
- dog1->_name = @"Lisa";
- dog1->_weight = 20.4f;
- dog1->_sex = Female;
- dog1->_color = White;
- dog1->_speed = 10.9f;
- //定义第二只狗
-
- Dog *dog2 = [Dog new];
- dog2->_name = @"Blue";
- dog2->_weight = 40.6f;
- dog2->_sex = Male;
- dog2->_color = Black;
- dog2->_speed = 30.9f;
-
- //dog1执行动作
- [dog1 eat:@"Rich wiht Shit"];
- [dog1 run];
- [dog1 eat:@"Shit"];
- [dog1 bark];
-
- //两只狗比较颜色
- if (![dog1 compareColorWithOther:dog2]) {
- NSLog(@"%@ 与%@的颜色相同",dog1->_name, dog2->_name);
- }
- else{
- NSLog(@"%@ 与%@的颜色不相同",dog1->_name, dog2->_name);
- }
- //两只狗比较速度
- float temp = [dog1 compareSpeedWithOther:dog2];
- if([dog1 compareSpeedWithOther:dog2] >= 0){
- NSLog(@"%@ 的速度大于等于%@的速度",dog1->_name, dog2->_name);
- }
- else{
- NSLog(@"%@ 的速度小于%@的速度",dog1->_name, dog2->_name);
- }
-
- }
- return 0;
- }
复制代码 打印结果: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的速度
|
|