2015-04-07 2 views
-2

Я пытаюсь найти пример класса, расширяющего абстрактный класс в Java, который предназначен для выполнения действия на основе выбранной радиокнопки и нажатия кнопки.Java-классы, которые расширяют действие абстрактных классов при нажатии кнопки

Инструкция:

Создания формы транзакции для управления балансом счета.

  1. Создать параметры сделки:

    Депозиты добавить, чтобы сбалансировать проверки вычесть из остатка если баланс> чека затем вычесть чек из баланса еще дисплей Недостаточно средств Сообщения и вычитанию Service Charge ($ 10) с баланса Затраты на обслуживание ($ 10) вычесть из баланса

  2. Использование Аннотация Класс Транзакция для создания классов:

    класс Депозит класс ServiceCharge класс Check переопределить абстрактную функцию calculateBalance() в каждом классе, чтобы выполнить соответствующие расчеты по балансу выбросить исключение в классе Check.calculateBalance()

Я нахожусь в использовать следующий абстрактный класс:

public abstract class Transaction { 
 

 
    /** 
 
    The Transaction class simulates a bank account. 
 
    */ 
 

 
    static final double SERVICE_CHARGE = 10.0; 
 
    double transactionamount = 0.0; 
 

 
    static double balance = 0.0; // Account balance 
 
    static double totalDeposits = 0.0; 
 
    static double totalChecks = 0.0; 
 
    static double totalServiceCharges = 0.0; 
 
    static int numberDeposits = 0; 
 
    static int numberChecks = 0; 
 
    static int numberServiceCharges = 0; 
 

 
    public Transaction() { 
 
    transactionamount = 0.0; 
 
    } 
 

 
    public Transaction(double amount) { 
 
    this.transactionamount = amount; 
 
    } 
 

 
    public Transaction(String str) { 
 
    transactionamount = Double.parseDouble(str); 
 
    } 
 

 
    public void deposit(double amount) { 
 
    balance += amount; 
 
    } 
 

 
    public void deposit(String str) { 
 
    balance += Double.parseDouble(str); 
 
    } 
 

 
    static public double getBalance() { 
 
    return balance; 
 
    } 
 

 
    abstract void calculateBalance() throws Exception; 
 

 
}

Вот что у меня есть, что я пытаюсь получить на работу:

Класс, который включает класс Transaction, указан первым, мой пример - класс Check. Я пытаюсь настроить мою кнопку расчета и выбор меню транзакций для передачи информации на основе выбора переключателя и текстовых полей.

package Assignment5; 
 

 
public class Check extends Transaction { 
 

 
\t public double checksBalance(double check) // makes alterations to Transaction variables once information is passed from text field. 
 
\t { 
 
\t \t check = transactionamount; 
 
\t \t totalChecks = check + totalChecks; // increases total amount in checks. 
 
\t \t balance = check + totalDeposits - totalChecks - totalServiceCharges; 
 
\t \t return check; 
 
\t \t 
 
\t \t 
 
\t } 
 
\t public int checks() { 
 
\t \t return numberChecks++; // increases number of checks written. 
 
\t \t } 
 
\t 
 
\t 
 
\t @Override 
 
\t void calculateBalance() throws Exception { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t 
 
\t } 
 
\t 
 
} 
 

 
public class TypePanel extends JPanel 
 
