Objective – C 노트 클래스, 객체 및 메서드

9846 단어
대상은 하나의 물건이다.대상을 대상으로 하는 프로그램 설계는 하나의 물건과 당신이 그것을 하고 싶은 일로 볼 수 있다.이것은 C 언어와 달리 C 언어를 통상적으로 과정성 언어라고 부른다.C 언어에서는 일반적으로 무엇을 해야 할지 먼저 고려한 다음에 대상에게 관심을 가지는데 이것은 거의 항상 면이 서로 닮은 사고 과정과 상반된다.
대상을 향한 용어에서, 당신의 차는 자동차의 실례입니다.car는 클래스의 이름입니다. 이 실례는 클래스에서 만든 것입니다.따라서 새 자동차를 만들 때마다 자동차 종류의 새로운 실례가 만들어지고 자동차의 모든 실례를 하나의 대상이라고 부른다.
대상
객체를 사용한 작업
너의 자동차
운전하다.
힘을 내다
세차하다
수리하다
 
모든 실례나 대상은 제조업체로부터 얻은 원시적 특성에 대한 정보를 포함할 뿐만 아니라, 이러한 특성은 동적으로 바뀔 수 있는 현재 특성도 포함한다.네가 자동차를 운전할 때, 우체통의 기름이 점점 다 소모되고, 자동차는 점점 더러워지고, 타이어도 점점 마모된다.
객체 사용 방법은 객체의 상태에 영향을 줄 수 있습니다.만약 방법이'자동차에 기름을 넣는 것'이라면, 이 방법을 집행한 후 자동차의 메일박스가 가득 채워질 것이다.이 방법은 자동차 우체통의 상태에 영향을 주었다.
여기서 관건적인 개념은 대상은 유형의 독특한 표현이고 모든 대상은 통상적으로 이 대상에 대해 사유라고 말하는 정보를 포함한다.방법은 이 데이터를 접근하고 바꾸는 수단을 제공한다.
 
    [ClassOrInstance method ];
이 문장에서 왼쪽 방괄호 뒤에 클래스의 이름이나 실례 이름을 따라가야 한다. 그 뒤에는 한 개 이상의 빈칸이 있고, 빈칸 뒤에는 실행할 방법이 있다.마지막으로 오른쪽 괄호와 분호를 사용하여 끝냅니다.어떤 작업을 수행하기 위해 클래스나 실례를 요청할 때, 메시지를 보내는 것이다. 메시지를 받는 사람을 수신자라고 부른다.따라서 앞에서 설명한 일반 형식을 나타낼 수 있는 다른 방법이 있습니다.
    [ receiver message ];
이전 목록을 돌이켜보면, 이 새 문법을 사용해서 모든 방법을 작성합니다.그 전에 당신은 새 차를 한 대 얻어서 제조 공장에 가서 한 대를 구매해야 합니다.
    yourCar = [Car new]; get a new car//이 책은 정말 상세하게 썼어요. 바로 new 대상이 아닙니까!바로 Your Car가 지금 당신의 차입니다. 당신은 그것으로 자동차의 실례를 인용할 수 있습니다. 
새 차가 있으면 새 차의 방법이 있어야 하기 때문에 이 새로운 방법을 제조 공장 방법이라고 할 수 있다. 또는 이런 방법이라고 할 수 있다.
    [yourCar prep];      get it ready for first-time use
    [yourCar drive];     drive your car
    [yourCar wash];     wash your car
    [yourCar getGas];   put gas in your car if you need it
    [yourCar service];   service your car
 
    [yourCar topDown];  if it's a convertible
    [yourCar topUp];    
    currentMileage = [yourCar odometer];
마지막 예시에서 보여준 실례적인 방법은 현재 주행 거리, 즉 이정표 (odometer) 를 통해 정보를 되돌려줄 수 있다.이 정보는 프로그램의 currentMileage 변수에 저장됩니다.
여기에는 특정 값을 메소드 매개 변수로 사용하는 예가 있는데 메소드 직접 호출과는 다릅니다.
  [yourCar setSpeed:55];  set the speed to 55 mph
네 언니 슈는 자신의 자동차 실례에 대해 같은 방법을 사용할 수 있다.
  [suesCar drive];
  [suesCar wash];
  [suesCar getGas];
같은 방법을 서로 다른 대상에 응용하는 것은 대상을 대상으로 하는 프로그램 설계 배후의 주요 이념 중의 하나이다.
 
분수를 처리하는 Objective-C 클래스
가령 점수를 처리하는 프로그램을 작성하려면 더하기, 빼기, 곱하기, 나누기 등의 연산을 처리해야 할 수도 있다.Fraction 클래스가 생성되었습니다.
 1 //
 2 //  Fraction.h
 3 //
 4 //  Created by  on 15/11/13.
 5 //  Copyright © 2015  . All rights reserved.
 6 // interface   
 7 
 8 #import <Foundation/Foundation.h>
 9 
10 @interface Fraction : NSObject
11 
12 -(void) print;
13 -(void) setNumerator :(int) n;
14 -(void) setDenominator:(int) d;
15 -(int) numberator;
16 -(int) denominator;
17 
18 @end
 1 //
 2 //  Fraction.m
 3 //  HelloWorld
 4 //
 5 //  Created by  on 15/11/13.
 6 //  Copyright © 2015  . All rights reserved.
 7 //
 8 
 9 #import "Fraction.h"
