我希望创建两个新类(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);
所以我想做的是计算特定球队中球员的平均年龄。有什么想法或建议吗?
最佳答案
现实生活中什么是团队?这是一群球员,所以你需要让Team
由Players
组成,然后问一个问题“哪里有最大的信息量来完成平均球员年龄的计算? ”此信息放置在 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/