2012-03-26 3 views
3

그래서 일반적인 질문이 있습니다. 내가 쓰고있는이 프로그램에서 자동차 객체를 만들고 싶다고 말하면서이 자동차 객체를 수백 가지 만들어야합니다. 자동차 추상 클래스를 생성하고 자동차 객체 (예 : 도요타, 닛산 등)를 만들 때 확장하거나 특정 객체의 세부 정보를 보유한 정적 클래스를 사용하여 일반에서 사용하는 것이 더 낫습니다. 도요타 또는 닛산을 만들기위한 차체? 나는 추상적 인 방법을 사용하여 꽤 자기 설명해야한다고 생각하지만, 여기에 두 번째 방법의 예입니다개체 생성에 정적 클래스 또는 추상 클래스 사용

public class Car{ 

    private int mCar_ID;//This indicates which Car to load 
    private String mCarName; 

public Car(int pCar_ID){ 
    mCar_ID = pCar_ID; 
      mCarName = CarNames.getCarName(pCar_ID); 
      //Do Stuff with collected parameters 
} 

} 

이 알려 :이 클래스에서 사용되는

public class CarNames { 

public static String getCarName(int pCarIndex){ 

    switch (pCarIndex) { 
    case 0:   
     return "Toyota"; 
    default: 
     throw new Error("pCarIndex does not exist!"); 
    } 
} 

} 

개체를 만들 수 뭔가 이상하지 않으면. 감사.

편집 : 차는 크기, 엔진 등과 같은 다른 매개 변수를 가질 수 있습니다. 추상 클래스를 선택한 이유는 인터페이스보다 더 융통성이 있다고 생각하기 때문입니다. 줄을 따라 메서드를 추가 할 수 있기 때문입니다.

+2

자동차의 각 유형마다 이름이 다른 유일한 것입니까? 아니면 각각의 방법이 있을까요? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

게시 한 코드에서 int 대신 [enums] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)를 사용할 수 있습니다. – assylias

+0

그래서 정적 클래스를 완전히 건너 뛰고 enum으로 직접 이동한다고 말하고 있습니까? 나는 그것에 솔질해야 할 것이다. – eBehbahani

답변

3

내 차 객체 (예 : Toyota, Nissan 등)를 만들 때 확장하거나 차라리 특정 객체의 세부 정보를 보유하는 정적 클래스를 사용할 수 있습니까? 도요타 또는 닛산을 만들기 위해 일반 차체에서 사용하십시오.

도 아니다. 정확히 Car 클래스와 특정 차량의 세부 정보가 들어있는 파일 (예 : 데이터베이스)이 있습니다. 그런 다음 파일 내용에 따라 해당 Car 클래스의 인스턴스를 만듭니다.

차는 등의 크기, 엔진, 서로 다른 매개 변수 지난 반 세기

프로그래머는 "데이터"로이 언급 한있을 수 있습니다. 소스 코드로 구워지는 데이터가 적을수록 좋습니다.

+0

좋아, 네가하는 말을 이해할 것 같아. 그래도 질문이 있습니다. 파일에서 데이터를 읽는 데 시간이 오래 걸리지 않습니까, 아니면 파일에 쓸 때만 성능이 저하 될까요? 감사합니다. – eBehbahani

+0

@ rioneye : "파일에서 데이터를 읽는 데 시간이 더 걸리지 않습니까?"- 대부분의 프로그램은 파일 형식으로 제공되며 파일이 펀치 카드를 교체 한 이후에 수행되었습니다. 파일 (프로그램)을 읽는 것이 파일 (데이터베이스)을 읽는 것보다 어떻게 든 빠르다고 생각하는 이유는 무엇입니까? 이것은 모든 차량을 동시에 사용하지 않는 경우 모든 데이터를 읽을 필요가없는 데이터베이스의 경우 특히 그렇습니다. – CommonsWare

+0

네,하지만 질문이 하나 더 있습니다. 이 파일은 모든 매개 변수가 문자열, bool 등일 경우에만 유용 할 것이라고 xml을 말할 수 있습니다. 예를 들어 엔진이 가속을 제어하는 ​​메서드 등을 가진 개체라고 가정합니다. 어떻게 그 객체를 파일에 저장할 수 있습니까? – eBehbahani

1

나는 이것에 찌르 게 될 것이다 ... 나는 결국 당신의 목표가 유지 보수 또는 기억의 용이성인지 확신 할 수 없다. 또는 이것이 안드로이드 질문이기 때문에 나는 짐작할 것이다. 기억이있다. 특히 100 점 정도의 물건에 대해서 이야기 할 때 특히 그렇습니다.

내 생각에 처음으로 flyweight pattern은 그 객체가 메모리를 공유하고 더 작은 풋 프린트를 가질 수 있다고 생각했습니다. 그러나 나는 @ CommonWare 대답으로 ... 당신이 말하는 데이터의 일부입니다. 귀하의 질문을 이해한다면, 귀하의 계획은 매우 효율적으로 들리지 않는 카드 아이디를 기반으로 귀하의 차량의 모든 다른 부분을 코드에 정의하는 것입니다. 그것은 xml 또는 sqllite 데이터베이스이든 상관없이 데이터처럼 들립니다.

당신은 추상적 인 클래스 차를 확장하는 유형 (클래스)으로 끝날 수있는 니산에 대해 이야기하고 있을지도 모른다. 그러나 엔진 크기, 높이, 너비 및 연비는 모든 데이터이다.

+0

감사합니다. 그것은 안드로이드에서 XML에 대한 더 많은 연구를해야 할 것 같습니다. – eBehbahani