Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class Pankki {
- public static void main(String[] args) {
- Pankki P1 = new Pankki("Rahasampo");
- Asiakas A1 = new Asiakas("123456-1234", "Erkki Seppä", "Savitehtaankatu");
- Asiakas A2 = new Asiakas("789123-1234", "Emmi Erinomainen", "Entinenkoti");
- P1.avaaTili(A1, 42341234.2);
- P1.avaaTili(A1);
- P1.avaaTili(A2, 42341234.2);
- }
- private static int sarjaNumero = 0; // Juokseva luokkamuuttuja
- private final String NIMI;
- private final int TUNNUS;
- private static ArrayList<Tili> tilit;
- private static ArrayList<Asiakas> asiakkaat;
- /* Konstruktori
- * Alustetaan pankki antamalle sille nimi ja yksilöllinen tunnus.
- */
- public Pankki(String nimi) {
- NIMI = nimi;
- TUNNUS = sarjaNumero;
- ++sarjaNumero;
- }
- // Palauttajat
- /**
- * Palautaa NIMEN
- * AE: true
- * LE: String
- */
- public String annaNimi() { return NIMI; }
- /**
- * Palauta TUNNUKSEN
- * AE: true
- * LE: int
- */
- public int annaTunnus() { return TUNNUS; }
- /**
- * Onko tili tämän pankin tili?
- * AE: true
- * LE: boolean
- */
- public boolean onkoPankinTili(Tili tiliEhdokas) {
- if (tilit.contains(tiliEhdokas)) return true;
- return false;
- }
- /**
- * Onko asiakas tämän pankin asiakas?
- * AE: true
- * LE: boolean
- */
- public boolean onkoPankinAsiakas(Asiakas asiakasEhdokas) {
- if (asiakkaat.contains(asiakasEhdokas)) return true;
- return false;
- }
- // Muuttajat
- /**
- /*
- * Luokka jonka avulla hoidetaan tilin omistajan ja tilin käyttöoikeuksien haltijoiden tehtävät.
- */
- public class Asiakas {
- private String Nimi; // Asiakkan nimi
- private String HeTu; // Yksilöivä HenkilöTunnus
- private String Osoite; // Asiakkaan osoite
- /* Konstruktori
- * AE: Henkilötunnus, nimi &/ osoite != null / .length() = 0
- */
- public Asiakas(String henkilötunnus, String nimi, String osoite) {
- this.HeTu = henkilötunnus;
- this.Nimi = nimi;
- this.Osoite = osoite;
- }
- // Palauttajat
- /**
- * Palauta NIMI
- * AE: true
- * LE: String
- */
- public String annaNimi() { return Nimi; }
- /**
- * Palauta HeTu.
- * AE: true
- * LE: String
- */
- public String annaHeTu() { return HeTu; }
- /**
- * Palauta Osoite.
- * AE: true
- * LE: String
- */
- public String annaOsoite() { return Osoite; }
- // Muuttajat
- /**
- * Tehdään nimen muutos.
- * AE: true
- * LE: String
- */
- public void annaUusiNimi(String UusiNimi) {
- this.Nimi = UusiNimi; }
- /**
- * Tehdään osoitteen muutos.
- * AE: true
- * LE: String
- */
- public void annaUusiOsoite(String UusiOsoite) {
- this.Osoite = UusiOsoite; }
- /**
- * Tehdään osoitteen muutos.
- /* Tapahtuma voi olla esimerkiksi rahasumman maksu tililtä toiselle tai vaikkapa käteisen rahan nosto tililtä.
- */
- import java.util.Calendar;
- public class Tapahtuma {
- private Calendar aikaleima;
- private Asiakas suorittaja;
- private Tili mistä;
- private double summa;
- private Tili minne;
- private boolean tilisiirto;
- private int viite;
- private String viesti;
- /**
- * Konstruktori
- * AE: (lähde != null | kohde != null)
- * && summa >= 0.0
- * && aikaleima != null
- * && suorittaja != null
- * && tyyppi != null
- * && (viesti != null | viite != null)
- */
- public Tapahtuma(Asiakas suorittaja,
- Tili lähde,
- double summa,
- Tili kohde,
- boolean tilisiirto,
- int viite,
- String viesti) {
- this.aikaleima = Calendar.getInstance();
- this.suorittaja = suorittaja;
- this.mistä = lähde;
- this.summa = summa;
- this.minne = kohde;
- this.tilisiirto = tilisiirto;
- this.viite = viite;
- this.viesti = viesti;
- }
- // Palauttajat
- public Calendar annaAjankohta() { return aikaleima; }
- public Asiakas annaSuorittaja() { return suorittaja; }
- public Tili annaMiltäTililtä() { return mistä; }
- public double annaSumma() { return summa; }
- public Tili annaMilleTilille() { return minne; }
- public boolean annaTilisiirto() { return tilisiirto; }
- public int annaViite() { return viite; }
- public String annaViesti() { return viesti; }
- }
- /* Pankki rakentuu tilien ja niiden välisten tilitapahtumien ympärille.
- * Tilin omistaa yksikäsitteinen omistaja, joka voi olla henkilö tai esimerkiksi yhdistys, mutta käyttöoikeus voi olla usealla henkilöllä.
- * Tilit erotetaan toisistaan yksikäsitteisin tilinumeroin.
- * Systeemi pitää itse huolta, ettei samannumeroisia tilejä koskaan synny.
- * Tilille olennaista tietoa on myös saldo.
- *
- * Tili
- */
- import java.util.ArrayList;
- public class Tili {
- private static int sarjaNumero = 0; // Juokseva luokkamuuttuja
- private Asiakas Omistaja;
- private ArrayList<Asiakas> käyttöoikeudet;
- private final int TILINUMERO;
- private double Saldo;
- private double Korko;
- /*
- * Konstruktori: Alustaa uuden tilin ja asettaa omistajaksi annetun asiakkaan
- * AE: tilinOmistaja != null
- */
- public Tili(Asiakas tilinOmistaja) {
- Omistaja = tilinOmistaja;
- käyttöoikeudet.add(tilinOmistaja);
- Saldo = 0;
- Korko = 0;
- TILINUMERO = sarjaNumero;
- ++sarjaNumero;
- }
- // Palauttajat
- /**
- * Palauttaa omistajan
- * LE: string
- */
- public Asiakas annaOmistaja() { return Omistaja; }
- /**
- * Palauttaa TILINUMERO.
- * LE: int
- */
- public int annaTilinumero() { return TILINUMERO; }
- /**
- * Palauttaa Saldo.
- * AE: double = Saldo != null
- * LE: double
- */
- public double annaSaldo() { return Saldo; }
- /**
- * Palauttaa onko käyttöoikeudet.
- * LE: ArrayList<Asiakas>
- */
- public boolean onkoKäyttöoikeudet(Asiakas oikeuksienKoettelija) {
- if (this.Omistaja == oikeuksienKoettelija) return true; // Omistajalla on aina oikeudet tiliinsä
- if (this.käyttöoikeudet.contains(oikeuksienKoettelija)) return true; // Jos ei ollut omistajaa ketä kysyttiin niin oliko jollain muulla
- return false;
- }
- /**
- * Palauttaa korko.
- * AE: double = Korko != null
- * LE: double
- */
- public double annaKorko() { return Korko; }
- // Muuttajat
- /**
- * Aseta Omistaja.
- * AE: uusiOmistaja = <Asiakas>
- */
- public void asetaOmistaja(Asiakas uusiOmistaja) {
- Omistaja = uusiOmistaja; }
- /**
- * Lisää käyttöoikeudet.
- * AE: uusiKäyttäjä = <Asiakas>
- */
- public void lisääKäyttöoikeudet(Asiakas uusiKäyttäjä) {
- käyttöoikeudet.add(uusiKäyttäjä); }
- /**
- * Poista yhden Asiakas käyttöoikeudet.
- * AE: uusiOmistaja = <Asiakas>
- */
- public void poistaKäyttöoikeudet(Asiakas poistettavaKäyttäjä) {
- käyttöoikeudet.remove(poistettavaKäyttäjä);
- }
- /**
- * Pano tilille
- */
- public void pano(double rahaa) {
- this.Saldo = this.Saldo + rahaa; }
- /**
- * Rahaa pois tililtä
- */
- public void otto(double rahaa) {
- this.Saldo = this.Saldo - rahaa; }
- /**
- * Uusi korko%
- * AE: Korko != null/0
- */
- public void uusiKorko(double uusiKorko) {
- this.Korko = uusiKorko; }
- }
Add Comment
Please, Sign In to add comment