클래스와 객체
클래스는 연관있는 함수와 변수를 묶는 것입니다.
변수와 메서드 들의 모임으로서 "자기일은 자기가 처리한다"라는 객체지향 개념을 구현하기 위한 단위가 됩니다.
빌트인 클래스 : 플래시 내부에 만들어져 있는 클래스
사용자 클래스 : 유저가 만들어서 사용하는 클래스
자료구조에 대해 알아 보도록 하겠습니다.
데이터를 저장하는 관점의 발전단계는 아래와 같습니다.
변수 → 배열 → 구조체 → 클래스
클래스도 하나의 데이터 타입입니다.
메모리에 저장해야 하므로 데이터 타입이 필요합니다.
다음은 각각의 숫자, 배열, 객체, 클래스를 정의하는 예제입니다.
var i:Number = 314;
var arr1:Array = new
Array();
var obj1:Object = new Object();
var myClass:Class = new
Class()
var my:MyClass = new MyClass();
위의 코드와 아래의 코드는 같습니다.
MyClass타입으로 my변수를 선언하고 my변수에 MyClass에서 생성한 객체 인스턴스가 할당 된 것을 코드로 표현한
것입니다.
var my:Myclass;
my = new MyClass()
객체 생성방법
객체는 클래스를 틀로해서 생성되는 인스턴스입니다.
객체를 생성하려면 클래스와 new라는 연산자를 사용하면 됩니다.
var mc:MovieClip;
mc = new MovieClip();
이렇게 하거나 아래처럼 작성하면 객체가 생성됩니다.
var mc:MovieClip = new MocieClip();
클래스 만드는 방법
클래스 = 변수 + 함수 + 클래스문법
<클래스 기본 형식>
① 한 클래스당 한 개의 package를 원칙으로 합니다. package 밖에 클래스 작성 가능합니다.
② package 안에 클래스 몸체가 있습니다.
③ 클래스 몸체 외부에는 import 문을 사용하여 외부에서 만든 클래스를 import할 수 있습니다.
④ 저장할 때는 반드시 클래스 이름으로 저장합니다.
하나의 클래스에서 여러개의 독립적인 인스턴스를 생성할 수 있습니다.
다음은 인스턴스 생성예제입니다.
import MyClass;
var hong:MyClass = new MyClass();
(예제) 다음 구조적 프로그램을 클래스를 사용한 코드로 바꿔봅시다.
public var kor:Number = 89;
public var math:Number =
87;
public var eng:Number =45;
public var Name:String =
"racoon";
public var kor2:Number = 100;
public var math2:Number =
99;
public var eng2:Number =98;
public var Name2:String =
"techtree";
function grade(s:String, k:Number, m:Number,
e:Number):void{
var total:Number = Math.ceil((k+m+e)/3);
trace(s+"학생의
평균점수 : "+total+" 입니다.");
}
grade("racoon", 89, 87, 45); //racoon학생의 평균점수 : 74 입니다.
grade("techtree", 100, 99,
98); //techtree학생의 평균점수 : 99 입니다.
1. 생성자를 이용하여 메서드를 만드는 방법으로 구현해 봅시다.
[생성자 사용 원칙]
생성자 메서드 이름은 클래스 이름과 같아야 한다.
리턴값은 없다.
Class_Main.fla라는 파일을 만듭니다.
타임라인 첫프레임에 다음과 같이 입력합니다.
import MyClass;
var hong:MyClass = new MyClass();
MyClass.as라는 파일을 별도로 만들어 보도록 하겠습니다.
package {
public class MyClass {
public var kor:Number = 89;
public var math:Number
= 87;
public var eng:Number =45;
public var Name:String =
"racoon";
public var kor2:Number = 100;
public var math2:Number
= 99;
public var eng2:Number =98;
public var Name2:String =
"techtree";
//이 부분이 생성자 부분입니다.
public function MyClass()
{
grade(Name,kor,math,eng);
grade(Name2,kor2,math2,eng2);
}
public
function grade(student:String,k:Number,m:Number,e:Number):void {
var
total:Number = Math.ceil((k + m+ e )/3);
trace(student + " 학생의 평균 점수는 =" +
total +"입니다.");
}
}
}
결과는 아래와 같습니다.
racoon 학생의 평균 점수는 =74입니다.
techtree 학생의 평균 점수는 =99입니다.
2. 두번째 방법 : 객체.메서드() 형식
생성자 메서드를 사용하지 않고 메서드를 호출하여 실행하려면 클래스에서 객체 생성 후 메서드를 호출해야 합니다.
아래와 같이 코드를 생성하고 showScore() 메서드를 호출하는 방식으로 한다면
MyClass.as 코드는 다음과 같이 작성할 수 있습니다.
MyClass.as라는 파일을 별도로 만들어 보도록 하겠습니다.
package {
public class MyClass {
public var kor:Number = 89;
public var math:Number
= 87;
public var eng:Number =45;
public var Name:String =
"racoon";
public var kor2:Number = 100;
public var math2:Number
= 99;
public var eng2:Number =98;
public var Name2:String =
"techtree";
//이 부분에 생성자 대신에 메서드를 정의합니다.
public function showScore()
{
grade(Name,kor,math,eng);
grade(Name2,kor2,math2,eng2);
}
public
function grade(student:String,k:Number,m:Number,e:Number):void {
var
total:Number = Math.ceil((k + m+ e )/3);
trace(student + " 학생의 평균 점수는 =" +
total +"입니다.");
}
}
}
Class_Main.fla라는 파일을 만듭니다.
타임라인 첫프레임에 다음과 같이 입력합니다.
import MyClass;
var hong:MyClass = new MyClass();
hong.showScore();
결과는 아래와 같습니다.
racoon 학생의 평균 점수는 =74입니다.
techtree 학생의 평균 점수는 =99입니다.