2013-05-03 3 views
2

이 질문을 공식화하는 방법에 대해 조금 확신이 들지 않았습니다. Java의 경우에는 객체 지향 사고에 관한 것이지만 일반적 개념에 관한 것입니다.클래스의 모든 객체에 영향을주는 방법은 무엇입니까? (Java)

배열 및 상속을 연습하려면 배열에 자동차를 저장하는 People 개체가 소유 할 수있는 Car 개체가있는 작은 시스템을 만들고 싶습니다. 자동차는 가치가 있으며 피플 오브젝트는 돈으로 서로에게서 자동차를 사고 팔 수 있습니다.

는 는

내 질문 :

은 나뿐만 아니라, 나는 일년에 카운터를 증가, 현재 프로그램에 존재하는 모든 차량의 가격을 감소 연간 패스를 수 있도록 호출 할 수있는 서브 루틴이있을이 원하는 "나이"를 1 씩 늘리십시오. 그런 것들.

나는 어떻게 이런 식으로해야할지 모른다. 특정 작업을 수행하는 방법은 무엇입니까? 특정 작업은 아니지만 특정 작업의 모든 개체를 대상으로합니까? 이런 유형의 작업이 큰 프로그램에서 매우 흔한 일이라고 상상해보십시오. 일반적으로 어떻게 진행됩니까?

+0

당신은'static' 변수를 사용 할 수 있습니다. –

답변

4

정말, 할 수 없습니다. 적어도 깔끔하게.

먼저, Car 개체에 대한 참조를 보유해야합니다. 그렇지 않으면 가비지 수집 (메모리에서 삭제)됩니다.

사람들 개체 (아마도 사람들 개체 아래)에 대한 참조를 유지하기 때문에 모든 사람들을 거쳐 자동차를 가져올 수도 있고 모든 차량을 유지하는 별도의 컨테이너 (예 : ArrayList)를 유지할 수도 있습니다. 자동차. 그것은 자동차가 사람이나 다른 컨테이너를 통해 이용할 수 있다는 것을 의미합니다. 그럼 당신은 컨테이너를 통해 itereate하고 자동차에서 원하는대로 해.

4

자동차를 1 년 나이가 들게하려면 자동차 클래스 내에 int buildYear 속성이 필요합니다.

두 번째 부분입니다. 각 차는 재산 float amortizationPercentPerYear를 얻는다. 자동차의 나이를 기준으로, amortiationPercentPerYear 및 초기 가격은 정확한 가격을 계산할 수 있습니다.

2

은 어느 당신은 Car에 인스턴스의 정적 ArrayList<Car>이 필요하거나 더 나은 각 Car에 건축 연도를 저장하고 가격 계산 :

class Car 
{ 
    private static int currentYear = 2013; 

    public static void newYear() { ++currentYear; } 

    private int constructYear; 
    private double newPrice; 

    public Car(double price) 
    { 
     newPrice = price; 
     constructYear = currentYear; 
    } 

    public int getAge() { return currentYear - constructYear; } 

    public double getPrice() { return newPrice - newPrice * getAge() * CONSTANT; } 
} 
관련 문제