Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2011, 21:37   #1
ISV-777
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 40
Вопрос Наследование.

Вообщем составил прогу кредитных карт. Но у меня она работает не так как я ожидал. Я хотел задать 2 вида карт. Ну и для них свои методы. И если кто-то совершил с карты покупку то соответственно покупка для двух различных карт обойдется с различной скидкой.


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package CreditCard;

/**
*
* @author Stas
*/
public class ClassicCreditCard extends CreditClassAccount {

private static int NextAccountNo = 8000001;
private int accountNomer;
public ClassicCreditCard(double initBalance) {
super(initBalance);
accountNomer = NextAccountNo++;
}
@Override
public int AccountNo() {
return accountNomer;
}

@Override
public void Interest(){
if(getBalance() > 500.0){
super.Interest();
}
}

@Override
public void CProduct() {
super.CProduct();
}
}




/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package CreditCard;


/**
*
* @author Stas
*/
public class GoldCreditCard extends CreditClassAccount {
private static int NextAccountNo = 1000001;
private int accountNomer;

public GoldCreditCard(double initBalance) {
super(initBalance);
accountNomer = NextAccountNo++;
}
@Override
public int AccountNo() {
return accountNomer;
}

@Override
public void Fee(){
if(getBalance() < 2000){
super.Fee();
}
}

@Override
public void CProduct() {
super.CProduct();
}
}




package CreditCard;

/**
*
* @author Stas
*/

abstract public class CreditClassAccount {
private static double rate; //процентная ставка
private double balance; // баланс счета
private double purchase;

CreditClassAccount(double initBalance){
if(initBalance > 0){
balance = initBalance;
}
}
public double getPurchase(){
return purchase;
}

abstract public int AccountNo(); // возвращает номер счета

public static double getRate(){ //возвращает процентную ставку
return rate;
}

public static void setRate(double newRate){ //устанавливает процентную ставку
if(newRate > 0.0 && newRate < 18.0){
rate = newRate;
}
}

public void Deposit(double Amount){// внести деньги на счет
if(Amount > 0.0){
balance += Amount;
}
}

public void Wittdrawal(double Amount){// снять деньги со счета
if(Amount >= 0.0){
if(Amount <= balance){
balance -= Amount;
}
}
}

public double getBalance(){
int rubli =(int)(balance);
return rubli;
}
//каждый месяц начислять проценты и брать абонентскую плату
public void Monthly(){
Fee(); //берем абонентскую плату
Interest(); // начисляем проценты
}

public void Fee(){
balance -= 5.0;
}
public void Product(){
CProduct();

}
public void CProduct(){
if (getPurchase()>10000){
balance-=purchase*0.5;
}
else
balance=-purchase*0.7;
}



public void Interest(){
balance = balance*(1 + rate/12/100.0);

}
}




package CreditCard;

/**
*
* @author Stas
*/

import java.util.*;
public class CreditCard {
Vector<Object> accounts = new Vector<Object>();
public CreditCard() {
}

public void newAccount(int type, double initBalance,double purchase){
switch(type){
case 1: {GoldCreditCard GD= new GoldCreditCard(initBalance);
CreditClassAccount.setRate(15.0);
accounts.add(GD); break;
}
case 2: {ClassicCreditCard CL= new ClassicCreditCard(initBalance);
CreditClassAccount.setRate(9.0);
accounts.add(CL);
}
}
}

public void procent(CreditClassAccount b){
b.Monthly();
System.out.println(b.AccountNo() + " " + b.getBalance());
}

public void bankBalance(){
for(int i = 0; i < accounts.size(); i++){
procent((CreditClassAccount)account s.elementAt(i));

}
}
public static void main(String[] args) {
CreditCard bank1 = new CreditCard();
bank1.newAccount(1, 400,100);
bank1.newAccount(1,200000,100);
bank1.newAccount(2,30000,100);
bank1.bankBalance();

}

}

Последний раз редактировалось ISV-777; 03.12.2011 в 21:40.
ISV-777 вне форума Ответить с цитированием
Старый 05.12.2011, 22:31   #2
ISV-777
Пользователь
 
Регистрация: 01.11.2010
Сообщений: 40
По умолчанию

Подскажите, пожалуйста.
ISV-777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование С++ sir.andrey Помощь студентам 3 07.07.2011 16:31
наследование c++ Nata-Tata Помощь студентам 1 06.04.2011 00:09
Наследование в С++ 3AKPbIBAKA Помощь студентам 3 24.11.2010 16:38
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39