클래스는 어떠한 프로젝트를 만들때 우리가 필요한 기능들을 묶어 처리하는 하나의 캡슐과도 같은 것이다.
그안에 해당되는 기능/처리에 필요한 많은 명령문과 함수(메서드)를 만들게 된다. 보통 클래스는 public이나 internal로 선언해서 만든다.


사용자 삽입 이미지


그림과 같이 플렉스에서는 새로운 클래스를 만들때 패키지(클래스의 포함경로)와 이름을 정하게 되고 접근제한자를 public/internal중에 한개를 선택하게 되어있다.
superClass에는 상속받을 부모의 클래스를 넣어주면 자동으로 네임스페이스를 클래스 내부에 선언하게 된다.
Interface의 경우에는 구현할 인터페이스의 경로를 설정한다.

사용자 삽입 이미지

그림은 패키지를 com.test라는 경로로 선언하였다. 그러면 com폴더에  test폴더에 저장이 된다.
* 패키지 : 클래스를 그룹화하여 서로 충돌없이 사용하도록 폴더의 구조를 나누는 것이다.
com.test라고 선언한다면 생성하는 클래스는 com이라는 폴더에 test라는 폴더 및에 생성하게 된다.
관행적으로 패키지 이름은 소문자로 한다.
클래스 이름은 관행적으로 첫문자를 대문자로 사용한다. 그리고 Test라고 선언한 클래스이름과 같은 이름(Test.as)으로 파일이 생성하게 된다.
* 클래스이름과 파일명은 항상 같은 이름으로 일치시켜야 한다. 만약 이후 클래스명이나 파일명이 수정되면 둘다 같은 이름으로 일치시키도록 한다.
클래스의 스코프는 전체패키지에서 접근가능하도록 public으로 설정하였고 상속받을 부모는 Sprite(프레임 없는 무비클립)을 상속받았다..
* 상속을 받지 않고 클래스를 생성하면 기본적으로 최상위 클래스인 Object를 상속받게 된다.
실행하면 아래의 그림처럼 클래스가 생성된다.
사용자 삽입 이미지

[ com -> test -> Test.as ]


Test의 소스코드를 보면 아래와 같다.
package com.test
{
 import flash.display.Sprite;
flash라는 폴더에 display라는 폴더에 Sprite 클래스를 임포트하였다.
위의 클래스는 어도비에서 제공하고 플렉스빌더의 sdk에 swc형태로 저장되어있다.
* swc : 라이브러리 프로젝트로 압축된 파일안에 소스코드를 저장해 넣은 클래스집합

 public class Test extends Sprite
Sprite에서 상속을 받았기 때문에 Test클래스는 Sprite의 extends이다

 {
  public function Test()
  {
   super();
  }
이부분이 생성자이다 패키지 어디에선가 이 클래스를 사용하고자 생성시킬때 이 부분이 실행하게 되며
반드시 생성자에는 반환타입이 없다.
super()라는것은 부모의 생성자를 의미한다. 여기서는 Sprite의 생성자를 호출하게 된다.
* parent는 계층구조상 상위의 개념
* super는 상속에서의 상위 개념
 
 }
}

사용자 정의 클래스를 만들어 보았다...이를 다시 상속받는 클래스를 하나 더 만들어보고 비교하면 금방 이해가 가실 것이다.

앞서 만든 Test를 상속받는 클래스 Test2를 com.test2라는 패키지에 만들어 본다.

사용자 삽입 이미지

그림처럼 설정하고 실행하면 아래의 경로에 클래스가 생성되게된다.
사용자 삽입 이미지

소스코드는 아래와 같다
package com.test2
{
 import com.test.Test;

 public class Test2 extends Test
 {
  public function Test2()
  {
   super();
  }
 
 }
}

이 클래스는 Test를 상속받았다 Test클래스는 Sprite를 상속받았으므로 Test2에는 Sprite성분과 Test성분을 모두 포함하고 있다.

* 클래스의 캡슐화 : 클래스를 만들 때 유념해야 할것은 각 메서드의 스코프를 잘 정의하고 내부에서만 사용하는 메서드는 외부에서 접근이 불가능하게 하고 다른 클래스 메서드와의 충돌이나 에러 발생율를 최소한으로 하여 "한 덩어리"로서 자신의 역할만을 충실히 수행하도록 하는 것이 좋다.

Posted by 버터백통