------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
类的合理的设计
#import <Foundation/Foundation.h>
//定义性别的枚举成员变量
typedef enum{
SexMan,
SexWomen
} Sex;
//定义生日的结构体成员变量
typedef struct{
int year;
int month;
int day;
} Data;
//定义颜色的枚举成员变量
typedef enum{
ColorBlack,
ColorRed,
ColorGreen
} Color;
/*
学生
成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色,吃、跑)
方法:吃、跑步、遛狗(让狗跑)、喂狗(让狗吃)
*/
//定义Dog类
@interface Dog : NSObject
{//定义声明
@public
double weight;
Color curColor;
}
//定义方法
- (void)eat;
- (void)run;
@end
//定义类的实现
@implementation Dog
- (void)run
{
weight -= 1;
NSLog(@"狗跑完这次的体重是%.2f",weight);
}
-(void)eat
{
weight +=1;
NSLog(@"狗吃完这次后的体重是%.2f",weight);
}
@end
//定义Student类
@interface Student : NSObject
{//类的声明
@public
Sex sex;
Data birthday;
double weight;
Color fvaColor;
char *name;
//狗的声明
Dog *dog;
}
//定义类的方法
- (void)eat;
- (void)run;
- (void)print;
- (void)liuDog;
- (void)weiDog;
@end
//定义Student类的实现
@implementation Student
- (void)weiDog
{
[dog eat];
}
- (void)liuDog
{
[dog run];
}
- (void)print
{
NSLog(@"学生的性别是 %d, 喜欢的颜色是 %d, 姓名是%s,生日是%d-%d-%d",sex,fvaColor,name,birthday.year,birthday.month,birthday.day);
}
- (void)run
{
weight -= 1;
NSLog(@"学生跑完这次的体重是%.2f",weight);
}
- (void)eat
{
weight += 1;
NSLog(@"学生吃完这次后的体重是%.2f",weight);
}
@end
int main(int argc, const char * argv[]) {
// 定义一个Student类的指针指向一个新的对象
Student *s = [Student new];
//定义一个Dog类的指针指向一个新的对象
Dog *g = [Dog new];
g -> weight = 20;
g ->curColor = ColorRed;
s ->dog = g;
//调用weiDog方法
[s weiDog];
//调用liuDog方法
[s liuDog];
return 0;
}
void test(){
// 定义一个Student类的指针指向一个新的对象
Student *s = [Student new];
s -> sex = SexWomen;
s -> fvaColor = ColorRed;
s -> name = "lynn";
//定义一个结构体变量赋值给结构体d
Data d = {1990,1,26};
//结构体不可以直接将值传递给s
s -> birthday = d;
//调用printtfangfa
[s print];
}