黑马程序员技术交流社区
标题: 关于人遛狗的代码实现,帮我看下有什么不足之处 [打印本页]
作者: bdw9005 时间: 2015-9-10 20:46
标题: 关于人遛狗的代码实现,帮我看下有什么不足之处
本帖最后由 bdw9005 于 2015-9-11 22:03 编辑
设计一个狗类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2>行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)
2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为- #import <Foundation/Foundation.h>
- typedef enum Sex{kMan,kWoman} sex;
- #pragma mark 狗 类
- //写一个狗的类
- // 类名:Dog
- // 实例变量 _color _speed _sex _weight
- // 行为: eat jiao run compareColor compareSpeed
- @interface Dog:NSObject
- {
- @public
- //数据类型 _实例变量名
- NSString * _color;
- int _speed;
- //NSString * _sex;
- sex _sex;
- float _weight;
- }
- //方法声明(无参 有参)
- -(float)eat;
- -(void)jiao;
- -(float)run;
- -(BOOL)compareColor:(NSString*)otherColor;
- -(int)compareSpeed:(int )otherSpeed;
- @end
- @implementation Dog
- //方法名
- -(float)eat{
- _weight+=0.5f;
- NSLog(@"wo吃东西了,我的体重增加到%.2f",_weight);
- return _weight;
- }
- -(void)jiao{
- NSLog(@"我的颜色是%@,速度是%d,性别是%d,体重%.2f",_color,_speed,_sex,_weight);
- }
- -(float)run{
- _weight-=0.5f;
- NSLog(@"wo跑步了,我的体重减少到%.2f",_weight);
- return _weight;
- }
- -(BOOL)compareColor:(NSString *)otherColor{
- if(_color == otherColor){
- NSLog(@"haha,它和我的颜色相同");
- return 0;
- }else{
- NSLog(@"很可惜,它和我的颜色不相同");
- return 1;
- }
- }
- -(int)compareSpeed:(int )otherSpeed{
-
- return _speed-otherSpeed;
- }
- @end
- #pragma mark -
- #pragma mark 人 类
- @interface Person:NSObject
- {
- @public
- NSString *_name;
- Dog * _dog;
- }
- -(void)giveFoodToDog:(Dog *)dog;
- -(void)runWithDog:(Dog *)dog;;
- @end
- @implementation Person
- -(void)giveFoodToDog:(Dog *)dog{
- [dog eat];
- }
- -(void)runWithDog:(Dog *)dog{
- [dog run];
- }
- @end
- int main(){
- @autoreleasepool {
- Dog *dog=[Dog new];
- dog->_speed=20;
- dog->_weight=30;
- dog->_color=@"green";
- dog->_sex=kWoman;
- [dog jiao];
- bool cp=[dog compareColor:@"black"];
- NSLog(@"我的yanse:%@,比较结果wei:%d",dog->_color,cp);
- int cS=[dog compareSpeed:10];
- NSLog(@"速度差=%d",cS);
- Person * person=[Person new];
- person->_name=@"234";
复制代码
作者: kylmetz 时间: 2015-9-10 21:38
哦哦,已收藏
作者: coding_wang 时间: 2015-9-11 01:09
本帖最后由 coding_wang 于 2015-9-11 01:14 编辑
大概看了一下,我也是菜鸟,说的不一定对,说错了别介意。
我觉得不要把所有的变量都@public 重新写一下构造函数,新建对象的时候一次性搞定 清晰明了
还有 跟别的狗对比的时候 应该传递狗的对象作为参数,利用狗的getter函数获取另一只狗的颜色 然后做对比输出 这样对比的函数就直接设置为void类型就ok了
速度的对比也是这个样子。
作者: bdw9005 时间: 2015-9-11 22:06
- person->_dog=dog;//........对狗进行初始化!!!!!!没有的话默认为null
- [person giveFoodToDog:dog];//调用给狗狗吃东西的方法
- [person runWithDog:dog];//调用遛狗的方法
- }
- return 0;
- }
复制代码
作者: bdw9005 时间: 2015-9-11 22:07
互相交流
作者: bdw9005 时间: 2015-9-11 22:09
很感谢这么中肯的建议,对oc还不大熟悉,希望以后能多多指教
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |