1. 程式人生 > >黑馬程式設計師——Object-C的基礎學習——語言特性

黑馬程式設計師——Object-C的基礎學習——語言特性

lt;a target=_blank href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

初衷:
      生平第一次寫技術部落格,真有點無所適從。關於Object-C,目前正打算開始學習,部落格的寫作,也權當日常的學習筆記,希望在不斷的積累過程中提高自己。在部落格這個平臺上,也讓自己不忘自己對於技術的初衷——Mide Wide Open。

tag1:Object-C和C(Objective-C的核心是C語言的,並基於C語言實現OOP的一些特性。Objective-C是對C語言的擴充套件)

與Object-C相比:

1.C是面向過程,Object是面向物件的;

2.陣列、函式、指標、結構、聯合的用法和 C 一樣;

3.迴圈語句(do while、while、for)、條件語句( if 語句(if-else、複合判斷條件等)、switch 語句 )、
Boolean(YES NO)、條件運算子、goto 語句、空語句、逗號表示式、sizeof 運算子、命令列引數、位操作都
和 C 一樣;

4.BOOL使用8位儲存,YES定義為1,NO定義為0,大於1不為YES,跟標準C不同。 若不小心將一個長於1位元組的整型值賦給BOOL,則只擷取低八位
Obejective-C中1不等於1,絕對不要將BOOL值和YES比較 。

tag2:Cocoa

Cocoa組成部分有:(1)Foundation框架(有很多有用的,面向資料的低階類和資料結構);(2)Application Kit(也稱AppKit)框架(包含了所有的使用者介面物件和高階類,例如NS……)(3)還有一個支援框架的套件,包括Core Animation和Core Image。 

tag3.Objective-C常見語法說明:

1 標頭檔案引用使用 #import “檔名”或者 #import <檔名>的形式以確保每個標頭檔案僅被包含一次; 
2 類宣告以 @interface 類名:繼承類 開頭,以 @end 結尾,類實現以@implementation 類名 開頭,以 @end 結尾; 
3 例項方法,即成員方法,在方法名前面新增一個減號(-);類方法,在方法名前面新增一個加號(+); 
4 類方法的呼叫格式為 [類名 類方法],成員方法呼叫格式為 [例項名 例項方 法],這種模式在ObjC中被稱為訊息機制,[物件 訊息]即給物件傳送了一個訊息,產生的 效果就是該物件呼叫了該類中定義的對應的例項方法。

tag4.下面通過一個例子比較一下OC和C++

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

Object-C:

#import <Foundation/Foundation.h> 
@interface Student : NSObject

{     //Objective-c的所有類都繼承於NSObject 

     // 成員屬性 
     NSString *name; 
     NSString *number; 



//在Objective-C 2.0引入了屬性合成,相當於之前的get/set方法 

@property (nonatomic, copy) NSString *name; 

@property (nonatomic, copy) NSString *number; 

    // 類方法 

+ (NSString*)printName; 

@end 


Print類.m檔案(實現檔案) 
#import "Print.h" 
@implementation Student
@synthesize name; 
@synthesize number; 


// 類方法 
+ (NSString*)printName 



    return (@"MikyLin'sBlog"); 


@end 


Print 類使用 
#import "Print.h" 
int main(int argc, const char *argv[]) 


    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    return NSApplicationMain(argc, (const char **)argv); 

    // 類方法呼叫 

    NSLog(@"PrintName = /"%@/"", [Student printName]); 

    // 初始化 

    Student* student1 = [Student alloc] init]; 

    // 設定器呼叫 

    [student1 setName:@"MikyLin"]; 

    [Student1 setNumber:@"001"]; 

    // 獲取器呼叫 

    NSLog(@"Name = /"%@/"", [student1 name]); 

    NSLog(@"Number = /"%@/"", [student1 number]); 

    [pool drain]; 



    return 0; 



執行結果:

ClassName = "MikyLin'sBlog" 

Name=MikyLin

Number=001

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

C++:

#include<iostream>
using namespace std;
class  Student
{
        String name;
        String  number;
public:
        Student(String a,String b);

        String printName();
       
}

Student::Student(String a,String b)
{
     name=a;
     number=b;
}
String Student::printName()
{
   return "MikyLin'sBlog";
}

void main()
{
String temp1,temp2;
temp1=Miky;

temp2="001"
Student  student1(temp1,temp2);

printf("ClassName=%s\n",student1.printName() );    

printf("Name=%s\n",student1.name);

printf("Number=%s\n",student1.number);
}