main.m
#import <Foundation/Foundation.h>
// Step 1. 定义类
// 数据抽象: 找到和类(对象)相关的属性(找名词)
// 行为抽象: 找到和类(对象)相关的方法(找动词)
// 类的声明部分
@interface Circle : NSObject {
// 数据抽象
@private double _radius;
}
// 初始化方法
- (instancetype) initWithRadius:(double) radius;
// 行为抽象
- (double) perimeter;
- (double) area;
// 类的实现部分
@implementation Circle
- (instancetype) initWithRadius:(double) radius {
if (self = [super init]) {
_radius = radius;
}
return self;
}
- (double) perimeter {
return 2 * M_PI * _radius;
}
- (double) area {
return M_PI * _radius * _radius;
}
static const double WALL = 5.5;
static const double AISLE = 7.8;
int main() {
// 自动释放池(离开释放池申请的内存会做一次释放操作)
@autoreleasepool {
printf("请输入游泳池的半径: ");
double r;
scanf("%lf", &r);
// Step.2 创建对象
// 用中缀符语法给对象发消息
Circle *smallCircle = [[Circle alloc] initWithRadius:r];
Circle *bigCircle = [[Circle alloc] initWithRadius:r + 3];
// Step.3 给对象发消息求解问题
printf("The price of aisle is $%.2f\n",
([bigCircle area] - [smallCircle area]) * AISLE);
printf("The price of wall is $%.2f\n", [bigCircle perimeter] * WALL);
}
return 0;
}