iT邦幫忙

0

iOS APP 開發 OC 第六天, 類&對象

  • 分享至 

  • xImage
  •  
tags: OC 30 day

什麼是對象?

對象是現實生活中的一個具體存在。看得見,摸得著。拿過來就可以直接使用

什麼是類?

物以類聚,人以群分。
類是對一群有相同特徵或者行為的事物的一個統稱。抽象的。不能直接使用。

案例

食物是類還是對象?
水果是類還是對象?
蘋果是類還是對象?
我早上吃的那一個蘋果?


類和對象的關係

類是模板,類的對象是根據這個模板創建出來的。
類模板中有什麼,對象就有什麼,絕不可能多,也絕不可能少。

如何設計一個類

類的作用: 用來描述一群具有相同特徵行為的事物。
設計類的三要素:

  1. 類的名字,你要描述這個類事物叫什麼名字。
  2. 這類事物具有相同的特徵,這類事物擁有什麼。
  3. 這類事物具有共同的行為。這類事物能做什麼?

如何找到類

名詞提煉法:分析整個業務流程,分析出現了哪些名詞,這些名詞就是你要找到的類。

先有類還是先有對象?

從現實的角度:一定是先有對象再有類。
從程式碼的角度:一定是先有類才有對象。


如何定義類

  1. 類的三要素
  2. 定義類的語法
    a. 位置:直接寫在源文件之中,不要寫在main函數之中。
    b. 語法:
    類的定義分為兩個部分。
    -> 類的聲明
@interface 類名:NSObject
{
這類事物具有的共同特徵,將他們定義為變量。
}
功能就是一個方法,將方法的聲明寫在這裡。
@end

-> 類的實現

@implementation 類名
將方法的實現寫在這裡
@end
  1. 幾點注意
    a. 類必須要有聲明和實現。
    b. 類名用你棉樹的事物名稱來命名就可以了,類名的每第一個單字的首字母必須要以大寫開頭。
    c. NSObject是什麼意思,先不用管,之後會補充。
    d. 用類表示著類事物的共同特中的變量必須定義在@interface的大括弧之中。
    e. 定義在大括弧之中用來表示著類事物的共同的特徵的變量我們叫做,屬性 成員變量 實例變量 字段.....
    f. 為類定義屬性名時,屬性的名稱一定要_為開頭。
    示範
@interface Person : NSObject
{
    NSString *_name;
    int _age;
    float _height;
}
@end
@implementation Person

@end

如何創建一個類的對象呢?

語法:
類名 *對象名 = [類名 new];

Person *p1 = [Person new];

那麼,這句話是什麼意思呢?

根據Person 這個類的模板,創建了一格對象的名字叫做p1
p1對象的特點:
-> 可以直接使用
-> 類中定義的東西,這個對象也有,不會多也不會少。

如何使用對象?

如何訪問對象的屬性:

  1. 默認情況下,對象的屬性是不允許外界直接訪問的。如果允許對象的屬性可以被外界訪問,那麼就在聲明屬性的地方嫁入@public的關鍵字。
  2. 訪問對象的屬性的方式
    對象名->屬性名 = 值
    對象名->屬性名;

(*對象名).屬性名;

平時使用的時候,使用->

練習

寫一位學生的類, 屬性: 姓名 年齡 語文成績 英文成績

@interface Student : NSObject
{
    @public
    NSString *_name;
    int _age;
    int _lang;
    int _math;
    int _english;
}
@end
@implementation Student
@end
int main(int argc, char * argv[]) {
    Student *s1 = [Student new];
    s1->_name = @"小花";
    s1->_age = 17;
    s1->_lang = 100;
    s1->_math = 99;
    s1->_english = 98;
    
    NSLog(@"s1對象的姓名是%@,年齡是 %d,語文是%d,數學是%d,英文是%d",
          s1->_name,
          s1->_age,
          s1->_lang,
          s1->_math,
          s1->_english);
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言