2016-05-26 2 views
0

で活動カレンダーを作成:私は例えば、活動と相まってカレンダーを実装しようとしていたJava

public abstract class GroupCalendar { 

HashMap<TimeFrame, Activity> entries = new HashMap<TimeFrame, Activity>(); 

public abstract void addActivity(TimeFrame t, Activity a); 

public abstract void removeActivity(TimeFrame t, Activity a); 

public abstract void findActivity(TimeFrame t); 

public abstract void printAll(); 
} 
:私は2つの抽象クラスを考えていた enter image description here

、最初GroupCalendarは次のようになります

及び第二アクティビティクラスであろう:延びる具象クラスが存在することになるその後

public abstract class Activity extends GroupCalendar { 

private String name, location; 

public Activity() { 
} 

public Activity(String name, String location) { 
    this.name = name; 
    this.location = location; 
} 

public abstract String getName(); 

public abstract void setName(String name); 

public abstract String getLocation(); 

public abstract void setLocation(String location); 
} 

ctivity:

public class Sport extends Activity { 

private String name, location; 
private boolean outdoors; 

public Sport(String name, String location, boolean outdoors) { 


    this.name = name; 
    this.location = location; 
    this.outdoors = outdoors; 
} 

@Override 
public void addActivity(TimeFrame t, Activity a) { 
} 

@Override 
public void removeActivity(TimeFrame t, Activity a) { 
} 

@Override 
public void findActivity(TimeFrame t) { 
} 

@Override 
public void printAll() { 
} 
} 

問題は、私はスポーツを追加しようと、私が得るすべては一切屋外で、名前と場所ではありません、私は適切に活動を追加することができないということです。 誰かが私のアプローチに間違っていることについて私にいくつかのヒント/ポインターを与えることができれば、それは私に多くの意味があります。

+0

これは広すぎて、何か説明するテキストがほとんどないため、十分な作業をしていないというヒントかもしれません。とにかく、この種の質問に適した場所は[プログラマー](http://programmers.stackexchange.com/)です。私のこれまでのアドバイスに従って、そこに投稿してください。 – dabadaba

+0

この例題をどのように使用して問題を強調表示しているかの例を共有できますか? – erkfel

答えて

1

ActivityGroupCalendarに拡張される理由はわかりませんが、それらの間に親子関係はありません。

outdoorsを入手する場合は、Sportにゲッターを作成してください。

また、あなたの教師は、printActivityに入れることをお勧めします。したがって、どのサブクラスもそれに応じて実装する必要があります。例えば、Sportは、name + location + outdoorを印刷します。 aActivity

+0

私は試してみましたが、a.getOutdoors()のようなメソッドでそれを使用すると、aはActivityオブジェクトですが、エラーが発生します。 – user3848412

+0

もちろん、 'Activity'には' getOutdoors() 'がありません。そのメソッドを呼び出すには' Activity'を 'Sport'にキャストする必要があります –

1

まずここで、あなたはa.print()を呼び出すことができるだろう 、私はあなたがこのために抽象クラスを利用したい理由はわからないんだけど?

第2に、あなたのカレンダーはアクティビティで構成され、アクティビティはカレンダーの性質を持つべきではありません。アクティビティが他のアクティビティで構成されていない限り、1つのアクティビティには他のタイムフレームとアクティビティのコレクションが必要です。

具体的なGroupCalendarクラスと具体的なActivityクラスがあり、必要に応じてサブクラスでActivityメソッドをオーバーライドします。 ActivityクラスはActivityメンバーのアクセスと変更を処理する必要がありますが、すべてのサブクラス(Activity)のメンバーをオーバーライドする必要はありません。

Activityには、namelocationのオーバーロードされたコンストラクタがあります。したがって、Sportクラスのオーバーロードされたコンストラクタでは、super(name, location)を呼び出して、不要な割り当てを削除する必要があります。

関連する問題