您的位置:首页 > 职场人生

黑马程序员_类的合理设计_基本的属性&对象类型的属性

2014-06-11 17:21 246 查看

黑马程序员_类的合理设计_基本的属性&对象类型的属性

一、类的合理设计之基本的属性

类的合理设计1_基本的属性

/*
学生
成员变量:性别、生日、体重、最喜欢的颜色、狗
方法: 吃、跑步、遛狗、喂狗
*/

#import <Foundation/Foundation.h>

typedef enum {
SexMan,
SexWoman
} Sex;

typedef struct {
int year;
int month;
int day;
} Date;

typedef enum {
ColorBlack;
ColorRed;
ColorGreen
} Color;

@interface Student : NSObject
{
@public
Sex sex;	// 性别
Date birthday;	// 生日
double weight;	// 体重(kg)
Color favColor;	// 最喜欢的颜色
char *name;
}

- (void)eat;
- (void)run;
- (void)print;

@end

@implementation Student

- (void)eat
{
weight += 1;	// 每吃一次,体重就加1

NSLog (@"吃完这次后的体重是%f", weight);
}

- (void)run
{
weight -= 1;	// 跑一次,体重减1

NSLog (@"跑完这次后的体重是%f", weight);
}

- (void)print
{
NSLog (@"性别= %d, 喜欢的颜色 = %d, 姓名 = %s, 生日 = %d-%d-%d",
sex, favcolor, name, birthday.year, birthday.month, birthday.day);
}

@end

int main()
{
Student *s = [Student new];
s->weight = 50;

// 性别
s->sex = SexMan;

// 生日
/*
// s->birthday = {2011, 9, 10};	// 在定义结构体变量的时候才可以初始化。
s->birthday.year = 2011;
s->birthday.month = 9;
s->birthday.day = 10;
*/
Date d = {2011, 9, 10};
s->birthday = d;

// 姓名
s->name = "Jack";

// 颜色
s->favColor = ColorBlack;

[s print];

return 0;
}


二、类的合理设计之对象类型的属性

类的合理设计2_对象类型的属性

/*
学生
成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色、吃、跑)
方法: 吃、跑步、遛狗(让狗跑)、喂狗(让狗吃)
*/

#import <Foundation/Foundation.h>

typedef enum {
SexMan,
SexWoman
} Sex;

typedef struct {
int year;
int month;
int day;
} Date;

typedef enum {
ColorBlack;
ColorRed;
ColorGreen
} Color;

@interface Dog : NSObject
{
@public
double weight; // 体重
Color curColor; // 毛色
}

- (void)eat;
- (void)run;

@end

@implementation Dog

- (void)eat
{
weight += 1; // 每吃一次,体重就加1

NSLog (@"狗吃完这次后的体重是%f", weight);
}

- (void)run
{
weight -= 1; // 跑一次,体重减1

NSLog (@"狗跑完这次后的体重是%f", weight);
}

@end

@interface Student : NSObject
{
@public
Sex sex; // 性别
Date birthday; // 生日
double weight; // 体重(kg)
Color favColor; // 最喜欢的颜色
char *name;

// 重点:狗
Dog *dog;
}

- (void)eat;
- (void)run;
- (void)print;

- (void)liuDog;
- (void)weiDog;

@end

@implementation Student

- (void)liuDog
{
// 让狗跑起来(调用狗的run方法)
[dog run];
}

- (void)weiDog
{
// 让狗吃东西(调用狗的eat方法)
[dog eat];
}

- (void)eat
{
weight += 1; // 每吃一次,体重就加1

NSLog (@"学生吃完这次后的体重是%f", weight);
}

- (void)run
{
weight -= 1; // 跑一次,体重减1

NSLog (@"学生跑完这次后的体重是%f", weight);
}

- (void)print
{
NSLog (@"性别= %d, 喜欢的颜色 = %d, 姓名 = %s, 生日 = %d-%d-%d",
sex, favcolor, name, birthday.year, birthday.month, birthday.day);
}

@end

int main()
{
Student *s = [Student new];

Dog *d = [Dog new];
d->curColor = ColorGreen;
d->weight = 20;

// 创建一个Dog对象给Student对象
s->dog = d;

[s liuDog];
[s weiDog];

return 0;
}

void test()
{
Student *s = [Student new];

s->weight = 50;

// 性别
s->sex = SexMan;

// 生日
/*
// s->birthday = {2011, 9, 10}; // 在定义结构体变量的时候才可以初始化。
s->birthday.year = 2011;
s->birthday.month = 9;
s->birthday.day = 10;
*/
Date d = {2011, 9, 10};
s->birthday = d;

// 姓名
s->name = "Jack";

// 颜色
s->favColor = ColorBlack;

[s print];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