说明:原来上传的那个版本,有很多错误,是因为原来没有运行就上传了
// 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;
} |
|