클래스 만들기

프로젝트에 사용할 클래스를 만드는 과정은 어려워 보일 수 있습니다. 그러나 클래스를 만드는 과정에서 보다 어려운 부분은 클래스의 메서드, 속성 및 이벤트를 설계하는 작업입니다.

클래스 설계 전략

객체 지향 설계는 이 분야의 학술적 연구와 실무에 모든 경력을 바친 사람에게도 어렵게 느껴지는 복잡한 주제입니다. 그러나 전문가가 아니더라도 객체 지향 설계를 시작할 수 있는 몇 가지 방법이 제안되어 있습니다.

  1. 이 클래스의 인스턴스가 응용 프로그램에서 수행할 역할에 대해 생각해 봅니다. 일반적으로 객체는 다음과 같은 세 가지 역할 중 하나를 수행합니다.

    • 값 객체: 이러한 객체는 주로 데이터의 컨테이너 역할을 하고, 여러 속성과 적은 수의 메서드(또는 전혀 없음)가 포함되어 있는 경우가 많습니다. 이러한 객체는 일반적으로 명확히 정의된 항목에 대한 코드 표현입니다. 예를 들어 음악 플레이어 응용 프로그램은 실제 노래 한 곡을 나타내는 Song 클래스 및 개념적인 노래 그룹을 나타내는 Playlist 클래스를 포함할 수 있습니다.

    • 표시 객체: 실제로 화면에 나타나는 객체입니다. 예를 들어 드롭 다운 목록 또는 상태 판독과 같은 사용자 인터페이스 요소, 비디오 게임의 내용과 같은 그래픽 요소 등이 있습니다.

    • 응용 프로그램 구조: 이러한 객체는 응용 프로그램에서 수행하는 처리 또는 논리에서 광범위한 지원 역할을 수행합니다. 예를 들어 생물학 시뮬레이션에서 특정 계산을 수행할 객체를 만들거나 음악 플레이어 응용 프로그램에서 다이얼 컨트롤과 볼륨 판독 간에 값의 동기화를 수행하는 객체를 만들 수 있습니다. 비디오 게임에서 규칙을 관리할 수 있는 객체도 이러한 유형에 해당합니다. 또한 드로잉 응용 프로그램에서 저장된 그림을 로드할 클래스를 만들 수도 있습니다.

  2. 클래스에 필요한 특정 기능을 결정합니다. 서로 다른 유형의 기능이 클래스의 여러 메서드로 표현되는 경우가 자주 있습니다.

  3. 클래스를 값 객체로 사용하려는 경우 인스턴스에 포함할 데이터를 결정합니다. 이러한 항목은 속성으로 정의하기에 적합합니다.

  4. 특정 프로젝트 전용으로 클래스를 설계 중이므로 응용 프로그램에 필요한 기능을 제공하는 것이 가장 중요합니다. 다음과 같은 질문의 답을 스스로 찾아보는 것이 도움이 됩니다.

    • 응용 프로그램에서 저장, 추적 및 조작할 정보는 무엇입니까? 이 질문에 대한 답을 찾아보는 것은 필요한 모든 값 객체 및 속성을 식별하는 데 유용합니다.

    • 응용 프로그램에서 수행하는 작업에는 무엇이 있습니까? 예를 들어 응용 프로그램을 처음 로드하는 경우, 특정 버튼을 클릭한 경우, 동영상 재생이 중지된 경우 등에 어떤 일이 발생합니까? 이러한 발생 내용은 메서드로 정의하기에 적합합니다. 해당 "작업"에서 개별 값만 변경하는 경우에는 메서드 대신 속성으로 정의할 수도 있습니다.

    • 지정된 작업이 있는 경우 해당 작업을 수행하기 위해 필요한 정보는 무엇입니까? 이러한 정보는 메서드의 매개 변수가 됩니다.

    • 응용 프로그램에서 작업을 진행할 때 응용 프로그램의 다른 부분에 전달해야 할 클래스의 변경 내용은 무엇입니까? 이러한 변경 내용은 이벤트로 정의하기에 적합합니다.

  5. 추가하려는 일부 기능은 정의되어 있지 않지만 필요한 객체와 유사한 기존 객체가 있습니까? 그렇다면 하위 클래스를 만드는 것이 좋습니다. 하위 클래스는 클래스 자체 기능을 모두 정의하기 보다는 기존 클래스의 기능을 기반으로 하는 클래스입니다. 예를 들어 화면에서 시각적 객체로 표시될 클래스를 만들려는 경우 기존 표시 객체의 비헤이비어를 클래스에 대한 기준으로 사용합니다. 이 경우, 기본 클래스는 MovieClip 또는 Sprite 같은 표시 객체이며 사용자 정의 클래스는 기본 클래스를 확장합니다.

