黑马程序员技术交流社区

标题: 关于self的问题 [打印本页]

作者: 大坏蛋    时间: 2014-7-20 23:50
标题: 关于self的问题

问题是代码里的红色文字,请大家耐心看看,帮我解决一下内心的疑惑
   
/*5.设计一个类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进行开根)*/



#import <Foundation/Foundation.h>
#import <math.h>
@interface Point2D : NSObject
{
    double _x;
    double _y;
}

- (double)x;
- (void)setX : (double)x;

- (double)y;
- (void)setY : (double)y;

- (void)setX :(double)x andY:(double)y ;

- (double)distanceWithOther :(Point2D *)p2;

+ (double)distanceBetweenP1 :(Point2D *)p1 andP2:(Point2D *)p2;
@end


@implementation Point2D

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

- (double)y
{
    return _y;

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

- (void)setX :(double)x andY:(double)y
{

    [self setX:x];
    [self setY:y];

}

- (double)distanceWithOther :(Point2D *)p2
{
    Point2D *l =[Point2D new];
    return [Point2D distanceBetweenP1 :l andP2 :p2 ];
/* 或者 return [Point2D distanceBetweenP1 :self  andP2 :p2 ];
   以上两种方式都正确   
   第一种方式 很明显l是个对象   
   第二种方式 使用self 是 Point2D这个类调用distanceBetweenP1: andP2: 这个方法 那么self指向了类  
   那self到底指向谁才对呢  难道说Point2D这个类本身又是自己的对象呢?
   
*/
}

+ (double)distanceBetweenP1 :(Point2D *)p1 andP2:(Point2D *)p2/*根据这个方法可见 很明显第一个参数应该是个对象 可什么self指向类却不报错     
    一定是我没有理解透彻self 求大家帮帮我吧
*/

{

    double m = [p1 x] - [p2 x];
    double n = [p1 y] - [p2 y];
    return sqrt(pow(m,2) + pow(n,2));

}
@end

int main ()
{
    Point2D *p1 = [Point2D new];
    [p1 setX:5 andY:5];
    Point2D *p2 = [Point2D new];
    [p2 setX:12 andY:10];

    double d1 = [p1 distanceWithOther:p2];

    double d2 = [Point2D distanceBetweenP1:p1 andP2:p2];

    NSLog(@"d1=%f,d2=%f",d1,d2);


    return 0;
}



作者: 大坏蛋    时间: 2014-7-20 23:51
怎出来表情了  表情是 冒号
作者: istream    时间: 2014-7-21 00:02
这个排版格式估计没有几个人会看你的代码
作者: 大坏蛋    时间: 2014-7-21 00:06
istream 发表于 2014-7-21 00:02
这个排版格式估计没有几个人会看你的代码

这个问题 说不清楚只好贴代码了   我好像理解错了  现在明白了
作者: 阳光地带    时间: 2014-7-21 00:07
编辑问题的时候可以插入代码的。
作者: 爱情路13号    时间: 2014-7-21 00:14
谁调用就是指谁啊。把这句话放心上




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2