黑马程序员技术交流社区
标题: 明天要学oc了,好方啊!!! [打印本页]
作者: 赵安庆 时间: 2016-5-13 21:58
标题: 明天要学oc了,好方啊!!!
/*
设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2>行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
.结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)
2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为
*/
#import <Foundation/Foundation.h>
#pragma mark 狗类的定义
typedef enum{KColorwhite,kColorblack,kColoryellow} color;
typedef enum{gong,mu,yao} sex;
#pragma mark -
@interface Dog:NSObject
{//狗的实例变量
@public
color _color;
//狗的体重
double _weight;
//狗的性别
sex _sex;
//狗的速度
int _speed;
}
//狗的行为
//体重+0.5
-(void)eat:(NSString *)foodName;
//体重-0.5
-(void)run;
//打印所以信息
-(void)bark;
//比较颜色
-(BOOL)compareColor:(Dog *)dog;
//比较速度
-(int)compareSpeed:(Dog *)dog;
@end
#pragma mark -
#pragma mark 狗类的实现
@implementation Dog
//狗的行为
//体重+0.5
-(void)eat:(NSString *)foodName{
_weight+=0.5;
NSLog(@"够正在吃%@,体重为%.2f",foodName,_weight);
}
//体重-0.5
-(void)run{
_weight -=0.5;
NSLog(@"跑后体重为%.2f",_weight);
}
//打印所以信息
-(void)bark{
NSLog(@"颜色:%d,性别:%d,速度:%d,体重:%.2f",_color,_sex,_speed,_weight);
}
//比较颜色
-(BOOL)compareColor:(Dog *)dog{
//当前狗的 颜色 另一狗的颜色
if (_color == dog->_color) {
return YES;
}else{
return NO;
}
}
//比较速度
-(int )compareSpeed:(Dog *)dog{
//当前狗的速度-另一狗的 速度
return _speed-dog->_speed;
}
@end
#pragma mark -
#pragma mark 人定义
@interface Person:NSObject
{ @public
NSString *_name;
Dog *_dog;
}
//行为
//喂狗
-(void)feedDog:(NSString *)foodName;
//遛狗
-(void)liuDog;
@end
#pragma mark -
#pragma mark 人实现
@implementation Person
//喂狗
-(void)feedDog:(NSString *)foodName{
//让狗吃东西
[_dog eat:foodName];
}
//遛狗
-(void)liuDog{
//让狗跑起来
[_dog run];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *d1 = [Dog new];
d1->_speed = 20;
d1->_sex = mu;
d1->_color = kColorblack;
d1->_weight = 50;
//创建人的 对象
Person *p = [Person new];
//给人一条狗
p->_dog = d1;
NSLog(@"%@",p->_dog);
//人要喂狗
[p feedDog:@"吃屎的狗"];
NSLog(@"不忘初心,方得始终!");
}
return 0;
}
作者: 赵安庆 时间: 2016-5-13 21:59
666666666666666666666666
作者: 栗海云 时间: 2016-5-13 22:30
好厉害啊 直接看不懂啊
作者: 2528 时间: 2016-5-14 08:44
学到的时候,就可以看懂了。
作者: SuperJJ 时间: 2016-5-14 20:26
OC跟C区别好大的说
作者: wk1021311 时间: 2016-5-14 21:11
今天刚看一天的oc还可以,就是类和对象有点分不清。
作者: 617808794 时间: 2016-5-14 22:17
恭喜恭喜,哈哈 。我还有十来天呢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |