【《Objective-C基礎教程 》筆記ch03】(四)OC中的OOP

來源:互聯網
上載者:User

標籤: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訊息來建立對象。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.