標籤:style class blog code http ext
一、聲明類介面步驟:
1、聲明一個類介面,使用@interfacekeyword加上類名稱。
2、用 { 執行個體變數 } 來定義各種資料成員。
3、方法聲明,採用中綴符文法聲明一個c函數,用到了冒號 : 。
二、聲明類介面執行個體:
//聲明圓形circle類介面@interface Circle : NSObject{ ShapeColor fillColor;//每次建立新的Circle對象後,對象中都包含這兩個元素——類的執行個體變數 ShapeRect bounds;}//指定執行個體變數-(void) setFillColor: (ShapeColor) fillColor;//方法聲明、中綴符-(void) setBounds: (ShapeRect) bounds;-(void) draw;@end //Circle 完畢類的聲明
三、實作類別步驟
1、用[email protected]加上類名稱
2、實作類別中聲明的方法,編寫方法體 { 方法體 } 。
四、實作類別執行個體
@implementation Circle//類實現-(void) setFillColor: (ShapeColor) c{ fillColor = c;}//setFillColor-(void) setBounds: (ShapeRect) b{ bounds = b;}//setbounds-(void) draw{ NSLog(@"drawing a circle at(%d %d %d %d) in %@", bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor) );}//draw@end//Circle 完畢類的實現
五、案例練習——幾何圖形的繪製和填充顏色
//// main.m// Shapes-Object//// Created by jason on 14-6-10.// Copyright (c) 2014年 JasonApp. All rights reserved.//#import <Foundation/Foundation.h>//定義形狀的不同顏色typedef enum{ kRedColor, kGreenColor, kBlueColor} ShapeColor;//定義一個矩形來指定螢幕上的繪製地區typedef struct{ int x,y,width,height;} ShapeRect;//負責轉換傳入的顏色值,並返回NSString字面量NSString *colorName(ShapeColor color){ switch (color) { case kRedColor: return @"Red"; break; case kGreenColor: return @"Green"; break; case kBlueColor: return @"Blue"; break; } return @"no clue";}//colorName//聲明圓形circle類介面@interface Circle : NSObject{ ShapeColor fillColor;//每次建立新的Circle對象後,對象中都包含這兩個元素——類的執行個體變數 ShapeRect bounds;}//指定執行個體變數-(void) setFillColor: (ShapeColor) fillColor;//方法聲明、中綴符-(void) setBounds: (ShapeRect) bounds;-(void) draw;@end //Circle 完畢類的聲明@implementation Circle//類實現-(void) setFillColor: (ShapeColor) c{ fillColor = c;}//setFillColor-(void) setBounds: (ShapeRect) b{ bounds = b;}//setbounds-(void) draw{ NSLog(@"drawing a circle at(%d %d %d %d) in %@", bounds.x,bounds.y,bounds.width,bounds.height,colorName(fillColor) );}//draw@end//Circle 完畢類的實現//定義矩形@interface Rectangle : NSObject{ShapeColorfillColor;ShapeRectbounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // Rectangle@implementation Rectangle- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing a rectangle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // Rectangle//定義OblateSphereoids@interface OblateSphereoid : NSObject{ShapeColorfillColor;ShapeRectbounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // OblateSphereoid@implementation OblateSphereoid- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing an egg at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // OblateSphereoid//定義三角形@interface Triangle : NSObject{ShapeColorfillColor;ShapeRectbounds;}- (void) setFillColor: (ShapeColor) fillColor;- (void) setBounds: (ShapeRect) bounds;- (void) draw;@end // Triangle@implementation Triangle- (void) setFillColor: (ShapeColor) c{fillColor = c;} // setFillColor- (void) setBounds: (ShapeRect) b{bounds = b;} // setBounds- (void) draw{NSLog (@"drawing a triangle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor));} // draw@end // Triangle//畫形狀void drawShapes (id shapes[], int count){ for (int i = 0; i < count; i++) { id shape = shapes[i]; [shape draw]; }}//drawShapesint main(int argc, const char * argv[]){ id shapes[4];ShapeRect rect0 = { 0, 0, 10, 30 };shapes[0] = [Circle new];[shapes[0] setBounds: rect0];[shapes[0] setFillColor: kRedColor];ShapeRect rect1 = { 30, 40, 50, 60 };shapes[1] = [Rectangle new];[shapes[1] setBounds: rect1];[shapes[1] setFillColor: kGreenColor];ShapeRect rect2 = { 15, 19, 37, 29 };shapes[2] = [OblateSphereoid new];[shapes[2] setBounds: rect2];[shapes[2] setFillColor: kBlueColor]; ShapeRect rect3 = { 47, 32, 80, 50 };shapes[3] = [Triangle new];[shapes[3] setBounds: rect3];[shapes[3] setFillColor: kRedColor];drawShapes (shapes, 4);return (0);}
六、小結
1、過程式編程——“函數第一,資料第二”
2、OOP——“資料第一,函數第二”
3、“開放/關閉原則”——軟體實體應該對拓展開放、對改動關閉
4、objective-c中不存在private方法
5、objective-c執行時負責執行重要的任務,比方對象發送訊息和傳遞參數等,以支援應用程式的執行
6、執行個體化對象——向對應的類發送new訊息來建立對象。