OC第二讲成员变量可见度与方法——复合

来源:互联网 发布:godaddy域名绑定ip 编辑:程序博客网 时间:2024/05/18 12:37

第二题  矩形计算

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


//  创建复合类Rectangle(矩形)

#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;}

//  运行结果




0 0
原创粉丝点击