黑马程序员技术交流社区
标题:
把 枚举enum 或 布尔BOOL 值转换成字符串
[打印本页]
作者:
liii
时间:
2015-6-12 21:45
标题:
把 枚举enum 或 布尔BOOL 值转换成字符串
本帖最后由 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;
}
复制代码
作者:
杨宇俊
时间:
2015-6-12 21:54
给杰哥顶一个!
作者:
这是829
时间:
2015-6-12 22:44
围观学习啦,加油!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2