第一题
在MRC模式下用属性语法和点语法模拟实现以下内容:
一个人工作挣钱,有一天终于攒够了钱,买了一个房子,然后找了一个对象结婚。后来婚姻出现了第三者,两人离婚后此人卖掉了房子,最终和第三者结婚。
房屋类:
特征:房东、地址、面积、每平米价格
行为:估价、升值等
人类:
特征;姓名、性别、钱、配偶
行为:工作挣钱、买房子、结婚、卖房子、离婚等
// 房子类House
// House.h
#import <Foundation/Foundation.h>
@class Person;
@interface House : NSObject
@property(nonatomic, retain) Person *landlord; // 房东
@property(nonatomic, retain) NSString *address; // 地址
@property(nonatomic, assign) float area; // 面积
@property(nonatomic, assign) float priceEvery; // 每平米价格
/// 估价
- (float)assess;
/// 升值
- (float)appreciation:(int)year;
@end
// House.m
#import "House.h"
@implementation House
/// 估价
- (float)assess
{
return _area * _priceEvery;
}
/// 升值
- (float)appreciation:(int)year
{
_priceEvery += 1000 * year;
return [self assess];
}
@end
// 人类Person
// Person.h
#import <Foundation/Foundation.h>
@class House;
@interface Person : NSObject
@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSString *sex;
@property(nonatomic, assign) float money;
@property(nonatomic, assign) int workTime; // 工作时间
@property(nonatomic, retain) Person *mate; // 配偶
@property(nonatomic, retain) House *isHouse; // 房子
/// 工作挣钱
- (void)work;
/// 买房子
- (void)buyHouse:(House *)house;
/// 结婚
- (void)marry:(Person *)person;
/// 卖房子
- (void)sellHouse:(int)year;
/// 离婚
- (void)divorce:(Person *)person marry:(Person *)person2;
@end
// Person.m
#import "Person.h"
@implementation Person
/// 工作挣钱
- (void)work
{
_money = _workTime * 600000; // 年薪60万
NSLog(@"%@努力工作赚钱,工作了3年,不吃不喝终于攒了%.2f RMB。",
_name, _money);
}
/// 买房子
- (void)buyHouse:(House *)house
{
if (_money >= [_isHouse assess]) {
house.landlord = self;
_isHouse = house;
_money -= [_isHouse assess];
NSLog(@"房子在%@,估价是%.2f,买完房子之后还剩%.2f,房主变为%@",
_isHouse.address, [_isHouse assess], _money, _isHouse.landlord.name);
}
}
/// 结婚
- (void)marry:(Person *)person
{
_mate = person;
person.mate = self;
static int flag = 0;
if (flag == 0) {
NSLog(@"%@找了个对象叫%@,两人已结婚,幸福地生活在一起!",
_name, _mate.name);
flag = 1;
}
}
/// 卖房子
- (void)sellHouse:(int)year
{
NSLog(@"两人离婚后,%@卖掉了在%@的升值为%.2f RMB的房子,最终和第三者%@结婚。。。",
_isHouse.landlord.name, _isHouse.address, [_isHouse appreciation:year], _isHouse.landlord.mate.name);
_isHouse = nil;
}
/// 离婚
- (void)divorce:(Person *)person marry:(Person *)person2
{
_mate = nil;
person.mate = nil;
[self marry:person2];
NSLog(@"8年后婚姻出现了第三者%@,%@与%@离婚!",
_mate.name, person.name, _name);
}
@end
// 主函数main.m
#import <Foundation/Foundation.h>
#import "House.h"
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Person *wenzhang = [[Person alloc] init];
House *house = [[House alloc] init];
wenzhang.name = @"文章";
wenzhang.sex = @"男";
wenzhang.money = 0.0f;
house.address = @"北京市五环外";
house.area = 100.0f;
house.priceEvery = 20000.0f;
wenzhang.workTime = 4;
[wenzhang work];
[wenzhang buyHouse:house];
Person *maYiLi = [[Person alloc] init];
maYiLi.name = @"马伊俐";
maYiLi.sex = @"女";
[wenzhang marry:maYiLi];
int year = 8;
Person *yaoDi = [[Person alloc] init];
yaoDi.name = @"姚笛";
yaoDi.sex = @"女";
[wenzhang divorce:maYiLi marry:yaoDi];
[wenzhang sellHouse:year]; // 结婚year年后卖房
}
return 0;
}