关于objective-c中类的组合问题,我们先来看一道题:
1.设计2个类,类之间的关系自拟(比如继承、组合)
1> 身材数据
(1)属性
* 身高
* 体重
* 手长
* 脚长
(2)方法
* 属性相应的set和get方法
2> 人
(1)属性
* 年龄
* 身高
* 体重
* 手长
* 脚长
(2)方法
* 属性相应的set和get方法
思路:在这道题里面,人拥有一份 身材数据 ,所以用组合关系,在人这个类里面组合身体数据这个类,来实现。
实现代码如下:
1> 身材数据
(1)属性
* 身高
* 体重
* 手长
* 脚长
(2)方法
* 属性相应的set和get方法
2> 人
(1)属性
* 年龄
* 身高
* 体重
* 手长
* 脚长
(2)方法
* 属性相应的set和get方法
思路:在这道题里面,人拥有一份 身材数据 ,所以用组合关系,在人这个类里面组合身体数据这个类,来实现。
实现代码如下:
// 身材数据
@interface BodyData : NSObject
{
int _height; // 身高
int _weight; //体重
int _handLength; // 手长
int _legLength; // 腿长
}
// 身高的getter和setter
- (int)height;
- (void)setHeight:(int)height;
// 体重的getter和setter
- (int)weight;
- (void)setWeight:(int)weight;
// 手长的getter和setter
- (int)handLength;
- (void)setHandLength:(int)handLength;
// 腿长的getter和setter
- (int)legLength;
- (void)setLegLength:(int)legLength;
@end
@implementation BodyData
// 身高的getter和setter
- (int)height
{
return _height;
}
- (void)setHeight:(int)height
{
_height = height;
}
// 体重的getter和setter
- (int)weight
{
return _weight;
}
- (void)setWeight:(int)weight
{
_weight = weight;
}
// 手长的getter和setter
- (int)handLength
{
return _handLength;
}
- (void)setHandLength:(int)handLength
{
_handLength = handLength;
}
// 腿长的getter和setter
- (int)legLength
{
return _legLength;
}
- (void)setLegLength:(int)legLength
{
_legLength = legLength;
}
@end
// 人
@interface Person : NSObject
{
int _age; // 年龄
BodyData *_bodyData; // 身材数据
}
// _age的setter和getter
- (void)setAge:(int)age;
- (int)age;
// _bodyData的setter和getter
- (void)setBodyData:(BodyData *)bodyData;
- (BodyData *)bodyData;
@end
//实现
@implementation Person
// _age的setter和getter
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
// _bodyData的setter和getter
- (void)setBodyData:(BodyData *)bodyData
{
_bodyData = bodyData;
}
- (BodyData *)bodyData
{
return _bodyData;
}
@end
int main()
{
Person *p = [Person new];
// 设置年龄
[p setAge:20];
// 设置身材数据
BodyData *b = [BodyData new];
[b setWeight:60];
[b setHeight:170];
[p setBodyData:b];
return 0;
}