类的合理设计

#import <Foundation/Foundation.h>


typedef enum {//枚举
   SexMan,
    SexWoman
}Sex;


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

typedef enum {
    ColorBlack,
    ColorRed,
    ColorGreen
}Color;

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

- (void)run;
- (void)eat;
@end

@implementation Dog
- (void)eat
{
    //每吃一次,体重加1
    weight += 1;
    NSLog(@"狗吃完这次后的体重是%.2f",weight);
}

- (void)run
{
    weight -= 1;
    NSLog(@"狗跑完这次后的体重是%.2f",weight);
}
@end
/*
学生
成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色、吃、跑)
方法:吃、跑步、遛狗(让狗跑)、喂狗(让狗吃)、
*/
@interface Student : NSObject
{

    @public
    Sex sex;  //性别
    Data birthday;  //生日
    double weight;  //体重(kg)
    Color favColor;  //最喜欢的颜色
    char *name;
    
    //重点
    Dog *dog;//任何OC对象肯定是用指针来指的
    
}

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

- (void)liuDog;
- (void)weiDog;
@end

@implementation Student

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

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

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

- (void)eat
{
    //每吃一次,体重加1
    weight += 1;
    NSLog(@"学生吃完这次后的体重是%.2f",weight);
}

- (void)run
{
    weight -= 1;
    NSLog(@"学生跑完这次后的体重是%.2f",weight);
}
@end

int main()
{
    Student *s = [Student new];
    Dog *sdog = [Dog new];
    sdog->curColor = ColorGreen;
    sdog->weight = 20;
    s->dog = sdog;//对象中又有对象
    
    [s liuDog];
    [s weiDog];
    
    
    
    s->weight = 50;
    
    //性别
    s->sex = SexMan;
    
    //生日
    //s->birthday = {2011, 9, 10};错误
    
    Data d ={1993 , 9 , 9};
    s->birthday = d;
    
    /*
    s->birthday.year = 1993;
    s->birthday.month = 9;
    s->birthday.day = 9;
    */
    
    //姓名
    s->name = "DaShu";
    
    //喜欢的颜色
    s->favColor = ColorBlack;
    [s eat];
    [s eat];
    
    [s run];
    [s run];
    
    [s print];
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值