วันจันทร์ที่ 18 เมษายน พ.ศ. 2554

การสร้าง Class และ Object ในภาษา Objective C









     มาดูวิธีการสร้าง Class และ Object ในภาษา Objective C กันดีกว่า










การสร้าง Class ในภาษา Objective C
     ส่วนประกอบจะแบ่งออกเป็น 3 ส่วนคือ

1. ส่วนของ Interface
     เปรียบเสมือนหัวของ class ไว้สำหรับประกาศชื่อ Class และส่วนประกอบของ (method และ variable) Class รวมถึงการกำหนด property เบื้องต้นของตัวแปรใน Class

ตัวอย่างการประกาศ Class ชื่อ BasicCalc

@interface BasicCalc : NSObject {
NSInteger num1,num2;
NSInteger ans;
}

//ประกาศ prooerty ให้กับตัวแปรที่ประกาศอยู่ทางด้านบน 
@property (nonatomic,assign) NSInteger num1;
@property (nonatomic,assign) NSInteger num2;
@property (nonatomic,assign) NSInteger ans;

//ประกาศ prototype method ให้กับ class เพื่อนำไป Implement ต่อ
-(void) setNum1:(NSInteger)_num1 andNum2:(NSInteger)_num2;
-(void) plus;
-(void) minus;
-(void) showAns;
@end

2. ส่วนของการ Implementation
    เป็นส่วนที่ไว้สำหรับเขียนการทำงานของ method และกำหนด getter และ setter ของตัวแปร

ตัวอย่างการ Implementation ของ Class ชื่อ BasicCalc

@implementation BasicCalc

//ส่วนนี้สำหรับการประกาศ getter setter เมื่อใช้คำสั่ง synthesize จะเป็นการประกาศ getter setter เองโดยยึด property ในส่วนของ Interface
@synthesize num1;
@synthesize num2;
@synthesize ans;

//ส่วนสำหรับ Implement Method ที่ประกาศไว้ในส่วนของ Interface
-(void) setNum1:(NSInteger)_num1 andNum2:(NSInteger)_num2
{
self.num1 = _num1;
self.num2 = _num2;
}

-(void) plus
{
self.ans = self.num1+self.num2;
}

-(void) minus
{
self.ans = self.num1-self.num2;
}

-(void) showAns
{
NSLog(@"Ans = %d",self.ans);
}

@end

3.ส่วนของการประกาศ Object และเรียก Object ให้ทำงาน
    เป็นส่วนที่ใช้สำหรับประกาศ Object จาก Class ที่กำหนดขึ้น

ตัวอย่างการนำไปใช้ในฟังก์ชัน main

//ประกาศ Object ฬนรูปแบบของ Pointer โดยการ alloc (จองพื้นที่) ตามด้วยการ init (สร้าง Object) ตามด้วยการ retain (การให้ pointer ชี้ไปที่ Object ที่สร้างขึ้น)
BasicCalc *basicCalc = [[[BasicCalc alloc]init]retain];


//ประกาศตัวแปรเพื่อนำไปใช้งาน
NSInteger num1=3,num2=4;

//เรียกใช้งาน method ต่างๆ ใน Object basicCalc
[basicCalc setNum1:num1 andNum2:num2];
[basicCalc plus];
[basicCalc showAns];
[basicCalc minus];
[basicCalc showAns];

//ให้ pointer ทำการปล่อย Object ทิ้งเนื่องจากไม่มีการใช้งานแล้ว (เมื่อ release แล้ว retainCount ใน Object จะลดลง และเมื่อเป็น 0 แล้วจะทำการคืนพื้นที่ให้เอง)
[basicCalc release];

หวังว่าจะมีประโยชน์ไม่มากก็น้อยนะครับ ^^

1 ความคิดเห็น: