GNU Smalltalk - методы наследования и множественные параметры / конструкторы
Скажи яя пытаюсь перевести следующие классы Java в GNU Smalltalk:
public abstract class Account {
protected String number;
protected Customer customer;
protected double balance;
public abstract void accrue(double rate);
public double balance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
balance -= amount;
}
public String toString() {
return number + ":" + customer + ":" + balance;
}
}
public class SavingsAccount extends Account {
private double interest = 0;
public SavingsAccount(String number, Customer customer, double balance) {
this.number = number;
this.customer = customer;
this.balance = balance;
}
public void accrue(double rate) {
balance += balance * rate;
interest += interest * rate;
}
}
Я пытаюсь понять, как я могу написать методы / конструкторы, которые принимают несколько параметров. Вот'что яу нас так далеко:
Object subclass: Account [
|number customer balance|
balance [
^balance
]
deposit: amount [
balance := balance + amount
]
withdraw: amount [
balance := balance - amount
]
asString [
^number asString, ':', customer asString, ':', balance asString
]
]
Account subclass: SavingsAccount [
|interest|
SavingsAccount class [
new [ "add some sort of support for multiple arguments?"
"call init"
]
]
init [ "add some sort of support for multiple arguments?"
interest := 0.
balance := accountBalance.
customer := accountCustomer.
number := accountNumber
]
accrue: rate [
balance := balance + (balance * rate).
interest := interest + (interest * rate)
]
]
Несколько вопросов:
Как сделать Account абстрактным классом в Smalltalk?Правильно ли я считаю, что все переменные экземпляра учетной записи просто доступны по имени в классе SavingsAccount?Как я могу реализовать нечто, имитирующее конструктор с несколькими параметрами в классе Java SavingsAccount?