1

楽しみのために、Java でバスケットボールのシミュレーション ゲームを作りたいと思っています。私は 1 つの単純なクラス「チーム」を持ちたいと思っており、「プレーヤー」という名前のクラスチームのサブクラスを持ちたいと思っています。クラスとサブクラスを宣言する方法は理解していますが、特定のチームにプレーヤーを宣言するにはどうすればよいですか?

例えば:

Team team1 = new Team();
Team team2 = new Team();
Player nameHere = new Player();

Player nameHere が team1 や team2 などの場所に設定するにはどうすればよいですか?

4

6 に答える 6

2

理解する必要がある 2 つの重要なソフトウェア設計原則があります。

- Inheritance (IS A relationship)

- Composition (HAS A relationship)

最初の概念を扱うときは、クラスとサブクラスを使用します。しかし、この場合、サブクラスは本質的に親クラスと同じです: 車とフェラーリのようなものです。Ferrari IS A car (この種の関係は、OOP では継承によって表されます)。それにもかかわらず、車にはフロントガラスがあります。ウインド スクリーンは車ではなく、その一部です (この関係は、あるクラスを別のクラスのフィールド メンバーとして含めることによって表されます - 構成)。これらの関係について知ったので、次の質問を自問する必要があります: ISプレーヤーAチーム、またはHASチームAプレーヤー?

この場合、それは明らかです。List<Player>クラス内にa を配置する必要がありますTeam

于 2013-11-08T23:06:36.690 に答える
0

このようにしてください

class Player {

//player properties and setter , getter

}

class Team{

  List<Player> players = new ArrayList<Player>();

  // setter and getter  
}

プレイヤーをチームに追加する

Team t1= new Team();

Player p1 = new Player(); 
Player p2 = new Player();
Player p3 = new Player();

t1.getPlayers().add(p1);
t1.getPlayers().add(p2);
t1.getPlayers().add(p3);
于 2013-11-08T23:05:05.690 に答える
0

これに似たものが必要になります。

class Team {
    List<Player> players;

    Team() {
        players = new ArrayList<Player>();
    }

    public void addPlayer(Player p) {
        players.add(p);
    }
}

を作成して追加する方法は次PlayerTeamとおりです。

Player player1 = new Player();
Player player2 = new Player();
Team team1 = new Team();
team1.addPlayer(player1);
team1.addPlayer(player2);

知っておくべきことはinheritance (is a)composition(has a)関係です。

お役に立てれば。

于 2013-11-08T23:05:27.290 に答える
0

Teamを のコンテナと考えるとPlayerTeamクラスには を含むプロパティと、のプレーヤーPlayerを追加、削除、クリアなどするためのアクセサ メソッドがあります。Team

もちろん、Teamクラスには独自のプロパティとメソッドがありPlayer、チーム内のあらゆるデータ (プレイヤー数など) を利用する可能性があります。

この例では、継承に関連するトピックはありません

クラスには、コンテナと「コンテナ」の関係があります(Artemの回答では適切な用語が使用されています)。

例えば:

class Team {
    // the private property containing the players
    // I use a Set here because each player is unique
    private Set<Player> players;
    public Team() {
        // initializing the set as HashSet
        players = new HashSet<Player>();
    }
    public void addPlayers(Player... players) {
        // adding all players
        for (Player p: players) {
            this.players.add(p);
        }
    }
    public Collection<Player> getPlayers() {
        // returning a copy of the team's players
        return new HashSet<Player>(players);
    }
}
class Player {
    // TODO player's properties such as name, age, feats, etc.
}

Player次に、次のようにs を追加しますTeam

Team t = new Team();
// adding single player
t.addPlayers(new Player());
// adding an array of players
t.addPlayers(new Player[]{new Player(), new Player()});
于 2013-11-08T23:07:49.847 に答える