2013-05-06 4 views
0

나는 학교 일을하고 있습니다. 자사의 빈 포장 문제에 관한 것이지만 조금은 트롤리에 대해 수정되었습니다. 트롤리 내부에 두 개 이상의 말뚝이있을 수 있습니다. 지금까지 내가 한 일은 소포 수업과 더미 수업으로 이루어져 있습니다. 내가 따라야 할 규칙이 거의 없습니다. 그들 중 하나는 내가 더미 안에 소포 (너비 3)를 넣을 때 그 위에 소포 (너비 4)를 넣을 수 없다는 것입니다.클래스 B에서 클래스 A에 액세스

예 나는 트롤리 클래스, 더미 클래스 및 소포 클래스를 갖습니다.

내가 여기에서하려고하는 것은 파일 클래스의 폭을 파셀의 너비가 무엇이든간에 변경하는 더미 클래스 내부의 함수로 만듭니다. 더미 클래스에서 파셀 너비에 어떻게 액세스합니까? 그냥 getW()가 될 것입니까? 많은 도움을 주셨습니다. 아니면 트롤리 클래스 안에서해야합니까? 이 방법을 정확히 구현할 방법이 확실하지 않습니다.

public class Parcel { 
private int H; 
private int W; 
private int customer; 

Parcel(int inH, int inW, int inCustomer){ 
    this.H = inH; 
    this.W = inW; 
    this.customer = inCustomer; 
} 

public int setH(){ 

    int x = (int)(Math.random() * 50 + 1); 

    return x; 
} 

public int setW(){ 

    int y = (int)(Math.random() * 100 + 1); 

    return y; 
} 

public int getW(){ 
    return W; 
} 

public int getH(){ 
    return H; 
} 
+1

'(expressionThatReducesToAParcel) .getW()'는 정상적으로 작동합니다. –

+1

http://stackoverflow.com/questions/1022880/accessing-a-variable-from-another-class?rq=1 –

답변

1

setW()의 이름이 잘못되었습니다. randomizeWidth()이어야합니다. 고려해야 할 것은 위의 클래스에 유효한 너비 설정 메서드 인 setWidth(int width)에 W 변수를 설정하는 것입니다 (Java 명명 규칙을 준수하도록 width으로 바꿉니다. 변수 이름은 소문자로 시작해야 함). 클래스는 메소드를 호출하고 너비를 설정할 수 있습니다.

더미는 마찬가지로 너비와 기타 속성에 유효한 세터와 게터가 있어야합니다. Pile은 위의 Parcel 메서드를 호출하고 정보를 사용하여 폭을 설정할 수 있습니다. Pile 오브젝트가 Parcel 오브젝트를 보유하고 있다면, Pile이 보유하고있는 Parcel 오브젝트의 너비에 따라 자체 너비를 설정하는 것이 더 나을 것입니다. 그래서 제 제안은 소포 이 아니라 더미의 너비를 설정합니다.

+1

'setRandom'대신'randomize'가 될 수도 있습니다. 또는'makeUnitTestingUnnecessarilyHard'. –

+0

@ MikeSamuel : LOL, 훌륭한 아이디어 - 구현되었습니다! –

+0

고마워,하지만 다른 클래스가이 클래스에서 아무 것도 변경하지 않기를 바란다. 나는 다른 클래스 (더미 클래스)가 더미의 너비를 소포의 너비로 설정하기를 원합니다. – user2316675

1

더미에 유형 소포 필드가 있다고 가정하면 getter를 호출 할 수 있습니다.

public class Pile 
{ 

    Parcel parcel; 
    public Pile() 
    { 
     //instanciate parcel here; 
    } 


    public void someMethod 
    { 
     int w = this.parcel.getW(); 
    } 
} 
+0

@HovercraftFullOfEels은 'w'가되도록 의도했습니다. –

관련 문제