您的位置:首页 > 移动开发 > Objective-C

[Objective-C] 类、对象和方法

2015-05-30 14:22 686 查看
面向对象的重要概念即 是你想对对象做的事情。

C语言中通常是考虑做什么,然后关注对象。而面向对象的语言则是:你有一辆汽车,它就是你的对象,你的汽车是汽车的实例。 即 Car类创造了对象yourCar 你的汽车是汽车的一个实例;

类: programer可以自建,可用来创造对象 可继承于父类 ; (NSObjec是一个根类 我们定义的类属于其派生类, 后续继承部分将会提到。)

对象: 假设 Car 是已建类名, 则 Car* yourCar;
yourCar=[[Car alloc] init]; 则创建了一个汽车实例并初始化, 申请内存并init不再赘述;

方法: 使用于对象、类, (方法是类或对象的行为特征的抽象,也是类或对象的最重要组成部分) 有类方法和实例方法两种;

@interface 部分

接口部分,告知OC编译器该类来自何处, 按照约定,类名以大写字母开头,有助于人阅读你的程序时区分类名和其他变量;

@implementation 部分

实现部分, 对接口声明的类进行定义, 与@interface 部分的名称相同,在这里给出实际的代码。

program 部分

该部分包含解决特定问题的代码, 如果有必要,可以跨越多个文件。 值得注意的是: 必须在其中的某个地方有一个 main 函数。

----------------------

tip : 类方法和实例方法: 开头为(-)通知OC编译器这是一个实例方法,类方法是对于类本身执行某些操作的方法,例如,创建类的新实例;开头为(+)的为实例方法;

声明一个方法 - (void) setNumber: (int ) n;

----------------------

做一个简单的求矩形周长 面积的程序;

Rectangle.h 接口部分

#import "XYPoint.h"
@interface Rectangle : NSObject
@property int width,height;
-(XYPoint *) origin;
-(void) setOrigin:(XYPoint *)pt;
-(void) setWidth:(int)w andHeight:(int) h;
-(int ) area;
-(int ) perimeter;
@end


Rectangle.m 实现部分:

#import "Rectangle.h"
@implementation Rectangle
{
XYPoint* origin;
}
@synthesize width,height;
-(void) setWidth:(int) w andHeight: (int) h
{
width =w;
height=h;
}
-(void) setOrigin:(XYPoint *)pt
{
if(!origin)
origin=[[XYPoint alloc]init];
origin.x=pt.x;
origin.y=pt.x;
}
-(int) area
{
return  width*height;
}
-(int ) perimeter
{
return (width+height)*2;
}
-(XYPoint*) origin
{
return origin;
}
@end


XYPoint.h 接口部分

#import <Foundation/Foundation.h>

@interface XYPoint : NSObject
@property int x,y;
-(void) setX:(int)xVal andY: (int) yVal;
@end


XYPoint.m 实现部分

#import "XYPoint.h"

@implementation XYPoint
@synthesize x,y;
-(void) setX:(int) xVal andY:(int) yVal;
{
x=xVal;
y=yVal;
}
@end
接下来是我们最喜欢的main.m部分

#import "Rectangle.h"
#import "XYPoint.h"
int main()
{
@autoreleasepool
{
Rectangle *myRect=[[Rectangle alloc] init];
XYPoint* myPoint=[[XYPoint alloc] init];
[myPoint setX:100 andY:200];
[myRect setWidth:5 andHeight:8];
myRect.origin=myPoint;
NSLog(@"Rectangle w= %i,h= %i",myRect.width,myRect.height);
NSLog(@"Origin at (%i,%i)",myRect.origin.x,myRect.origin.y);
[myPoint setX:50 andY:50];
NSLog(@"area: %i,    周长:%i",[myRect area],[myRect perimeter]);
}
}


运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: