黑马程序员技术交流社区
标题:
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
比较速度:跟别的狗比较速度,返回速度差
【代码实现如下】
//
// 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
的速度
作者:
大宝820
时间:
2015-10-3 23:35
写的不错,家加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2