Skapa en Bank
Hej,
Jag håller på o implementerar en Bank, men har fastnat på funktionen Account (med tre argument) samt getSavingsAccount. Förstår inte instruktionerna helt och hur implementationen för Account (tre argument) skiljer sig från Account(två argument) kodmässigt. Tack på förhand!
import java.util.ArrayList;
public class Account {
// Can only be accessed in the class
private static int accountNumbers = 1;
private String customer; // name of the person owning the account
private int thisAccountNumber;
private double balance;
// Can be accessed by subclasses
protected static Bank theBank;
protected Account otherAccount;
protected ArrayList<String> transactions;
public Account(String arg1, double arg2) {
this.customer = arg1;
this.balance = arg2;
this.thisAccountNumber = accountNumbers++;
}
// Osäker på denna
public Account(String arg1, double arg2, double arg3) {
if (otherAccount.equals("Current")) {
this.customer = arg1;
this.balance = arg2;
}
}
public int getAccountNumber() {
return this.thisAccountNumber;
}
public String getCustomer() {
return this.customer;
}
public double getBalance() {
return this.balance;
}
public void setBalance(double arg) {
arg = this.balance;
}
public static void setBank(Bank arg) {
} // Bank ej implementerad än
// Osäker på denna
public SavingsAccount getSavingsAccount() {
if (otherAccount.equals("Savings")) {
return otherAccount;
} else {
return null;
}
}
public String toString() { // Fixas senare
}
}
Hade helst även sett instruktionerna för den första constructorn kompletta instruktioner, men meningen är att du ska skapa två konton när den andra (som tar tre argument) används. arg1 är kundens namn för båda. arg2 är saldo för första och arg3 är saldo för andra. Det andra kontot ska vara ett SavingsAccount. Sen ska du se till att båda dessa konton är varandras otherAccount.
thedifference skrev:Hade helst även sett instruktionerna för den första constructorn kompletta instruktioner, men meningen är att du ska skapa två konton när den andra (som tar tre argument) används. arg1 är kundens namn för båda. arg2 är saldo för första och arg3 är saldo för andra. Det andra kontot ska vara ett SavingsAccount. Sen ska du se till att båda dessa konton är varandras otherAccount.
Jag har uppdaterat uppgiften, kan även lägga till kod för klasserna CurrentAccount och SavingsAccount:
public class CurrentAccount extends Account {
CurrentAccount(String arg1, double arg2){super(arg1,arg2); this.otherAccount = null;}
CurrentAccount(String arg1, double arg2, double arg3){super(arg1,arg2,arg3);}
public void savings(double arg) {}
}
public class SavingsAccount extends Account {
public SavingsAccount(String arg1, double arg2) {super(arg1,arg2);}
}
Okej. Har du skapat subclasses än?
public class Animal {
public void makeSound() {
System.out.println("<Unrecognizable animal noise>");
}
}
public class Dog extends Animal {
public void makeSound() {
System.out.println("Woof!");
}
}
public class Cat extends Animal {
public void makeSound() {
System.out.println("Meow!");
}
}
Om du tittar här så har Dog och Cat skrivit över superklassens implementation av makeSound(). Likadant kan SavingsAccount och CurrentAccount ha egna versioner av getSavingsAccount(), som inte behöver likna varandra eller superklassens (Account).
Förstod du vad du skulle göra med constructorn?
thedifference skrev:Okej. Har du skapat subclasses än?
public class Animal { public void makeSound() { System.out.println("<Unrecognizable animal noise>"); } } public class Dog extends Animal { public void makeSound() { System.out.println("Woof!"); } } public class Cat extends Animal { public void makeSound() { System.out.println("Meow!"); } }
Om du tittar här så har Dog och Cat skrivit över superklassens implementation av makeSound(). Likadant kan SavingsAccount och CurrentAccount ha egna versioner av getSavingsAccount(), som inte behöver likna varandra eller superklassens (Account).
Förstod du vad du skulle göra med constructorn?
Yes jag känner till hur subclasses funkar, att de ärver metoder från superclass men kan även ha egna metoder med samma namn. Har inte skapat alla subclasses till uppgiften, tex Bank. Undrar om jag tänkt rätt här utifrån dina instruktioner:
public Account(String customer, double balanceCurrent, double balanceSavings) {
if (otherAccount.equals("Current")) {
this.customer = customer;
this.balance = balanceCurrent;
this.otherAccount.balance = balanceSavings;
}
}
Du jämför ett Account med en String. .equals() blir alltid false om objekten inte ens är jämförbara. Om du vill kolla om något har en viss klass skriver du
if (nameOfObject instanceof nameOfClass) {
// ...
}
String foo = "foo";
if (foo instanceof String) {
System.out.println("foo is a String!")
}
Detta är hur som helst fel spår för din constructor. Det är just en constructor. Det är det första som körs. Borde du inte VETA vad otherAccount är? Eftersom den inte har något default-värde är den null. När denna constructorn körs ska otherAccount skapas. Du behöver inga if.
Gör förresten tre-arg-constructorn i CurrentAccount-klassen.
public class CurrentAccount extends Account {
public CurrentAccount(String arg1, double arg2, double arg3) {
// Create this object
// Create a SavingsAccount
// Connect the accounts so they are each other's otherAccount
// Can be done in three lines!
}
}