第二题 矩形计算
1、定义一个新的类XYPoint,成员变量:x、y。
方法:初始化方法、赋值方法(setter)、取值方法(getter)
2、定义一个新的类Rectangle,成员变量:width、height、XYPoint类型的point(原始点)、XYPoint类型的center(中心点)。
方法:赋值方法、取值方法、计算周长、计算面积
3、主函数实现周长、面积的计算,以及中心点的计算。
// 首先创建新的类XYPoint
// XYPoint.h 文件
#import <Foundation/Foundation.h>
@interface XYPoint : NSObject
{
int _x;
int _y;
}
///初始化
- (id)initWithX:(int)x y:(int)y;
///赋值
- (void)setX:(int)x y:(int)y;
///取值
- (int)x;
- (int)y;
@end
// 方法实现
// XYPoint.m 文件
#import "XYPoint.h"
@implementation XYPoint
///初始化
- (id)initWithX:(int)x y:(int)y
{
_x = x;
_y = y;
return self;
}
///赋值
- (void)setX:(int)x y:(int)y
{
_x = x;
_y = y;
}
///取值
- (int)x
{
return _x;
}
- (int)y
{
return _y;
}
@end
#import <Foundation/Foundation.h>
#import "XYPoint.h"
@interface Rectangle : NSObject
{
int _width; // 宽
int _height; // 长
XYPoint *_point; // XYPoint型的原始点point
XYPoint *_center; // XYPoint型的中心点center
}
///赋值
- (void)setWidth:(int)width height:(int)height point:(XYPoint *)point;
///取值
- (int)width;
- (int)height;
- (XYPoint *)point;
- (XYPoint *)center;
///计算周长
- (int)perimeter;
///计算面积
- (int)area;
///计算中心点
- (int)centerX;
- (int)centerY;
@end
// Rectangle.m 文件
#import "Rectangle.h"
@implementation Rectangle
///赋值
- (void)setWidth:(int)width height:(int)height point:(XYPoint *)point
{
_width = width;
_height = height;
_point = point;
}
///取值
- (int)width
{
return _width;
}
- (int)height
{
return _height;
}
- (XYPoint *)point
{
return _point;
}
- (XYPoint *)center
{
return _center;
}
///计算周长
- (int)perimeter
{
int m = (_width + _height) * 2;
return m;
}
///计算面积
- (int)area
{
int s = _width * _height;
return s;
}
///中心点
- (int)centerX
{
return ([_point x] + _width / 2);
}
- (int)centerY
{
return ([_point y] + _height / 2);
}
@end
// 更改的Rectangle.m文件:
#import "Rectangle.h"
#import "XYPoint.h"
@implementation Rectangle
/// 初始化
- (id)initWithPoint:(XYPoint *)point
height:(float)height
width:(float)width
{
_point = point;
_height = height;
_width = width;
float x = [_point x] + width / 2.0;
float y = [_point y] + height / 2.0;
_center = [[XYPoint alloc] initWithX:x y:y];
return self;
}
/// 打印
- (void)printInfo
{
NSLog(@"原始点:(%.2f, %.2f) 中心点:(%.2f, %.2f) 宽(%.2f) 高(%.2f)",
[_point x], [_point y], [_center x], [_center y], _width, _height);
}
@end
// 主函数main.m
#import <Foundation/Foundation.h>
#import "XYPoint.h"
#import "Rectangle.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 创建XYPoint类型的对象叫point(原始点),并初始化;
XYPoint *point = [[XYPoint alloc] initWithX:10 y:20];
// 创建Rectangle类型的对象叫rect;
Rectangle *rect = [[Rectangle alloc] init];
// 给rect对象赋值;
[rect setWidth:60 height:100 point:point];
// 创建XYPoint类型的对象叫center(中心点),并初始化,初始化的x坐标是通过给rect发送centerX消息,y坐标是通过给rect发送centerY消息;
XYPoint *center = [[XYPoint alloc] initWithX:[rect centerX] y:[rect centerY]];
// 打印周长,面积,中心点
NSLog(@"周长:%d,面积:%d,中心点:(%d, %d)",
[rect perimeter], [rect area], [center x], [center y]);
}
return 0;
}
// 更改后的主函数main.m
#import <Foundation/Foundation.h>
#import "XYPoint.h"
#import "Rectangle.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
XYPoint *point1 = [[XYPoint alloc] initWithX:10 y:10];
Rectangle *rect1 = [[Rectangle alloc] initWithPoint:point1 height:30 width:20];
[rect1 printInfo];
}
return 0;
}
// 运行结果