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

黑马程序员——OC学习笔记 类的进阶使用

2015-11-08 19:27 477 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

黑马程序员——OC学习笔记 类的进阶使用

今天主要写的是 对象作为方法的参数连续传递 及结构体在对象中的使用。

首先写下需求

我们需要实现 Jevon开了一辆加了97号油的奥迪A4L

需要3个类:

人、车、汽油

人的属性:

姓名(peopleName)、性别(sex)、生日(birthday)

人的方法:

查看自己的信息(getMyInfo)

开车(dirveCar)需要参数车

车的属性:

车名(carName)、车型号(carType)、需要的汽油种类(oilType)

车的方法:

查看车辆的信息(getCarInfo)

移动(move)需要参数油

汽油的属性:

汽油型号(oilType)、油量(oilMass)

汽油的方法:

同时我们创建一个结构体用来存放日期MyDate

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


人的设计为

@interface people:NSObject
{
NSString *peopleName;
NSString *sex;
MyDate birthday;
}
-(void)getMyInfo;
-(void)dirveCar:(Car *) car andOil: (Oil *) oil;
@end


车的设计为

@interface Car:NSObject
{
NSString *carName;
NSString *carType;
int oilType;
}
-(void)getCarInfo;
-(void)move:(Oil *)oil;
@end


汽油的设计为

@interface Oil:NSObject
{
int oilType;
int oilMass;
}
@end


之后设计实现方法

首先看人

查看自己的信息(getMyInfo)

开车(dirveCar)需要参数车

查看自己信息没什么可说的只是NSLog显示出来就可以

dirveCar 需要以车为参数,之后进入车的移动方法

@implementation People
-(void)getMyInfo
{
NSLog(@"My Name is %@ , sex is %@ , Birthday is %d-%d-%d",peopleName,sex,birthday.year,birthday.month,birthday.day);
}
-(void)dirveCar:(Car *) car andOil: (Oil *) oil
{
[car move:oil];
}
@end


再看车的方法

查看车辆的信息(getCarInfo)

移动(move)需要参数油

查看车辆信息 同查看人的信息

移动这里我们坐下判断 油的类型不同 分为没有油 有油但是类型不同

@implementation Car
-(void)getCarInfo
{
NSLog(@"My car is %@--%@ and i need No.%d oil.",carName,carType,oilType);
}
-(void)move:(Oil *)oil
{
if(oil->oilType == oilType && oil->oilMass > 0){
NSLog(@"%@--%@ use No.%d oil running",carName,carType,oilType);
oil->oilMass--;
}else if(oil->oilType == oilType && oil->oilMass <= 0){
NSLog(@"There is no oil!");
}else
{
NSLog(@"oilType is Wrong.");
}
}
@end


这样我们类就完成了,我们需要实现

1.Jevon开奥迪A4加97号油。

2.Jevon开奔驰GLA加93号油跑不动。

完整代码如下(引入的包只有 Foundation/Foundation.h CSDN编译器写不出来 不知道是不是要转义 这里没有贴 )

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

/**
*汽油的属性:
*汽油型号(oilType)、油量(oilMass)
**/

@interface Oil:NSObject
{
@public
int oilType;
int oilMass;
}
@end

/**
*车的属性:
*车名(carName)、车型号(carType)、需要的汽油种类(oilType)
*车的方法:
*查看车辆的信息(getCarInfo)
*移动(move)需要参数油
**/

@interface Car:NSObject
{
@public
NSString *carName;
NSString *carType;
int oilType;
}
-(void)getCarInfo;
-(void)move:(Oil *) oil;
@end

/**
*人的属性:
*姓名(peopleName)、性别(sex)、生日(birthday)
*人的方法:
*查看自己的信息(getMyInfo)
*开车(dirveCar)需要参数车
**/
@interface People:NSObject
{
@public
NSString *peopleName;
NSString *sex;
MyDate birthday;
}
-(void)getMyInfo;
-(void)dirveCar:(Car *) car andOil: (Oil *) oil;
@end

@implementation People -(void)getMyInfo { NSLog(@"My Name is %@ , sex is %@ , Birthday is %d-%d-%d",peopleName,sex,birthday.year,birthday.month,birthday.day); } -(void)dirveCar:(Car *) car andOil: (Oil *) oil { [car move:oil]; } @end

@implementation Car
-(void)getCarInfo
{
NSLog(@"My car is %@--%@ and i need No.%d oil.",carName,carType,oilType);
}
-(void)move:(Oil *)oil
{
if(oil->oilType == oilType && oil->oilMass > 0){
NSLog(@"%@--%@ use No.%d oil running",carName,carType,oilType);
NSLog(@"Only have %dL oil.",--oil->oilMass);
}else if(oil->oilType == oilType && oil->oilMass <= 0){
NSLog(@"There is no oil!");
}else
{
NSLog(@"oilType is Wrong.");
}
}
@end

@implementation Oil

@end

int main()
{
People *people = [People new];
people->peopleName = @"Jevon";
people->sex = @"MAN";
people->birthday = (MyDate){1992,03,15};
[people getMyInfo];

Car *aodi = [Car new];
aodi->carName = @"aodi";
aodi->carType = @"A4L";
aodi->oilType = 97;
[aodi getCarInfo];

Oil *oil97 = [Oil new];
oil97->oilType = 97;
oil97->oilMass = 2;

[people dirveCar:aodi andOil: oil97];
[people dirveCar:aodi andOil: oil97];
[people dirveCar:aodi andOil: oil97];

Car *benz = [Car new];
benz->carName = @"benz";
benz->carType = @"GLA";
benz->oilType = 97;
[aodi getCarInfo];

Oil *oil93 = [Oil new];
oil97->oilType = 93;
oil97->oilMass = 10;

[people dirveCar:benz andOil: oil93];

return 0;
}


执行结果为

2015-11-08 20:28:15.955 dirveCar[2888] My Name is Jevon , sex is MAN , Birthday

is 1992-3-15

2015-11-08 20:28:15.959 dirveCar[2888] My car is aodi–A4L and i need No.97 oil.

2015-11-08 20:28:15.959 dirveCar[2888] aodi–A4L use No.97 oil running

2015-11-08 20:28:15.960 dirveCar[2888] Only have 1L oil.

2015-11-08 20:28:15.960 dirveCar[2888] aodi–A4L use No.97 oil running

2015-11-08 20:28:15.960 dirveCar[2888] Only have 0L oil.

2015-11-08 20:28:15.960 dirveCar[2888] There is no oil!

2015-11-08 20:28:15.960 dirveCar[2888] My car is aodi–A4L and i need No.97 oil.

2015-11-08 20:28:15.960 dirveCar[2888] oilType is Wrong.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员 ios