[AS3.0 개념편] 제1장. 시작은 OOP에서 부터 [OOP의 소개]

[AS3.0 개념편] 제1장. 시작은 OOP에서 부터 [OOP의 소개]

I. AS3.0의 OOP

Adobe 사는 Flash CS3 를 발표 하면서...

Flash에게 두가지 직종을 하사해 주셨습니다.

Flash 디자이너

Flash 스크립터

확실히 분리가 되었지요.

AS2.0 까지는 플래시 고급 개발자들만 class 파일을 사용 했습니다.

일반 수준의 스크립터 아니 고급 개발자라고 해도 간단한 프로젝트에선 Frame Action을 사용 했습니다.

솔직히 ~.as 파일(class)을 사용 하는것은 대규모 프로젝트에서나 객체의 재사용이 용의할때에 한정 되었지만...

AS3.0에서는 Document Class를 도입했고...

라이브러리엔 Class 이외에도 Base Class라고 하는 넘을 집어넣었습니다.

대신 무비클립에 직접 Action을 집어 넣는 건 없어졌지요.

요컨데 디자이너가 플래시에 이것저것 을 디자인 하고 모션을 만들면...

스크립터는 ~.as파일을 통하여 객체를 생성 하고 객체들 간의 이벤트를 만들어...

한개 혹의 다수의 swf를 만들어 내는거지요.

왜 이렇게 복잡해 졌냐고요?

그건 Adobe사가 저(스크립터)에게 돈을 많이 벌수 있게 해주기 위해서... 일리는 없고요

플래시 아니 AS를 좀 더 강력하게 만들기 위해서 입니다.

Adobe 사가 말하긴 AVM2 는 AVM1 보다 이론적으론 약 10배 빨라졌다고 합니다.

간단히 설명하면 그 이유는 큰 덩어리던 것들을 작은 덩어리로 나눴기 때문입니다.

쉬운예로 MovieClip을 보면 예전엔 안에 타임라인도 있고 onPree,onRollover,OnEnter등의 많은 메소드를 포함하고 있었지만

AVM2에서는 타임라인이 없는 MovieClip 즉 Sprite라는 객체를 빼내어 놓고 Event 패키지를 따로 만들어

KeyEvent 라던지, MouseEvent 라던지... 많이 쓰던 enterFrame 이라더진... 를 따로 객체화 시켜

객체 하나하나를 분리하여 필요에 맞게 필요한 부분만 쓸수 있도록 한것입니다.

덕분에 단계는 복잡해 졌지만...

보다 세분화된 기능덕에 구현할수 있는 기능의 폭도 넓어 지고...

보다 가벼워졌기 때문에 대규모 프로젝트 구현 역시 가능해 졌습니다...

II. 그럼 OOP는 뭐시기?

"아니 OOP 한다고 해놓고 왜 이리 잡담이 많냐..." 하시겠죠... 눼 죄송합니다... (^^)(_ _)(^^) 꾸뻑~

눈치 채신분들도 있겠지만 위에 장황한 기술을 가능하게 해준것이 Flash의 AS 기본 골격인 OOP 때문입니다.

OOP(Object-oriented programming) 우리말로 객체 지향 프로그래밍...

말 그대로 객체를 만들어서 프로그래밍을 한다는것입니다.

OOP 성격엔 에는 대표적으로 "은닉성"과 "상속성"이 있습니다.

OOP 은닉성

여러분들은 MovieClip 이라는 객체를 쓰지만 그 객체가 어떻게 만들어 졌는지 아는 사람은 아마 만든사람 말고는 없을겁니다.

우리는 단지 MovieClip.x ,MovieClip.gotoAndStop등의 속성과 메소드 만을 알고 쓸 뿐이지요.

이게 은닉성입니다. 사용하는데 필요한 부분만을 제공해 주고 나머지는 숨기는것 그것은 코드의 알고리즘이라던지 구조를 숨기기 위함이 아닌

객체의 오작동을 방지 하기 위해서 은닉 하는것입니다.

OOP 상속성

상속엔 has-a 상속과 is-a 상속이 있습니다.

"이게 뭔소리여 뭔 잡소리여..." 자자 진정하시고 이제 부터 자세히 설명하겠습니다.

is-a 상속은 네모 그림을 그리고 그걸 box라는 심볼를 통해 MovieClip을 만들었다고 생각하시면 됩니다.

다시 말해 객체 스스로가 상속을 받은것이라고 보시면 됩니다.

has-a 상속은 box MovieClip안에 네모 그림을 그린것을 말합니다.

이건 자체가 상속을 받은것이 아니라 안에 내부로 상속 받아서 가지고 있다고 생각 하시면 될듯...

