8、黑马程序员-面向对象的综合练习

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、设计一个类Point2D,用来表示二维平面中某个点

1> 属性
* double x
* double y

2> 方法
* 属性相应的set和get方法
* 设计一个对象方法同时设置x和y
* 设计一个对象方法计算跟其他点的距离
* 设计一个类方法计算两个点之间的距离

3> 提示
* C语言的math.h中有个函数:double pow(double n, double m); 计算n的m次方
* C语言的math.h中有个函数:double sqrt(double n); 计算根号n的值(对n进行开根)


二、代码体现

1、声明
#import <Foundation/Foundation.h>

@interface point2D : NSObject

{
    double _x; // x值
    double _y; // y值
}

// x的set和get方法
- (void)setX :(double)x;

- (double)getX;


// y的set和get方法
- (void)setY :(double)y;

- (double)getY;


// 同时设置x y的值
- (void)setX:(double)x andY:(double)y;


// 计算跟其他点的距离

- (double)distanceWithOther:(point2D *)other;


// 计算两个点之间的距离

+ (double)distanceBettwenPoint:(point2D *)point1 andPoint:(point2D *)point2;

@end

2、实现

#import "point2D.h"
#import <math.h>

@implementation point2D

- (void)setX :(double)x
{
    _x=x;
}

- (double)getX
{
    return  _x;
}

- (void)setY :(double)y
{
    _y=y;
}

- (double)getY
{
    return _y;
}

- (void)setX:(double)x andY:(double)y
{
    
    [self setX:x];
    [self setY:y];
    
}

- (double)distanceWithOther:(point2D *)other
{
    
    // x1-x2
    double xDelta=_x-[other getX];
    
    // (x1-x2)的平方
    double xDeltaPF=pow(xDelta, 2);
    
    // y1-y2
    double yDelta=_y-[other getY];
    
    // (y1-y2)的平方
    double yDeltaPF=pow(yDelta, 2);
    
    // 返回距离
    return sqrt(xDeltaPF+yDeltaPF);
    
    
    //调用类方法
    //return [point2D distanceBettwenPoint1:self andPoint:other];
    
}


+ (double)distanceBettwenPoint:(point2D *)point1 andPoint:(point2D *)point2
{
    
    //    // x1-x2
    //    double xDelta=[point1 getX]-[point2 getX];
    //
    //    // (x1-x2)的平方
    //    double xDeltaPF=pow(xDelta, 2);
    //
    //    // y1-y2
    //    double yDelta=[point1 getY]-[point2 getY];
    //
    //    // (y1-y2)的平方
    //    double yDeltaPF=pow(yDelta, 2);
    //
    //    // 返回距离
    //    return sqrt(xDeltaPF+yDeltaPF);
    
    return [point1 distanceWithOther:point2];
    
}

@end

3、测试

#import "point2D.h"

int main(int argc, const char * argv[])
{
    
    @autoreleasepool {
        
        point2D *P1=[point2D new];
        
        [P1 setX:3 andY:4];
        
        point2D *P2=[point2D new];
        
        [P2 setX:6 andY:8];
        
        double d1=[P1 distanceWithOther:P2];
        
        // 计算两点之间的距离
        double d2=[point2D distanceBettwenPoint:P1 andPoint:P2];
        
        NSLog(@"之间的距离为%f",d1);
        
        NSLog(@"两点之间的距离为%f",d2);
        
        // insert code here...
        NSLog(@"Hello, World!");
        
    }
    return 0;
}


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值