TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
本帖最后由 Sian 于 2014-3-10 20:46 编辑
设计一个学生的类,要求该学生具备:1、属性:
姓名;
出生日期;
性别;
喜好的颜色;
体重;
狗:属性(体重、毛色)、方法(吃、跑);
2、方法:
吃;
跑;
遛狗([狗 跑]);
喂狗([狗 吃]);
源代码:- #import <Foundation/Foundation.h>
- // 定义一个结构体类型 Date 用来定义日期类型数据
- typedef struct {
- int year;
- int month;
- int day;
- } Date;
- // 定义一个枚举类型 Sex 用来定义性别类型数据
- typedef enum {
- SexMan,
- SexWoman
- } Sex;
- // 定义一个枚举类型 Color 用来定义颜色类型数据
- typedef enum {
- ColorBlack,
- ColorWrite,
- ColorRed,
- ColorBlue,
- ColorGreen
- } Color;
- // 创建一个Dog对象
- @interface Dog : NSObject { // 对象声明
- @public // 成员变量属性设置为public,便于直接对成员变量进行访问,默认为protocted无法直接访问
- double height; // 成员变量height表示身高
- Color color; // 成员变量color表示毛色
- }
- - (void) eat; // 声明方法:吃
- - (void) bray; // 声明方法:叫
- - (void) run; // 声明方法:跑
- - (void) print; // 声明方法:打印各成员变量值
- @end
- @implementation Dog // 方法实现
- // eat方法使体重增加1,并输出当前体重值
- - (void) eat{
- height += 1;
- NSLog(@"dog is eating...height=%.2f", height);
- }
- // bray方法,输出一行字符串表示
- - (void) bray {
- NSLog(@"汪……汪……");
- }
- // run方法使得体重减少1,并输出当前体重
- - (void)run {
- height -= 1;
- NSLog(@"dog is runnig! height=%.2f", height);
- }
- // print方法输出当前成员变量值
- - (void)print {
- NSLog(@"%@: height = %.2f, color = %d", self, height, color);
- }
- @end
- // 创建一个人的对象
- @interface Person : NSObject { // 对象声明
- @public // 成员变量属性设置为public,便于直接对成员变量进行访问,默认为protocted无法直接访问
- char *name; // 成员变量name,表示姓名
- Date birthday; // 成员变量 birthday表示出生年月日
- Sex sex; // 成员变量sex 表示性别
- Color favColor; // 成员变量favColor表示个人喜好的颜色
- double height; // 成员变量height表示体重
- Dog *dog; // 成员变量dog表示拥有的狗对象
- }
- // 声明对象方法
- - (void)eat; // eat表示吃
- - (void)run; // run表示跑
- - (void)heyDog; // heyDog表示喂狗
- - (void)walkDog; // walkDog表示遛狗
- - (void)print; // print方法用来输出当前对象的成员变量值
- @end
- @implementation Person // 方法实现
- // eat方法将成员变量height的值加1,并输出当前体重值
- - (void)eat {
- height += 1;
- NSLog(@"Person is running...height=%.2f", height);
- }
- // run方法将成员变量height的值减1,并输了当前体重值
- - (void)run {
- height -= 1;
- NSLog(@"Person is eating...height=%.2f", height);
- }
- // keyDog方法表示当前正在喂狗,同时调用狗的eat方法,即狗的体重增加1
- - (void)heyDog {
- NSLog(@"Person hey the dog...");
- [dog eat];
- }
- // walkDog方法表示当前正在遛狗,同时调用狗的run方法,即狗的体重减1
- - (void)walkDog {
- NSLog(@"Person walk the dog...");
- [dog run];
- [dog bray];
- }
- // print方法输出对象所有成员变量的值
- - (void)print {
- NSLog(@"%@: name=%s, birthday=(%d-%d-%d), sex=%d, favColor=%d, height=%.2f, dog=%@", self, name, birthday.year, birthday.month, birthday.day, sex, favColor, height, dog);
- }
- @end
- int main() {
-
- Person *p = [Person new]; // 创建一个Person对象p
-
- // 给各成员变量赋值
- p->name ="yusian";
-
- p->sex = SexMan;
-
- Date d = {1987,3,21}; // 创建中间临时值,方便一次性赋值
- p->birthday = d;
-
- p->favColor = ColorBlue;
-
- p->height = 72.4;
-
- p->dog = [Dog new]; // 创建一个Dog对象,并将对象赋值给当前Person对象
-
- // 给Dog对象各成员变量赋值
- p->dog->height = 13.2;
- p->dog->color = ColorBlue;
-
- // 输出对象p的各成员变量值
- [p print];
-
- // 输出Dog对象的各成员变量值
- [p->dog print];
-
- // 人跑步
- [p run];
-
- // 人吃饭
- [p eat];
-
- // 人喂狗
- [p heyDog];
-
- // 人遛狗
- [p walkDog];
- return 0;
- }
复制代码 输出结果:- 2014-03-10 20:45:46.744 a.out[1404:507] <Person: 0x7fd86340ad00>: name=yusian, birthday=(1987-3-21), sex=0, favColor=3, height=72.40, dog=<Dog: 0x7fd863408f40>
- 2014-03-10 20:45:46.746 a.out[1404:507] <Dog: 0x7fd863408f40>: height = 13.20, color = 3
- 2014-03-10 20:45:46.746 a.out[1404:507] Person is eating...height=71.40
- 2014-03-10 20:45:46.746 a.out[1404:507] Person is running...height=72.40
- 2014-03-10 20:45:46.747 a.out[1404:507] Person hey the dog...
- 2014-03-10 20:45:46.747 a.out[1404:507] dog is eating...height=14.20
- 2014-03-10 20:45:46.747 a.out[1404:507] Person walk the dog...
- 2014-03-10 20:45:46.748 a.out[1404:507] dog is runnig! height=13.20
- 2014-03-10 20:45:46.748 a.out[1404:507] 汪……汪……
复制代码
|
|