OOP의 기본적인 내용을 먼저 해나가겠습니다.
OOP가 나온 배경은 구조적 프로그래밍(C언어)의 한계때문이었습니다.
절차지향언어는 실행속도는 빠르지만 유지보수가 어렵습니다.
반면에 객체지향으로 프로그래밍하면 유지보수성이 우수하기 때문에 요즘의 프로그래밍은 객체지향이 대세입니다.
그리고 실행속도가 느리더라도 워낙 하드웨어가 빠르기 때문에 문제되지 않습니다.
최초의 객체지향언어는 simulra67이란 언어이고
smalltalk, C++, java등의 언어가 객체지향 언어입니다.
객체지향 용어를 알아보도록 하겠습니다.
객체와 클래스(Object and Classes)
붕어빵이 객체라면
붕어빵틀이 클래스입니다.
하나의 클래스로 여러개의 객체를 만들어 낼 수 있습니다.
메소드(Method)
객체와 관련되어 객체에 특정 일을 시키는 함수(function)입니다.
속성(Properties)
읽기/쓰기가 가능한 객체의 특성(Attribute)입니다.
각 객체의 기본 속성 또는 특성을 하나의 변수로 묶어주는 것입니다.
package
동일한 기능을 가진 클래스들을 하나의 폴더로 몰아 넣는 것입니다.
캡슐화(encapsulation)
클래스의 속성과 메서드를 외부에 노출하지 않는 방법입니다.
상속(inheritㄷnce)
공통된 요소를 전해 줘서 재사용성이 높도록 프로그래밍 하는 방법
is a 상속과 has a 상속(composition합성)이 있다.
다형성(polymorphysm)
공통된 Interface를 사용하여 하나이상의 기능을 수행할 수 있는 것을 Polymorphism이라고 합니다.
이것은 Overloading과 Overriding(특별한 형태의 Overlading)을 보다 일반적으로 일컫는 표현입니다.
인터페이스(interface)
기능은 없고 구조만 갖고 있는 클래스입니다.
이거만 가지고는 객체지향이 무엇인지 알 수 없겠지만 하나하나 기법들을 마스터해 나가면서 공부하도록 하겠습니다.
Action script 3.0 도움말을 잘 살펴보는 것은 객체지향을 공부하는 데 정말 도움이 됩니다.
왜냐하면 Action script 3.0 API 자체가 거대한 객체지향의 구조를 가지고 있기 때문입니다.
그러면 클래스 쉽게 접근하는 법을 알아 보겠습니다.
모으기
구조적 프로그래밍을 하면 많은 변수들(지역, 전역)과 함수들이 생깁니다.
이 많은 코드들 중에 있는 많은 변수와 함수들을 관련있는 것들끼리 하나로 묶어보는 것입니다.
이렇게 하나의 덩어리(package)로 묶으면 그 안에 변수와 함수를 그 덩어리의 멤버변수(속성), 멤버메서드(함수)라고 부릅니다.
감추기
감추기란 말은 클래스에서 외부에 노출하지 않고 클래스 내부에서만 사용할 수 있게 하는 것입니다.
외부에 노출이란 클래스에서 생성된 객체(인스턴스)가 클래스 속성에 접근을 한다는 뜻입니다.
var ex:SomeClass = new SomeClass();
ex.a; //외부에서 a란 속성에 접근
ex.go(); //외부에서 go()메서드에 접근
감추기를 구현하는 방법은 접근제한자 public으로 되어 잇는 것을 private로 변환하는 것입니다.
감추기는 캡슐화와 밀접한 관계가 있습니다.
캡슐화도 OOP의 중요한 개념 중 하나로 밖에서는 그 안이 어떻게 만들어졌는지 알 필요가 없는 것입니다.
예를 들어 무비클립의 타임라인을 진행하려면 play()메서드만 사용하면 됩니다.
그 메서드가 어떻게 구현되었는지 몰라도 우리는 타임라인을 잘 진행할수 있는 것입니다.
클래스는 만드는 사람이 자신의 클래스를 가지고 다른 사람이 코딩하든 본인이 직접 코딩을 하든
코딩하는 입장에서는 간단하게만 사용할 수 있도록 만들어 주는 것이 캡슐화(감추기)입니다.
많이 만들기
이 부분은 하나를 만들어 여러개로 사용하자는 의미로 클래스에서 객체를 생성하는 것을 의미합니다.
한개의 클래스에서 많은 객체를 생성해도 이 객체들은 독립적인 메모리를 사용하기 때문에 객체들 간의 충돌이 나지 않습니다.
'FLASH > AS3.0기초' 카테고리의 다른 글
AS3.0 이벤트에 대해 알아봅시다. (0) | 2013.11.14 |
---|---|
클래스로 코딩하기 (0) | 2012.10.29 |
Document 클래스의 이해 (0) | 2012.10.29 |
클래스와 객체 (0) | 2012.10.29 |
Math (0) | 2012.10.25 |
타이머 (0) | 2012.10.25 |
AS2.0 과 AS3.0의 대표적인 차이점 (0) | 2012.10.25 |
Object 클래스 (0) | 2012.10.25 |
Array (0) | 2012.10.25 |
String (0) | 2012.10.25 |