최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

검색하다가 문법때문에 답답해 하는것 같아서 답변을 ...


엉뚱한 답변이면 무시하길 바라며..


http://todayhumor.com/?computer_127092



//Data.as
Data.as

package
{
public class Data
{
public var _a:int = 0;
public var _b:String = "say Hello";

public function Data(){
//constructor
}
}
}

//Data.as를 생성하여 사용하는 호스트 코드 (도큐먼트클래스)
package
{
import Data;
import flash.display.Sprite;

public class Host extends Sprite
{
private var _data:Data;

public function Host(){

_data = new Data();

trace(_data._a); //0
trace(_data._b); //say, Hello

_data._a = 10;
_data._b = "say, GoodBye";
trace(_data._a); //10
trace(_data._b); //say, GoodBye
}
}
}

그런데 이렇게 사용하면 문제점은 일일이 선언하는 변수들도 접근제한자를 public 속성 오픈시켜야하며
함수나 메서드가 추가될 경우 복잡하게 접근할 수 밖에 없는 단점이있습니다.
따라서 캡슐화를 위해서 get, set 메서드를 사용하면 변수 속성은 속성대로 (아래는 변수를 private으로 선언) 유지하면서
클래스 사용자가 클래스 메서드를 호출하는 대신 클래스 변수에 엑세스하는것 처럼 사용 가능하고
뭔가 코드가 길어지는것 같지만 -_-.. 읽기및 쓰기 엑세스가 모두 허용되는 공용 함수를 만들지 않아도 됩니다.
참고로 set은 파라메터로 받아 속성을 수정하고, get은 원본 속성을 리턴합니다.

DataControl.as
package
{
public class DataControl
{
private var _a:int = 0;
private var _b:String = "say Hello";

public function DataControl(){
//constructor
}

public function set a($num:int)
{
_a = $num;
}
public function get a():int
{
return _a;
}

public function set b($str:String)
{
_b = $str;
}
public function get b():String
{
return _b;
}
}
}

HostAnother.as

package
{
import DataControl;
import flash.display.Sprite;

public class HostAnother extends Sprite
{
private var _dataControl:DataControl;

public function HostAnother(){

_dataControl = new DataControl();

trace(_dataControl.a); //0
trace(_dataControl.b); //say, Hello

_dataControl.a = 10;
_dataControl.b = "say, GoodBye";
trace(_dataControl.a); //10
trace(_dataControl.b); //say, GoodBye
}
}
}

실무에서는 객체가 만들어질때에 동일한 데이터 접근을 위해서
var _dataControl = new DataControl(); //이렇게 데이터를 get,set 해줄 수 있는 클래스를 생성한 뒤.

var myClass1 = new MyClass1(_dataControl);
var myClass2 = new MyClass2(_dataControl);

이런식으로 결합해서 사용할수 있는것이죠

'■ 플래시 ■ > Adobe ActionScript3.0' 카테고리의 다른 글

Array Sort  (0) 2013.11.25
컴파일 오류 모음  (0) 2013.11.20
플래시 메타데이터 태그  (0) 2013.11.07
21. Flash Builder와 Flash의 연계작업  (0) 2013.10.19
20. 플래시빌더 개발환경 구성하기  (0) 2013.10.19
댓글