2016-11-28 14 views
1

私はクラス階層の構造に基づいてチャレンジしようとしています。私は、交通機関に基づく車両を含む階層を評価し、正しく構造化しようとする必要があります。ここでは、クラスのオプションは次のとおりです。クラス階層を構成する最善の方法は?

  • 自転車
  • カー
  • サイクル
  • JetPlane
  • RoadVehicle
  • 燃料補給
  • 電車
  • 交通
  • 三輪車

構造的には、どのクラスが抽象クラスで、どのクラスがどのクラスに拡張され、どのクラスがインターフェイスであるかを決定する必要があります。ここで

は、私がこれまでに出ているものです:

交通

public abstract class Transport 
{ 

    //Super class. All vehicles are a form of transportation. 

} 

自転車

public abstract class Bicycle extends RoadVehicle 
{ 

    //Bicycle is a road vehicle. Does not implement Refuelable as it does not use fuel. Is abstract because Cycle is its sub-class. 

} 

カー

public class Car extends RoadVehicle implements Refuelable 
{ 

    //Extends RoadVehicle which extends Transport and also implements Refuelable as it uses fuel. 

} 

サイクル

public class Cycle extends Bicycle 
{ 

    //Cycle is an act which is carried out when using a Bicycle so it extends Bicycle. 

} 

JetPlane

public class JetPlane extends Transport implements Refuelable 
    { 

     //JetPlane is not a road vehicle but directly extends Transport because it is used as a form of transport, also implements Refuelable. 

    } 

RoadVehicle

public abstract class RoadVehicle extends Transport 
{ 

    //All classs that are road vehicles extends this clss. This seperates the road vehicles from the non-road vehicles. 

} 

燃料補給

public interface Refuelable 
{ 

    //An interface that declares which tyypes of transport use fuel and which do not. 

} 

電車

public class Train extends Transport implements Refuelable 
{ 

    //Trains are not a road veicle but do extend Transport and are refuelable. 

} 

三輪車

public class Tricycle extends Transport 
{ 

//Tricycle is a form of transport for children, it is not refuelable and does not operate on the road. 

} 

この権利ですか、あなたはすべてのエラーを見ることができますか?私は継承に関する私の知識をテストするためにこれをやっているので、アドバイスやポインタが大いに感謝してくれます。

+0

の意見を私たちに尋ねるが、ルールに反しています。あなたが質問をしているものを改善してほしいなら、私たちはあなたを助けることができます。あなたがそれがどのように動作するかを理解するのに役立つ一種のツリーとして構造化されていれば、それはずっと優れています。 – Fallenreaper

+0

と思われます。継承に対する最良の答えは、しばしば「しない」ことであることを忘れないでください。 – markspace

+1

高レベルからはうまく見えますが、振る舞い(メソッド)を適切に定義するまで誰も気づくことはできません。 – developer

答えて

1

我々は各エンティティにすることになっている方法を伝えることができないことを考えると、私は次のように起動します:

interface Transport 
interface Refuelable 
interface RoadVehicle extends Transport 
interface Cycle extends RoadVehicle 

class Bicycle implements Cycle 
class Tricycle implements Cycle 
class Car implements RoadVehicle, Refuelable 
class JetPlane implements Transport, Refuelable 
class Train implements Transport 
+0

これをさらに踏襲すると、 'Train'のサブクラスは' Train'を拡張し、 'Refuelable'を実装する' DieselLocomotive'になります。 – Jason

関連する問題