뭔 차이인지 아시겠나요... 모르시는분은 한번 해보세용...ㅋㅋ

is-a 상속엔 구현상속과 일반 상속이 또 나눠 지는데 그건 다음(OOP의 키워드) 시간에 자세히 다시 설명 하도록 하겠습니다.

그냥 개념만 잡아 두세요!

III. Flash의 OOP는 어떻게 생겨 먹은거냐?

그럼 이런OOP가 왜 필요 할까요...

예를 들어...

오른쪽으로 1px 움직이는 상자를 만든다고 할때...

절차적 언어 개념 으로 본다면...

상자를 그려놓고 그넘을 1px 끌어 움직이는 것입니다.

OOP 언어 개념 으로 본다면...

움직이는 상자(객체)를 만들고 그 객체에게 움직이라고 명령을 하는것이지요.

야! 상자 오른쪽으로 1px 움직여!

절차적 언어 ex)

box 무비 클립을 만들고 인스턴트 네임을 box_mc로 준후 액션을 넣지요

box_mc.x += 1;

OOP ex)

먼저 객체를 만듭니다.

rMoveBox.as

package

{

import flash.display.Sprite;

import flash.display.Graphics;


public class rMoveBox extends Sprite
{

private var square:Shape = new Shape();

public function rMoveBox(sColor:String, sWidth:uint, sHeight:uint):void
{
super();

square.graphics.beginFill(sColor, 1);
square.graphics.drawRect(0, 0, sWidth, sHeight);

}
public function moveRight(mpx:uint):void
{
this.x += mpx;
}
}
}

fla document Class에 객체를 선언해 줍니다.

rMoveBox.fla

var rBox_mc:rMoveBox = new rMoveBox("0xFF0000",100,100);

rBox_mc.moveRight(1);

뭔가 복잡 하지요... 지금 상세한 내용을 알필요는 없습니다.

나중되면 다 아시고 배우실 내용이니까요...

"위에껀 한줄이면 되는데... 아랜 왜 이리 길고 복잡해 간단한게 좋은거 아니야...?"

라고 외치시는분들 당연히 있을겁니다. 맞습니다. 간단한게 최고입니다. 가독성도 좋고요~

하지만... 만약 상자 색도 크기도 다른 상자를 100개 만들어야 한다면 어떻겠습니까??

싸이즈에 맞게 100개 그리고 100개를 무비으로 만들고 100의 인스턴트 네임을 주고 100개를 움직이시겠습니까??

작업도 작업 이지만 상당히 복잡해 지겠지요~

이럴때 OOP가 빛을 발휘하는 것입니다. 만들어진 상자 객체를 100개 색에 맞게 싸이즈에 맞게 선언해 주면 끝이니까요.

이것이 바로 OOP의 재활용성 입니다.

OOP는 뭐 대단한것도 아니고 위대한것도 아닙니다. 기본(절차적 언어)에 쓰던 명령어(if,for,switch,while 등)에

몇가지 은닉, 상속성을 제공해주는 키워드를 더하여 만들어지 개념에 불과할뿐입니다.

OOP는 어디 까지나 말그대로 객체 지향 이지... 반드시 객체가 아닙니다.

너무 객체화를 세분화 하고 많이 만들어도 가독성도 떨어지고 객체가 많으니 속도 저하도 됩니다.

어디 까지나 과하지 않게 적당히 그래서 OOP엔 또 하나의 개념 Design Pattern

여기서 말하는 Design는 설계를 뜻하는 것입니다.

OOP는 객체들을 만들어 프로그래밍하는것이기 때문에...

가장 중요한것은 객체끼리의 관계성... 의존성... 다형성 등입니다.

객체들이 관계를 가지고 유기적으로 움직이데 서로에게 의존해서는 안되고...

메소드를 재정의를 하여... 여려 형태의 기능을 만들어야 합니다.

그래서 디자인 패턴엔 싱글턴, 옵저버, 컴포지트... 등등의 여려 개념이 있습니다.

"이게 뭔 소리야... 알아들을 수가 없잖아...!"

하시겠지만... 이걸 이야기 하자만 끝도 없고 지금 언급할 단계가 아니니...

나중에 다시 꼭 공부 하시길... OOP가 뭔지 알게 되면 자연스럽게 찾게 되실겁니다.

꼭... 나중에 공부하세용 디자인 패턴 부터 공부하면 시작도 못해 보고 지칩니다.

자... OOP의 소개는 이정도로 해두고

다음시간엔 OOP의 키워드들을 하나 하나 파해쳐 보도록 하겠습니다.

다운로드
의견 1 신규등록      목록