A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© muyan091115 中级黑马   /  2016-5-26 23:16  /  519 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设计一个类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进行开根)


一共3个文件

main.m
  1. #import <Foundation/Foundation.h>
  2. #import "JwPoint.h"

  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         
  6.         JwPoint * pointA = [JwPoint new];
  7.         JwPoint * pointB = [JwPoint new];
  8.         [pointA setWithX :1 andY :1];
  9.         [pointB setWithX :2 andY :2];
  10.         
  11.         NSLog(@"\nA点与B点的距离为:%.2lf",[pointA getRangeWithPoint :pointB]);
  12.         NSLog(@"\nA点与B点的距离为:%.2lf",[JwPoint getRangeWithPointA :pointA andPointB :pointB]);
  13.         
  14.     }
  15.     return 0;
  16. }
复制代码

JwPoint.h
  1. #import <Foundation/Foundation.h>

  2. @interface JwPoint : NSObject{
  3.     int _x;
  4.     int _y;
  5. }

  6. - (void)setX :(int)x;
  7. - (int)x;

  8. - (void)setY :(int)y;
  9. - (int)y;

  10. - (void)setWithX :(int)X andY:(int)y;

  11. - (double)getRangeWithPoint :(JwPoint *)point;

  12. + (double)getRangeWithPointA :(JwPoint *)pointA andPointB :(JwPoint *)pointB;

  13. @end
复制代码

JwPoint.m
  1. #import "JwPoint.h"
  2. #import <Math.h>

  3. @implementation JwPoint
  4. - (void)setX :(int)x{
  5.     _x = x;
  6. }
  7. - (int)x{
  8.     return _x;
  9. }

  10. - (void)setY :(int)y{
  11.     _y = y;
  12. }
  13. - (int)y{
  14.     return _y;
  15. }

  16. - (void)setWithX :(int)x andY:(int)y{
  17.     _x = x;
  18.     _y = y;
  19. }

  20. - (double)getRangeWithPoint :(JwPoint *)point{
  21.     return sqrt((double)((_x - point->_x) * (_x - point->_x) + (_y - point->_y) * (_y - point->_y)));
  22. }

  23. + (double)getRangeWithPointA :(JwPoint *)pointA andPointB :(JwPoint *)pointB{
  24.     return sqrt((double)((pointA->_x - pointB->_x) * (pointA->_x - pointB->_x) + (pointA->_y - pointB ->_y) * (pointA->_y - pointB ->_y)));
  25. }
  26. @end
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马