\t \t { 
 

 
\t \t  public String deposit, check, service; 
 
\t \t 
 
\t \t \t JRadioButton depositButton; 
 
\t \t \t JRadioButton checkButton; 
 
\t \t \t JRadioButton serviceButton; 
 
\t   ButtonGroup radioButtonGroup; 
 

 
\t \t \t public TypePanel() // 
 
\t \t \t { 
 

 
\t \t \t \t setLayout(new GridLayout(3, 1)); // Panel Layout 
 

 
\t \t \t \t depositButton = new JRadioButton("Deposit", true); // Radiobuttons listed here. 
 
\t   \t checkButton = new JRadioButton("Check"); 
 
\t   \t serviceButton = new JRadioButton("Service Charge"); 
 
\t   \t 
 

 
\t   \t radioButtonGroup = new ButtonGroup(); 
 
\t \t \t \t radioButtonGroup.add(depositButton); 
 
\t   \t radioButtonGroup.add(checkButton); 
 
\t   \t radioButtonGroup.add(serviceButton); 
 

 
\t   \t 
 

 
\t   \t add(depositButton); 
 
\t \t \t \t add(checkButton); 
 
\t \t \t \t add(serviceButton); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t public void GetTotals() 
 
\t \t \t { 
 
\t \t \t \t 
 
\t \t \t  if (checkButton.isSelected()) 
 
\t \t \t \t { 
 
\t \t \t \t  
 
\t \t \t \t  Transaction.transactionamount = AmountPanel.amountEntered; 
 
\t \t \t \t } 
 
\t \t \t \t 
 
\t \t \t 
 
\t \t } 
 

 

 
public class AmountPanel extends JPanel { 
 
\t \t \t public static Object amountEntered; 
 
\t \t \t public String amountInput; 
 
\t \t \t private JLabel amountLabel; 
 
\t \t  private String defaultText; 
 
\t \t  private JTextField amountTextField; 
 
\t \t  
 

 
\t \t \t public AmountPanel() 
 
\t \t { 
 
\t \t \t setLayout(new GridLayout(2, 1)); // Panel Layout. 
 

 
\t \t \t amountLabel = new JLabel("Enter Amount"); 
 

 
\t \t \t amountTextField = new JTextField(6); 
 

 
\t \t \t defaultText = "0"; // Default value placed in textfields within this panel. 
 

 
\t \t \t amountTextField.setText(defaultText); 
 

 
\t \t \t add(amountLabel); 
 
\t \t \t add(amountTextField); 
 
\t   } 
 

 
\t  public double GetAmount() 
 
\t  { 
 
\t \t \t double amountEntered; 
 

 
\t \t \t amountInput = amountTextField.getText(); 
 
\t \t \t amountEntered = Double.parseDouble(amountInput); 
 

 

 

 
\t \t \t return amountEntered; 
 
\t \t } 
 
\t }

Я не включил весь мой код, но я стараюсь, чтобы получить количество введенного из текстового поля методов, расположенных в классе Check, так что они будут потом изменение влияет на переменные класса Transaction. Я не думаю, что я делаю это наилучшим образом.

+1

Почему не первая попытка сделать это самостоятельно и посмотреть, что вы можете придумать? Тебе нечего терять в попытке и все выиграть. Тогда, если вы успешны - здорово, вы сделали хорошо и сами по себе, и если вы потерпите неудачу, то нет большой проблемы, так как вы можете вернуться сюда, задать новый вопрос, ** более конкретный и ответный вопрос **, и, скорее всего, получите отличный и быстрый ответ. –

+1

Кроме того, ваши инструкции в значительной степени объясняют, что вы должны делать. С помощью этих инструкций и почти любого введения в книгу Java или учебник по абстрактным классам вы должны иметь возможность по крайней мере начать самостоятельно. Опять же, я настоятельно призываю вас сделать именно это. –

ответ

0

Любой класс, который вы пишете для продления транзакции, должен быть либо абстрактным, либо, по крайней мере, реализовать void calculateBalance() throws Exception; , Точкой «абстрактного» является реализация методов, которые будут распространены среди производных классов, а затем реализовать методы, которые будут отличаться в производном классе. Это то же самое, что и расширение любого другого класса, за исключением того, что если вы расширяете абстрактный класс как не абстрактный класс, вы должны реализовать любой абстрактный метод из абстрактного класса.

При необходимости вы можете заменить некоторые другие функции, просто переустановив их, и вы можете заставить их использовать реализацию расширенного класса при вызове путем добавления аннотации @Override к методу.

Хорошо читает: https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

Смежные вопросы