本帖最后由 liii 于 2015-6-12 21:48 编辑
9,思考&实现:
2.结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)
2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为
- // 定义狗的性别类型
- typedef enum { kSexMale, kSexFemale } Sex;
- // 定义狗的颜色
- typedef enum { kColorWhite, kColorBlack, kColorOther} Color;
- #pragma mark 狗类的声明
- @interface Dog : NSObject
- {
- // 属性的声明
- @public
- NSString *_name; // 品种
- Color _color; // 颜色
- int _speed; // 速度
- Sex _sex; // 性别
- double _weight; // 体重
- }
- // 方法的声明
- - (NSString *)sex;
- - (NSString *)color;
- - (void)initWithDogName:(NSString *)name andColor:(Color)color andSpeed:(int)speed andSex:(Sex)sex andWeight:(double)weight; // 初始化方法
- - (void)printWithDogProperty; // 打印狗属性
- - (void)eat:(NSString *)food; // 吃方法声明 体重 +0.5
- - (void)run; // 跑方法声明 体重 -0.5
- @end
- #pragma mark Dog 类实现
- @implementation Dog
- - (void)initWithDogName:(NSString *)name andColor:(Color)color andSpeed:(int)speed andSex:(Sex)sex andWeight:(double)weight
- {
- _name = name;
- _color = color;
- _speed = speed;
- _sex = sex;
- _weight = weight;
- }
- - (NSString *)sex
- {
- switch (_sex){
- case kSexMale:
- return @"male";
- break;
- case kSexFemale:
- return @"female";
- break;
- default:
- break;
- }
- }
- - (NSString *)color
- {
- switch (_color) {
- case kColorWhite:
- return @"white";;
- break;
- case kColorBlack:
- return @"black";
- break;
- case kColorOther:
- return @"other";
- break;
- default:
- break;
- }
- }
- - (void)printWithDogProperty
- {
- NSLog(@"%@ 的颜色为: %@ 速度%d m/s 性别为: %@ 体重为: %.1f斤", _name, self.color, _speed, self.sex, _weight);
- }
- - (void)eat:(NSString *)food // 吃方法的实现
- {
- _weight += 0.5;
- NSLog(@"%@吃完 \"%@\" 的体重为:%.1f", _name, food, _weight);
- }
- - (void)run // 跑方法实现
- {
- _weight -= 0.2;
- NSLog(@"%@跑完的体重为:%.1f", _name, _weight);
- }
- @end
- #pragma mark Person类的声明
- @interface Person : NSObject
- {
- NSString *_name;
- Dog *_dog; // 把对象做为成员变量
- }
- - (void)feedDog:(Dog *)dog withFood:(NSString *)food; // 声明喂狗方法
- - (void)liuDog:(Dog *)dog; // 声明遛狗方法
- @end
- #pragma mark Person 类的实现
- @implementation Person
- - (void)feedDog:(Dog *)dog withFood:(NSString *)food // 实现喂狗食物的方法
- {
- [dog eat:food];
- }
- - (void)liuDog:(Dog *)dog // 实现遛狗方法
- {
- [dog run];
- }
- @end
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // 创建 Dog 对象
- Dog *husky = [Dog new];
-
- // 初始化对象
- [husky initWithDogName:@"husky" andColor:kColorBlack andSpeed:30 andSex:kSexFemale andWeight:35];
-
- // 输出属性
- [husky printWithDogProperty];
-
- // 创建 Person 对象
- Person *jack = [[Person alloc] init];
-
- // 喂狗 +0.5
- [jack feedDog:husky withFood:@"面条"];
-
- // 遛狗 -0.2
- [jack liuDog:husky];
-
- }
- return 0;
- }
复制代码
|