본문 바로가기

Flash/ActionScript 2.0

[MissFlash의 Flash ActionScript 2.0] 2. 객체지향 액션스크립트 프로그래밍

* 본 포스트는 "콜린 무크의 Flash ActionScript 2.0"의 내용을 정리, 가공한 것입니다.
* 본 포스트를 퍼가실 때는 상단에 아래와 같이 원본출처를 명시해 주세요! ^^
원본 : http://blog.missflash.com/
출처 : MissFlash.com, http ://www.missflash.com/
* 포스트의 내용중 일부가 추가/수정될 수 있으므로 최신 내용을 접하고 싶으신 분은 원본글을 이용하시기 바랍니다.


1. 절차지향 프로그래밍 vs 객체지향 프로그래밍

절차지향 프로그래밍은 명령어들을 모아놓은 프로시저들을 이용해 프로그램을 제작하는 방법입니다. 플래시에서의 절차지향 프로그래밍은 데이터를 변수에 저장하고 함수를 이용해 이를 처리하는 것입니다. 절차지향 프로그래밍은 손쉬운 문제 해결방법이나 애플리케이션의 규모가 커질 경우 프로그램의 유지, 보수가 어려워지는 단점이 있습니다.

객체지향 프로그래밍은 오브젝트를 이용함으로써 프로그램을 좀 더 구조적이고 짜임새있게 만들수 있습니다. 클래스(Class)를 이용해 오브젝트(플래시에서는 인스턴스)를 만든 후 이것이 동작하도록 명령함으로써 프로그램을 만들 수 있습니다.


2. 객체지향 프로그래밍의 중요 개념

메소드 - 오브젝트의 특정한 기능을 나타내는 함수
속성 - 오브젝트의 변수
클래스 - 오브젝트가 사용하는 메소드와 속성을 지닌 설계도

객체지향 프로그래밍의 제작 과정
클래스의 제작오브젝트의 생성오브젝트가 동작하도록 명령

클래스의 제작
Class SpaceShip{
 public var speed:Number;

 public function SpaceShip(){
  speed = 10;
 }
 public function Fire():Void{
  speed = 100;
 }
}

오브젝트의 생성
var ship:SpaceShip = new SpaceShip();

오브젝트의 사용 (다음과 같은 것들)
ship.Fire();
ship.speed = 200;

캡슐화

오브젝트가 클래스 내부를 모두 공개하지 않고 필요한 부분만 외부에 노출시키는 것을 뜻합니다. 캡슐화를 통해 서로 다른 프로그래머들이 제작한 클래스가 제각기 독립적으로 실행될 수 있는 제작 환경을 지원합니다.


데이터타입

public var speed:Number; 에서의 Number와 같은 것이 데이터타입을 설정한 예입니다.


상속

한 클래스가 다른 클래스의 속성과 메소드를 이어받는 것을 뜻합니다. Car, Boat, Plane클래스는 모두 이동수단을 뜻하므로 Vehicle 클래스를 상속받음으로써 공통적으로 이동수단의 속도나 탑승인원 등을 나타낼 수 있습니다.


패키지

대규모 애플리케이션의 제작시 클래스들을 묶어 패키지를 만들 수 있습니다. 이것은 컴포넌트를 제작하거나 추가적인 클래스 라이브러리를 제작할 때 효과적입니다.


컴파일

OOP 애플리케이션을 플래시 무비로 출력할 때, 즉 swf를 생성할 때 플래시는 모든 클래스를 컴파일합니다. 컴파일은 액션스크립트 소스 코드로 제작된 클래스가 플래시 플레이어에서 실행될 수 있는 바이트코드(Bytecode)로 만들어지는 과정입니다.


객체지향 애플리케이션 실행 과정

1. 클래스의 제작 (.as 확장자 파일)
2. 플래시 무비를 제작 (.fla 확장자 파일)
3. .fla 파일의 첫번째 프레임에 클래스를 이용해 오브젝트를 생성
4. 생성된 오브젝트를 이용해 플래시 애플리케이션을 실행할 메소드를 호출
5. .fla 파일을 이용해 .swf 파일을 출력
6. 플래시 플레이어에 .swf 파일을 로드한 후 실행