Początkujący. Bank w Javie

0

Witam. Może znajdzie się tu ktoś, kto pomógłby mi trochę w zrozumieniu javy. Mam do poprawy ten przedmiot we wrześniu i podjąłem próby poćwiczenia pisania programów w tym języku. Na razie z marnymi rezultatami.... No i właśnie,na początek taki programik

  • Napisz klasę Konto:
    o klasa reprezentuje konto bankowe,
    o umożliwia wpłacanie i wypłacanie pieniędzy, oraz sprawdzanie salda,
    o powinniśmy kontrolować, czy użytkownik nie podaje niewłaściwych danych (np. ujemnej kwoty)
    o konto uniemożliwia dokonanie debetu,
    o za wykonywane operacje wpłaty i wypłaty pobierana jest stała prowizja.
  • Napisz klasę Bank:
    o bank składa sie z kont (klasy Konto),
    o możemy dodawać konta,
    o szukać kont o danym numerze.

Wskazówki:

  • Konto powinno zawierać:
    o składową reprezentującą kwotę na koncie,
    o metodę wpłać umożliwiającą wpłacenie podanej kwoty,
    o metodę wypłać, umożliwiającą dokonanie wypłaty,
    o metodę saldo, zwracającą stan konta.
  • Bank powinien zawierać:
    o tablicę lub listę Kont,
    o metodę dodaj, dodającą nowe konto do Banku,
    o metodę szukaj, zwracajacą konto o podanym numerze.
  • Składowe klas powinny być prywatne (słowo kluczowe private); jedynie metody (oraz konstruktory) powinny być publiczne (słowo kluczowe public).
  • Dla uproszczenia można przyjąć, że unikalnym numer konta jest po prostu jego indeks w tablicy w Banku.
  • Wszystkie operacje dotyczące konta są wywoływane bezpośrednio z niego, po jego pobraniu przy pomocy metody szukaj:
    bank.szukaj(3).wpłać(100);

Z pierwszą częścią, tzn klasą Konto jakoś sobie poradziłem, ale co do Banku to mam wątpliwości, że cokolwiek zrobiłem dobrze . Nie za bardzo przepadam za wypełnianiem tablic, zwłaszcza obiektami innej klasy ....

Może ktoś mi to jakoś wyjaśni w przystępny sposób. no dobra, rozpisałem się już chyba za dużo. Pod spodem to co udało mi się wypocić:

public class Konto {

private double stanKonta;

Konto (double stanKonta){
	this.stanKonta = stanKonta;
}

public void wplac(double kwota){
	if(kwota>0)
	stanKonta = (stanKonta + kwota) - 2.50;
	else{
		System.out.println("Nie możesz wpłacić ujemnej kwoty !!!");
	}
}

public void wyplac(double kwota){
	if((stanKonta-kwota) >= 0)
	stanKonta = (stanKonta - kwota) - 2.50;
	else{
		System.out.println("Nie masz tyle środków na koncie !!!");
	}
}

public double stanKonta(){
	return stanKonta;
	}

public void saldo(){
	System.out.println("Stan konta wynosi:" + stanKonta());
}

}

public class Bank {

public Konto konto;
static Konto [] konta; 
int numerKonta;

public Bank(){
	numerKonta = 0;
	konta = new Konto[10];
}
public void dodajKonto(Konto konto){
	numerKonta++;
	konta[numerKonta] = this.konto;
} 
	
public Konto szukajKonta(int numerKonta){
	return konta[numerKonta];
}
	

public static void main(String args[]){
	
	Konto konto1 = new Konto(50000);
	Konto konto2 = new Konto(15000);
	
	Bank bank = new Bank();
	
	bank.dodajKonto(konto1);
	bank.dodajKonto(konto2);
	
}

}

??? Czego tu brakuje ? Coś nie za bardzo mi to działa .... :-(

0
public class Bank {

        public Konto konto; // usun 
        static Konto [] konta; // dlaczego static?
        int numerKonta;
       
        public Bank(){
                numerKonta = 0;
                konta = new Konto[10];
        }
        public void dodajKonto(Konto konto){
                //zamien kolejnoscia te dwie instrukcje, bo tablice sa indeksowane od 0
                numerKonta++; //musisz sprawdzac, czy numerKonta < 10
                konta[numerKonta] = this.konto; // usun "this", bo odwolujesz sie do atrybutu, nie parametru
        }
               
        public Konto szukajKonta(int numerKonta){
                return konta[numerKonta]; // powiniennes sprawdzac, czy numerKonta jest prawidlowy
        }
               
       
        public static void main(String args[]){
               
                Konto konto1 = new Konto(50000);
                Konto konto2 = new Konto(15000);
               
                Bank bank = new Bank();
               
                bank.dodajKonto(konto1);
                bank.dodajKonto(konto2);
               
        }
       
}

Powinno to wyglądać mniej więcej tak:

public class Bank {

        private Konto [] konta;
        private int liczbaKont;
       
        public Bank(){
                liczbaKont = 0; //to jest w zasadzie niepotrzebne
                konta = new Konto[10];
        }
        public void dodajKonto(Konto konto){
                 if (liczbaKont>= konta.length){
                                  throw new IllegalStateException("Bank pelen");
                 }                
                
                konta[liczbaKont] = konto;
                liczbaKont++; 
        }
               
        public Konto szukajKonta(int numer){
                 if (numer<0 || numer >= liczbaKont){
                                  throw new IllegalArgumentException("Zly numer konta");
                 }
                return konta[numer];
        }
               
       
        public static void main(String args[]){
               
                Konto konto1 = new Konto(50000);
                Konto konto2 = new Konto(15000);
               
                Bank bank = new Bank();
               
                bank.dodajKonto(konto1);
                bank.dodajKonto(konto2);
               
        }
       
}
0

Wielkie dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1