squeak의 File List Tool과 pharo의 File Browser

생긴게 좀 틀려도 하는일은 같습니다.

squeak의 경우는 아래와 같죠.

Squeak FileIn
Squeak FileIn

 

Pharo의 경우는 World > Tool > File Browser를 실행하면 아래와같은창을 볼 수 있습니다

Pharo File browser
Pharo File browser

 

생김새는 좀 틀려도 하는일은 같습니다. 역시 이런건 형제가 맞는거같아요.

잘보면 Pharo쪽에는 상단부에 파일이름을 필터링해서 볼 수 있는 입력창이 하나가 추가되었습니다 😀

getter와 setter

객체지향 프로그래밍을 공부하다보면 반드시 등장하는 것중하나가 getter와 setter라는 것들입니다.

사실 정체는 단순히 메서드 입니다. 하지만 왜 이녀석이 굳이 언급이 되는걸까요?

 

SimpleSwitchMorph subclass: #SBECell
instanceVariableNames: ‘mouseAction’
classVariableNames: ”
poolDictionaries: ”
category: ‘SBE-Quinto’

 

이런식으로 Class를 선언한다고 하겠습니다. 이 Class는 내부에 인스턴스 변수로 mouseAction이라는것을 가지고 있죠.

이 변수에 직접적으로 접근을 할 수 있으면 그건 이미 에러!

 

물론 php의 경우는 SBECell.mouseAction = 3; 이런식의 문법이 가능하겠지만 사실 이건 틀린방법입니다.

Class는 선언시 캡슐화를 위해 private과 public을 구분해서 사용해야하며 (강제는 아니지만 개념상)

변수는 private에 들어가게 되어 외부에서 직접적으로 값을 바꿀 수 없어야 정상입니다.

 

그럼 private에 가지고있는 변수를어떻게 접근하는가?

이 변수의 값을 가져오는것을 getter. 이 변수에 값을 세팅하는것을 setter라고 합니다. (역시 개념상)

 

smalltalk에서는 이러한 getter와 setter를 선언하는데 규칙같은게 있는데

getter는 변수의 이름과 같은 메서드를, setter에는 변수이름에 콜론을 붙여서 선언하게 됩니다.

고로 이경우

mouseAction이라는 메서드는 getter(당연히 메서드를 쓰게되면 값이 return되니 콜론을 써서 인자를 넘길 필요는 없겠죠)

mouseAction: 이라는 메서드는 인자값을 넣어서 인스턴스 변수의 값을 변경할 수 있는 setter되겠습니다.

 

http://trans.onionmixer.net/mediawiki/index.php?title=SqueakByExample:2.7

대략 이런내용에 대한 부연설명입니다만.. 좀 쓸모있는 설명이 되었으면 합니다 😀

cogvm을 compile할때의 간단한 삽질메모

squeak에서 사용하는 CogVM을 빌드하는법

빌드법은 아래의 URL을 참고

http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-December/155322.html

 

ImmX11Plugin patch는 최신버전을 srpm에서 가져온다

http://arm.koji.fedoraproject.org/koji/buildinfo?buildID=103149
compile time에서 bochs가 필요할거같으나 실제로는 compile잘 안되니 필요없다
cogvm/unixbuild/bld/plugins.ext

이 파일에서 BochsIA32Plugin 부분 삭제
cogvm/unixbuild/bld/plugins.int

이 파일은 cogvm 내부에서 사용하는 plguin의 목록
두개를 새로이 추가
ImmX11Plugin
DBusPlugin

 

=======================================

아.. 우울합니다 ㅋㅋㅋ