这是我将要从UML转移到Java的图像,我不知道如何将它们锁定在一起,我不知道如何将一个bankAccount锁定到只有一个人。
如何连接2个类?
到目前为止,这是我的代码
我的主要方法
public class Upp5 {
public static void main(String[] args) {
Person2 david = new Person2();
BankAccount acc1 = new BankAccount();
BankAccount acc2 = new BankAccount();
david.setName("David");
david.setPnr("551012-8978");
acc1.setBnr("37");
acc2.setBnr("38");
System.out.println("Namn: " + david.getName() + " \nPersonnummer:" + david.getPnr());
System.out.println(acc1.getBnr() + "\n" + acc2.getBnr());
}
}
BankAccount.java:
public class BankAccount {
private String bnr;
private double balance;
public void credit() {
}
public void withdraw(){
}
public String getBnr(){
return bnr;
}
public void setBnr(String newAccount){
bnr = newAccount;
}
public void createAccount(String newNbr){
bnr = newNbr;
}
}
和Person2.java
public class Person2 {
private String pnr;
private String name;
//Koppla konto till pnr
public void addAccount(BankAccount a){
}
//Skapa Pnr och Namn
public void setPnr(String newPnr) {
pnr = newPnr;
}
public void setName(String newName){
name = newName;
}
// Hämta Pnr och Namn
public String getPnr(){
return pnr;
}
public String getName(){
return name;
}
}
答案 0 :(得分:1)
您需要为List<BankAccount>
实体定义Person2
:
public class Person2 {
private String pnr;
private String name;
// list of bank accounts (from 0 to n) the Person can have.
private List<BankAccount> accounts;
//Koppla konto till pnr
public void addAccount(BankAccount a){
if (accounts = null) accounts = new ArrayList<BankAccount>();
accounts.add(a);
}
//Skapa Pnr och Namn
public void setPnr(String newPnr) {
pnr = newPnr;
}
public void setName(String newName){
name = newName;
}
// Hämta Pnr och Namn
public String getPnr(){
return pnr;
}
public String getName(){
return name;
}
// include getters setters
}
EDIT1: 如@NathanCastlehow所建议,如果您想要双重关系,BankAccount.java
必须有Person2
attibute
public class BankAccount {
private String bnr;
private double balance;
// one bank account can only be owned by a single Person
private Person2 person;
public void credit() {
}
public void withdraw(){
}
public String getBnr(){
return bnr;
}
public void setBnr(String newAccount){
bnr = newAccount;
}
// generate getters setters
public Person2 getPerson(){
......
}
}
答案 1 :(得分:1)
您没有在图表中添加任何箭头,因此我们不知道银行帐户是否知道与其关联的人员。最合乎逻辑的做法是;让Person拥有一个你总是在Person的构造函数中启动的List。
如果您希望银行账户知道拥有他的人(这对我来说似乎合乎逻辑),请让Bankaccount拥有该物业&#34; Person owner&#34;并让构造函数需要Person存在。我不明白为什么你做了Person2而不是Person类。
提示:从不(!!!)使用参数,如; &#39;一个&#39;或者像&#39; nBr&#39;因为其他人想在实例中看到他们是什么而不是猜测。 :-)并尝试制定一些安全规则(这就是为什么我把布尔放在课堂上的原因)。
<强>解决方案:强>
人:
public class Person {
List<BankAccount> bankAccounts;
private String name;
private String pNbr;
public Person(String name, String pNbr) {
this.name = name;
this.pNbr = pNbr;
}
public void addAccount(BankAccount newAccount){
bankAccounts.Add(newAccount);
}
}
的BankAccount:
public class BankAccount {
private String nBr; //maybe make this final?
private double balance;
private Person owner;
public BankAccount(String nbr, Person owner) {
this(nbr, 0, owner); // If you also want to support new empty accounts
}
public BankAccount(String nbr, double balance, Person owner) {
this.name = name;
this.pNbr = pNbr;
this.owner = owner;
}
public boolean Credit(double amount)
{ // TODO: write code
boolean result = false;
return result;
}
public boolean Withdraw(double amount)
{ // TODO: write code
boolean result = false;
return result;
}
}
答案 2 :(得分:0)
因此,通常在关系模型等模型中完成此操作时,您将拥有一个关联类。所以一个类似于银行账户的ID和该人的ID。您可以使用前面的final关键字锁定变量,这会强制它们只被初始化一次。
答案 3 :(得分:0)
最简单的方式来链接&#34; java中的类是将所述类之一添加为属性。例如:
// Make it private to maintain encapsulation
private BankAccount myBankAccount;
但这只有在你有1..1(一对一)的关系时才有效。
您的UML图表示Person
和BankAccount
类之间的1..n(一对多)关系。换句话说,
Person
可能有多个BankAccount
s。
这意味着您必须使用结构来保持&#34;单个BankAccount
中的多个Person
。 Java已经为您提供了一些方便的类:
ArrayList
:简单,快速,按顺序排列的列表。允许尽可能多的itens。
Hashmap
:Map
接口的哈希实现。提供一种使用&#34;键&#34;来查找itens的方法。 (例如:帐户号码)。非常有效率。
建议阅读其中一些类文档。你可以随时在互联网上寻找一些简洁的例子;)