/*3.设计 3 个类,类之间的关系自拟(比如继承、组合)
1> 人
(1)属性
* 姓名
* 年龄
(2)方法
* 属性相应的 set 和 get 方法
* 设计一个对象方法同时设置姓名和年龄
2> 书
(1)属性
* 书名
* 出版社名称
* 作者(包含姓名和年龄)
(2)方法
* 属性相应的 set 和 get 方法
3> 学生
* 姓名
* 年龄
* 学号
* 书(随身带着一本书)
2> 方法
* 属性相应的 set 和 get 方法
* 设计一个对象方法-study :输出书名
*/
@interface Person : NSObject
{
NSString *_name;
int _age;
}
- (void)setName:(NSString *)name ;
- (NSString *)name;
-(void)setName:(NSString *)name andAge:(int)age;
@end
@implementation Person
- (void) setName:(NSString *)name{
_name = name;
}
(NSString *)name{
return _name;
}
(void)setAge:(int)age{
_age = age;
}
(int)age{
return _age;
}
-(void)setName:(NSString *)name andAge:(int)age{
_name = name;
_age = age;
}
@end
@interface Book : NSObject
{
NSString *_name;
NSString *_publisher;
Person *_author;
}
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setPublisher:(NSString *)publisher;
-(NSString *)publisher;
-(void)setAuthor:(Person *)author;
-(Person *)author;
@end
@implementation Book
-(void)setName:(NSString *)name{
_name = name;
}
-(NSString *)name{
return _name;
}
-(void)setPublisher:(NSString *)publisher{
_publisher = publisher;
}
-(NSString *)publisher{
return _publisher;
}
-(void)setAuthor:(Person *)author{
_author = author;
}
-(Person *)author{
return _author;
}
@end
@interface Student : Person
{
int _sn;
Book *_book;
}
-(void)setSN:(int)sn;
-(int)sn;
-(void)setBook:(Book *)book;
-(Book *)book;
-(void)study;
@end
@implementation Student
-(void)setSN:(int)sn{
_sn = sn;
}
-(int)sn{
return _sn;
}
-(void)setBook:(Book *)book{
_book = book;
}
-(Book *)book{
return _book;
}
-(void)study{
NSLog(@"现在学习的书是%@",[_book name]);
}
@end
int main(){
Person *p = [Person new];
[p setName:@"张三" andAge:20];
Book *b = [Book new];
[b setName:@"《空间》"];
[b setPublisher:@"广西师范大学出版社"];
Student *s = [Student new];
[s setSN:123456];
[s setName:@"李二"];
[s study];
NSLog(@"姓名是:%@,年龄是:%d,书名:%@,%@,%d,%@",[p name],[p age],[b name],[b publisher],[s sn],[s name]);
return 0;
我想打印出这本书的作者是谁。
还有给我讲一下组合的概念,网上 GOO 了一圈,也还是没理解
1
Rand01ph 2015-10-20 09:33:02 +08:00
为啥不用 property ,会自动生成存取方法,这些问题更像是面向对象编程的问题,可以去补补,再来看 OC 。
|
2
horipse 2015-11-05 09:36:52 +08:00
我想楼主的意思应该是,如何 NSLog 出 Author 的名字?
如果不愿意使用 property 直接生成存取方法的话,应该理清各对象中的元素的关系呢. 就按照题主的想法来吧,假设一个变量是这本书的作者。那么首先初始化 p2(这个变量,Person 类),在 main()中先调用 setAuthor 方法,即可。 `Person *p2 = [[Person alloc]init]; [p2 setName:@"example" andAge:"10"]; [b setAuthor:p2]; ` 打印出作者是谁,也就是题主想打印出名字?(姑且这么理解),因为 p2 是个 Person 类,它包含的不只有 name,还有 age 信息. 所以要打印的话 NSLog(@"The author is %@",b.author.name); 不知你是否能理解? 建议题主看看 property 和 synthesize 如有错误请指正 |