A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 562413895@qq.co 中级黑马   /  2015-7-21 10:46  /  741 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

说明:原来上传的那个版本,有很多错误,是因为原来没有运行就上传了
//  main.m
//  OC实现人遛狗的功能
//
//  Created by 申颖 on 15/7/21.
//  Copyright (c) 2015年 申颖. All rights reserved.
//
#import <Foundation/Foundation.h>
//定义狗的颜色的枚举类型,别名是Color
typedef enum{kColorWhite,kColorBlack,kColorYellow}Color;
// 定义狗的性别的枚举类型,别名是Sex
typedef enum{kSexGong,kSexMu,kSexYao}Sex;
#pragma mark Dog类的声明
//定义一个Dog类
@interface Dog : NSObject
{
    //狗类的实例变量
    @public
    Color _color;
    float _weight;
    Sex _sex;
    int _speed;
    NSString *_name;//字符串类型的指针
}
//方法的声明,即狗的行为
-(void)eat:(NSString *)foodName;//吃体重+0.5
-(void)run;//跑体重减-0.5
-(void)bark;//狗叫
-(BOOL)isCompareColor:(Dog *)dog;//比较狗毛的颜色
-(int)isCompareSpeed:(Dog *)dog;//比较狗的速度
@end

#pragma mark-
#pragma mark Person类的声明
@interface Person:NSObject
{
    //Person类的实例变量
    @public
    NSString *_name;//字符串类型的指针
    Dog *_dog;
}
//Person类的声明
-(void)feedDog:(NSString *)foodName;//人喂狗
-(void)liuDog;//遛狗
@end

#pragma mark Person类的实现
@implementation Person
-(void)feedDog:(NSString *)foodName{
    [_dog eat:foodName];//喂狗
}
-(void)liuDog{
    [_dog run];//让狗跑
}
@end

#pragma mark Dog类的实现
@implementation Dog
-(void)eat:(NSString *)foodName{
    NSLog(@"狗正在吃%@",foodName);
}
-(void)run{
    NSLog(@"狗正在以时速%d的速度奔跑",_speed);
}
-(void)bark{
    NSLog(@"性别:%d,颜色:%d,速度;%d,当前体重:%.2f",_sex,_color,_speed,_weight);
}
-(BOOL)isCompareColor:(Dog *)dog{
    //当前狗的颜色(_color)和另一条狗的颜色(dog->_color)
    if (_color==dog->_color)
        return YES;
    else
        return NO;
}
-(int)isCompareSpeed:(Dog *)dog{
    return _speed-dog->_speed;
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 创建第一条狗d1
        Dog *d1=[Dog new];
        d1->_sex=kSexGong;
        d1->_weight=20.0f;
        d1->_speed=80;
        d1->_color=kColorBlack;
        [d1 bark];//狗叫
        [d1 eat:@"一块骨头"];//狗吃骨头
        [d1 eat:@"一块肉"];//狗吃肉
        //创建第二条狗d2
        Dog *d2=[Dog new];
        d2->_sex=kSexYao;
        d2->_weight=21.0f;
        d2->_color=kColorYellow;
        d2->_speed=100;
        [d2 bark];//狗叫
        [d2 eat:@"一块面包"];//狗吃面包
        [d2 eat:@"一碗红烧排骨"];//狗吃红烧排骨
        //比较两条狗的颜色
        BOOL isSame=[d1 isCompareColor:d2];
        NSLog(@"两条狗的颜色=%d",isSame);
        int speed=[d1 isCompareSpeed:d2];
        NSLog(@"两狗的颜色=%d",speed);
        //创建一个Person的对象p
        Person *p=[Person new];
        //给p一个dog
        p->_dog=d1;
        NSLog(@"%@",p->_dog);
        //人要喂狗
        [p feedDog:@"好吃的肉骨头"];
    }
    return 0;
}

1 个回复

倒序浏览
:@ :( 学到第17天才懂这两个表情
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马