클래스의 코드 작성

클래스 설계 계획이 있는 경우 또는 최소한 클래스에서 저장할 정보 및 클래스에서 수행할 작업을 생각해 둔 경우 클래스를 작성하는 실제 구문은 매우 간단합니다.

ActionScript 클래스를 만드는 최소 단계는 다음과 같습니다.

  1. ActionScript 텍스트 편집기 프로그램에서 새 텍스트 문서를 엽니다.

  2. class 문을 입력하여 클래스 이름을 정의합니다. class 문을 추가하려면 public class를 입력한 다음 클래스 이름을 입력합니다. 클래스 내용(메서드 및 속성 정의)을 둘러싸는 열기 및 닫기 중괄호를 추가합니다. 예를 들면 다음과 같습니다.

    public class MyClass 
    { 
    }

    public은 다른 모든 코드에서 클래스에 액세스할 수 있다는 것을 나타냅니다. 다른 예제에 대한 자세한 내용은 액세스 제어 네임스페이스 특성을 참조하십시오.

  3. package 문을 입력하여 클래스를 포함하는 패키지의 이름을 지정합니다. 이 구문에서는 package 다음에 전체 패키지 이름이 사용되고 class 문 블록을 둘러싸는 열기 및 닫기 중괄호가 사용됩니다. 예를 들어 이전 단계의 코드를 다음과 같이 변경합니다.

    package mypackage 
    { 
        public class MyClass 
        { 
        } 
    }
  4. 클래스 본문 내에서 var 문을 사용하여 클래스에 각 속성을 정의합니다. 구문은 public 수정자를 추가하여 모든 변수를 선언할 때 사용한 구문과 동일합니다. 예를 들어 클래스 정의의 여는 중괄호와 닫는 중괄호 사이에 다음 줄을 추가하면 textProperty, numericPropertydateProperty 속성이 만들어집니다.

    public var textProperty:String = "some default value"; 
    public var numericProperty:Number = 17; 
    public var dateProperty:Date;
  5. 함수를 정의하는 데 사용된 구문과 동일한 구문을 사용하여 클래스에 각 메서드를 정의합니다. 예를 들면 다음과 같습니다.

    • myMethod() 메서드를 만들려면 다음을 입력합니다.

      public function myMethod(param1:String, param2:Number):void 
      { 
          // do something with parameters 
      }
    • 클래스의 인스턴스를 만드는 과정 중에 호출되는 특수 메서드인 생성자를 만들려면 클래스 이름과 정확하게 일치하는 메서드 이름을 만듭니다.

      public function MyClass() 
      { 
          // do stuff to set initial values for properties 
          // and otherwise set up the object 
          textVariable = "Hello there!"; 
          dateVariable = new Date(2001, 5, 11); 
      }

      클래스에 생성자 메서드가 포함되어 있지 않으면 컴파일러에서 비어 있는 생성자, 즉 매개 변수와 명령문이 없는 생성자를 클래스에 자동으로 만듭니다.

    정의할 수 있는 클래스 요소가 몇 가지 더 있으며 이러한 요소는 다른 요소보다 복잡합니다.

    • 접근자는 메서드와 속성 사이의 특수한 중간적 요소입니다. 코드를 작성하여 클래스를 정의할 때 메서드와 동일하게 접근자를 작성합니다. 접근자를 작성하면 속성을 정의한 후 단순히 값을 읽고 지정할 수 있었던 것에 비해 여러 가지 작업을 수행할 수 있습니다. 그러나 클래스의 인스턴스를 만들면 접근자는 속성과 같이 처리되고 접근자 이름을 사용하여 값을 읽거나 지정할 수 있습니다.

    • ActionScript의 이벤트는 특정 구문을 사용하여 정의하지 않습니다. 대신 EventDispatcher 클래스 기능을 사용하여 클래스에 이벤트를 정의합니다.