main.m文件
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Book.h"
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu1=[Student new];
Student *stu2=[Student new];
Book *book1=[Book new];
Book *book2=[Book new];
Person *p1=[Person new];
Person *p2=[Person new];
//学生
[stu1 setName:@"张三" age:12 number:12345];
[stu2 setName:@"李四" age:13 number:13456];
//书名
[book1 setBookname:@"西游记"];
[book2 setBookname:@"水浒传"];
//出版社
[book1 setPrsee:@"科学出版社"];
[book2 setPrsee:@"社会出版社"];
//作者
[p1 setName:@"王五" age :30];
[p2 setName:@"赵六" age :40];
// book1.author.name ==book1->_author->name ==[[book1 author] name]
//打印两个学生的属性
NSLog(@"%@ %li %li %@ %@ %@ %li",stu1.name,stu1.age,stu1.number,book1.bookname,book1.prsee,p1.name,p1.age);
NSLog(@"%@ %li %li %@ %@ %@ %li",stu2.name,stu2.age,stu2.number,book2.bookname,book2.prsee,p2.name,p2.age);
//打印两个学生的属性对比结果
NSLog(@"%hhi",[stu1 compareStudentwithother:stu2]);
}
return 0;
}
Person.h文件
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_name;
NSInteger _age;
}
//人的名字
- (void) setName:(NSString *)name;
- (NSString *)name;
//人的年龄
- (void) setAge :(NSInteger)age;
- (NSInteger) age;
//比较两个人的名字和年龄
- (void) setName:(NSString *)name age:(NSInteger)age;
+ (BOOL) comparePerson1:(Person *)person1 person2:(Person *)person2;
@end
Person.m文件
#import "Person.h"
@implementation Person
//人的名字
- (void) setName:(NSString *)name{
_name=name;
}
- (NSString *)name{
return _name;
}
//人的年龄
- (void) setAge :(NSInteger)age{
_age=age;
}
- (NSInteger) age{
return _age;
}
//比较两个人的名字和年龄
- (void) setName:(NSString *)name age:(NSInteger)age{
_age=age;
_name=name;
}
+ (BOOL) comparePerson1:(Person *)person1 person2:(Person *)person2{
return [person1.name isEqualToString:person2.name] && person1.age==person2.age;
}
@end
Book.h文件#import "Person.h"
@interface Book : Person
{
NSString *_bookname;
NSString *_prsee;
Person *_author;
}
//书名
- (void) setBookname:(NSString *)bookname;
- (NSString *)bookname;
//出版社名字
- (void) setPrsee:(NSString *)prsee;
- (NSString *)prsee;
//作者
- (void) setAuthor:(Person *)author;
- (Person *)author;
@end
Book.m文件#import "Book.h"
@implementation Book
//书名
- (void) setBookname:(NSString *)bookname{
_bookname=bookname;
}
- (NSString *)bookname{
return _bookname;
}
//出版社名字
- (void) setPrsee:(NSString *)prsee{
_prsee=prsee;
}
- (NSString *)prsee{
return _prsee;
}
//作者
- (void) setAuthor:(Person *)author{
_author=author;
}
- (Person *)author{
return _author;
}
@end
Student.h文件#import "Person.h"
#import "Book.h"
@interface Student : Person
{
NSInteger _number;
Book *_book;
}
//学号
- (void) setNumber:(NSInteger)number;
- (NSInteger)number;
//调用书本
- (void) setBook:(Book *)book;
- (Book *) book;
//比较学生
- (void) setName:(NSString *)name age :(NSInteger)age number:(NSInteger)number;
- (BOOL) compareStudentwithother:(Student *)other;
+ (BOOL) compareStudent1:(Student *)student1 student2:(Student *)student2;
@end
Student.m文件#import "Student.h"
@implementation Student
//学号
- (void) setNumber:(NSInteger)number{
_number=number;
}
- (NSInteger)number{
return _number;
}
//调用书本
- (void) setBook:(Book *)book{
_book=book;
}
- (Book *) book{
return _book;
}
//比较学生
- (void) setName:(NSString *)name age :(NSInteger)age number:(NSInteger)number{
_name=name;
_age=age;
_number=number;
}
- (BOOL) compareStudentwithother:(Student *)other{
return [Student comparePerson1:self person2:other] && _number==[other number];
}
+ (BOOL) compareStudent1:(Student *)student1 student2:(Student *)student2{
return [student1 compareStudentwithother:student2];
}
@end