10 
11 @implementation Fraction
12 {
13     int numberator;
14     int denominator;
15 }
16 -(void) print{
17     NSLog(@"%i/%i",numberator,denominator);
18 }
19 -(void) setNumerator:(int)n{
20     numberator = n;
21 }
22 -(void) setDenominator:(int)d{
23     denominator = d;
24 }
25 -(int) numberator
26 {
27     return numberator;
28 }
29 -(int) denominator
30 {
31     return denominator;
32 }
33 @end
34 //----program   ----
35 #import <Foundation/Foundation.h>
36 int main (int argc,const char * argv[])
37 {
38     @autoreleasepool {
39         Fraction *myFraction;
40         
41         //         alloc      init   
42         myFraction = [[Fraction alloc] init];
43         //myFraction = [myFraction init];
44         
45         
46         //Fraction *fact = [[Fraction alloc] init];
47         
48         //     1/3
49         [myFraction setNumerator:1];
50         [myFraction setDenominator:3];
51         
52         //        [fact setDenominator:3];
53         //        [fact setNumerator:7];
54         
55         //          
56         NSLog(@"The value of myFraction is: %i/%i",[myFraction numberator],[myFraction denominator]);
57         //[myFraction print];
58         //
59         //        NSLog(@"Second fraction is:");
60         //        [fact print];
61     }
62     return 0;
63 }

@interface 부분에서 클래스와 클래스를 설명하는 방법입니다. @implementation 부분은 데이터(클래스 대상의 실력 변수에 저장된 데이터)를 설명하고 인터페이스에서 방법을 설명하는 실례 코드를 실현하는 데 사용된다.프로그램 부분의 프로그램 코드는 프로그램의 예상 목적을 실현했다.
 
@interface 부분
일반 형식은 다음과 같습니다.
        @interface NewClassName: ParentClassName
          propertyAndMethodDeclarations;
        @end
약정에 따르면, 유명은 일반적으로 대문자로 시작한다.
  • 변수 이름의 이름 규칙: 이름은 문자나 밑줄()로 표시해야 합니다.처음에는 (대문자 또는 소문자) 자모, 밑줄 또는 0~9 사이의 숫자를 조합할 수 있다.
  • 일부 이름은 변수 이름에 사용할 수 없습니다. 예를 들어 int입니다.Objective-C 컴파일러에 특별한 의미를 가지기 때문에 보존 이름이나 보존 글자라고 합니다.(시스템 키워드)
  • Objective-C의 대소문자는 차이가 있는데 변수 이름인sum,Sum,SUM은 모두 서로 다른 변수를 나타낸다.

  • 클래스 방법 및 인스턴스 방법
    -(void) print;
    첫 번째 음수(-)는 인스턴스 방법인 Objective-C 컴파일러에 알립니다.그 밖에 또 다른 선택은 바로 적정(+)이다. 이것은 유형을 나타내는 방법이다.클래스 방법은 클래스 자체에 대해 어떤 조작을 실행하는 방법입니다. 예를 들어, 클래스를 만드는 새로운 실례입니다.
    1. 반환값
    -(int) currentAge;
    새 메서드를 선언할 때는 OC 컴파일러에게 메서드에 반환 값이 있는지 여부를 알려야 합니다.괄호 안에 방법의 반환값 형식이 있습니다!이 메서드는currentAge라는 인스턴스 메서드를 지정하면 정수 값을 반환합니다.
    예: 더블 정밀도 값,void는 되돌아오지 않는 형식을 나타냅니다.
    2. 방법의 매개 변수
    -(void) setNumberator: (int) n;
    이것은 되돌아오는 값 형식이 없는 실례적인 방법입니다. int는 인자 형식을 가리키는 데 사용됩니다.setNumberator의 매개변수 이름은 n입니다.이 명칭은 임의로 할 수 있다.
     
    @implementation 섹션
    @implementation 부분은 @interface 부분에 설명하는 방법의 실례 코드를 포함하고 클래스 대상에 저장된 데이터 형식을 지정해야 합니다.(인터페이스 클래스와 실현 클래스)
    @implementation 섹션의 일반 형식은 다음과 같습니다.
                        @implementation NewClassName
                        {
                          memberDeclarations;
                        }
                          methodDefinitions;
                        @end
    memberDeclarations 부분에서 어떤 종류의 데이터가 Fraction에 저장될지, 그리고 이 데이터 형식의 이름을 지정합니다.
     
    프로그램 부분
    프로그램 부분에는 특정 문제를 해결하는 코드가 포함되어 있으며 필요하면 여러 파일을 뛰어넘을 수 있습니다.그중에main이라는 함수가 있어야 하는데, 통상적으로 프로그램이 실행되기 시작하는 곳이다.
     
    Fraction *myFraction;
    이 행은 myFraction이 Fraction 유형의 객체임을 나타냅니다.
    myFraction = [[Fraction alloc] init];
    alloc는 allocate의 줄임말입니다. 새 점수에 메모리 공간을 분배해야 하기 때문입니다.
    init 방법은 클래스의 실례 변수를 초기화하는 데 사용됩니다.init 메시지를 my Fraction에 보내고 있음을 주의하십시오.즉, 여기서 특수한 Fraction 대상을 초기화하기 때문에 클래스에 보내지 않고 클래스에 보내는 실례가 된다.
    init 방법도 초기화된 대상을 되돌려줍니다.반환 값을 Fraction의 변수 myFraction에 저장합니다.
    다시 Fraction*my Fraction으로 돌아가기;
    myFraction 앞에 있는 별표(*)는 myFraction이 Fraction 객체의 참조(또는 포인터)임을 나타냅니다.변수 myFraction은 실제적으로 Fraction의 데이터를 저장하지 않고 인용(사실은 메모리 주소)을 저장하여 대상 데이터가 메모리에 있는 위치를 나타낸다.
     
     
    됐다!다른 것은 값을 설정하는 방법(setter)과 값을 얻는 방법(getter)이므로 상세하게 설명하지 않겠습니다. 잘 이해할 것입니다.

    좋은 웹페이지 즐겨찾기