黑马程序员——OC学习笔记 类的进阶使用
2015-11-08 19:27
477 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
首先写下需求
我们需要实现 Jevon开了一辆加了97号油的奥迪A4L
需要3个类:
人、车、汽油
人的属性:
姓名(peopleName)、性别(sex)、生日(birthday)
人的方法:
查看自己的信息(getMyInfo)
开车(dirveCar)需要参数车
车的属性:
车名(carName)、车型号(carType)、需要的汽油种类(oilType)
车的方法:
查看车辆的信息(getCarInfo)
移动(move)需要参数油
汽油的属性:
汽油型号(oilType)、油量(oilMass)
汽油的方法:
同时我们创建一个结构体用来存放日期MyDate
人的设计为
车的设计为
汽油的设计为
之后设计实现方法
首先看人
查看自己的信息(getMyInfo)
开车(dirveCar)需要参数车
查看自己信息没什么可说的只是NSLog显示出来就可以
dirveCar 需要以车为参数,之后进入车的移动方法
再看车的方法
查看车辆的信息(getCarInfo)
移动(move)需要参数油
查看车辆信息 同查看人的信息
移动这里我们坐下判断 油的类型不同 分为没有油 有油但是类型不同
这样我们类就完成了,我们需要实现
1.Jevon开奥迪A4加97号油。
2.Jevon开奔驰GLA加93号油跑不动。
完整代码如下(引入的包只有 Foundation/Foundation.h CSDN编译器写不出来 不知道是不是要转义 这里没有贴 )
执行结果为
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.
黑马程序员——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.
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音