JAVA - class의 배열을 사용해 보도록 하자.

이미지를 굴리다보니까 어쩔 수 없이 필요하게 된 것이 이미지의 좌표이다.
좌표 자체가 움직이는것은 그것이 내부적으로 어떻게 돌든 문제가 될 것은 없다.
멀티 쓰레드에서 실시간으로 계산이 되든 아니면 싱글쓰레드에서 어떠한 이벤트마다 변하든
돌아가는 것 자체는 함수가 알아서 해줄테니까 말이다.

좌표를 받는것도 좌표를 받게 되면야 문제가 되지 않겠지만 ..그러니까 좌표를 어떻게 받냐고 -_-;

UI를 어느정도 만들어봤다면 보통 Container들이 공통적으로 가지고 있는것중에
setLocation(Point arg0) 같은 식의 메쏘드를 확인할 수 있다. 눈치 챈 사람들은 알겠지만
왠지 Point라는 반환값은 argument가 하나라고 해도 왠~지 쌍으로 이루어져 있지 않을까 하겠지.

정답이다. Point 값은 내부에 (double)형의 x,y 좌표값을 가지고 있다. 참 편리한 클래스라고 할 수 있겠다.

단순계산이나 하나의 객체에 대한 좌표계산이라면 그냥 쓰면 되겠는데.. 어디까지나 내 예상이긴 하지만
좌표를 하나만 가지고 해먹는건 아무래도 좀..아니지 않을까나. 그래서 결국엔 배열에 넣는다거나 벡터에
집어넣고 쓰면 될거다.

벡터야 워낙에 많이 써봐서 (사실 그전엔 거의 해쉬만 썼는데 이번엔 대세가 벡터인것같아서 쓰게 되었다.)
그냥 그렇다 치고.. 내가 삽질을 하게 된 근본적인 이유였던 것은 바~로 클래스의 배열을 얻어오려다가
계속 일어나는 Exception 에러...

정확히 Thread-3의 불법적 인덱스 참조오류라고 해야하나. (정확히가 아니다 -_-)

내가 썼던 것은..

Point pointArr[];
pointArr = new Point[v.size()];

라는 간단한 코드. 그냥 언뜻 봐서는 문제가 될 것이 없는데...
계속 오류님께서 나주시길래 좌절했었는데 문제는..

저건 저렇게 하면 단순히 배열만 생기는거였던거란걸 생각도 못하고 있었던 거다.
뭔가 논리정연하게 설명을 하고 싶은데.. 실력이 안되서.. 돌려 말하자면

Array의 정의에 대해서 살펴보면 되겠다. 배열(Array)이라는 녀석은 "연속적인 데이터 타입의 집합"
이라고 할 수 있겠다. 메모리상에 연속적으로 특정 타입의 데이터가 잡힌다는 소린데 자바에서는 객체지향
언어이기때문에 모든 객체들은 배열 구조로 잡을 수 있다. 근데 인스턴스를 생성하는 과정에서
한가지 이상의 인스턴스를 생성하지 못하는거다. 클래스의 배열이라고 하면 배열의 인스턴스를 생성한
이후에 클래스의 인스턴스를 생성한다는 말이다.

그러니까 결국 사용을 하려고 한다면!

for(int a=0;a<v.size();a++) pointArr[a] = new Point();

라고 이쁘게 추가만 해주면 완료~


항상 느끼는거지만 기초는 정말 중요하다. 개념적인것 우습게 봤다간 아무것도 안된다~.

by muzie | 2007/06/15 00:10 | STUDY | 트랙백 | 덧글(0)

트랙백 주소 : http://muzie.egloos.com/tb/3230812
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