gpt4 book ai didi

java - java 面向对象连接两个类

转载 作者:行者123 更新时间:2023-12-01 07:18:41 25 4
gpt4 key购买 nike

我希望创建两个新类(class),我可以将它们连接起来。我想创建一个玩家和团队类。我的目标是将一名球员分配到一个球队。基本上我希望使用类中的类作为属性。

我想象我的玩家类别是这样的;

public class Player {
String first_name;
String last_name;
int age;
}

我的团队是这样的;

public class Team {
String Member1;
String Member2;
}

以及我的主要类(class);

Player Player1 = new Player("Peter", "Jensen", 24);

所以我想做的是计算特定球队中球员的平均年龄。有什么想法或建议吗?

最佳答案

现实生活中什么是团队?这是一群球员,所以你需要让TeamPlayers组成,然后问一个问题“哪里有最大的信息量来完成平均球员年龄的计算? ”此信息放置在 Team 类(玩家列表)内,我们需要将计算平均年龄的方法放置到 Team 类中。这就是所谓的“信息专家原则”,是众多优秀的 oop 设计原则之一。

https://en.wikipedia.org/wiki/GRASP_(object-oriented_design)#Information_expert

这样代码就会像这样:

玩家等级:

  public class Player {
private String firstName;
private String lastName;
private int age;

public Player(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}

public String firstName() {
return firstName;
}

public String lastName() {
return lastName;
}

public String age() {
return age;
}

}

团队级别:

  public class Team {
private List<Player> players;

Team(List<Player> players) {
this.players = players;
}

public void add(Player player) {
players.add(player);
}

public void remove(Player player) {
players.remove(player);
}

public double averageAge() {
double sum = 0;
double amount = players.size();
for (Player player : players) {
sum += player.age();
}
return sum / amount;
}

}

之后我们就可以以各种方便的方式使用这些类,例如:

public class Test {

public static void main(String[] args) {
Team team = new Team(Arrays.asList(new Player[] {
new Player("Peter", "Jensen", 24),
new Player("Foo", "Bar", 50)
}));
System.out.println(team.averageAge()); // 37
}
}

简单地向团队询问球员的平均年龄是多少,团队就会回复您。

关于java - java 面向对象连接两个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com