Guest User

Untitled

a guest
Jun 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.42 KB | None | 0 0
  1. import java.util.ArrayList;
  2.  
  3. public class Pankki {
  4.    
  5.     public static void main(String[] args) {
  6.        
  7.         Pankki P1 = new Pankki("Rahasampo");
  8.        
  9.         Asiakas A1 = new Asiakas("123456-1234", "Erkki Seppä", "Savitehtaankatu");
  10.         Asiakas A2 = new Asiakas("789123-1234", "Emmi Erinomainen", "Entinenkoti");
  11.        
  12.        
  13.         P1.avaaTili(A1, 42341234.2);
  14.         P1.avaaTili(A1);
  15.         P1.avaaTili(A2, 42341234.2);
  16.     }
  17.    
  18.     private static int sarjaNumero = 0; // Juokseva luokkamuuttuja
  19.     private final String NIMI;
  20.     private final int TUNNUS;
  21.     private static ArrayList<Tili> tilit;
  22.     private static ArrayList<Asiakas> asiakkaat;
  23.  
  24.    
  25.     /* Konstruktori
  26.      * Alustetaan pankki antamalle sille nimi ja yksilöllinen tunnus.
  27.      */
  28.     public Pankki(String nimi) {
  29.  
  30.         NIMI = nimi;
  31.         TUNNUS = sarjaNumero;
  32.         ++sarjaNumero;
  33.         }
  34.    
  35. // Palauttajat
  36.  
  37.     /**
  38.     * Palautaa NIMEN
  39.     * AE: true
  40.     * LE: String
  41.     */
  42.     public String annaNimi() {  return NIMI;    }
  43.  
  44.     /**
  45.     * Palauta TUNNUKSEN
  46.     * AE: true
  47.     * LE: int
  48.     */
  49.     public int annaTunnus() {   return TUNNUS;  }
  50.  
  51.     /**
  52.     * Onko tili tämän pankin tili?
  53.     * AE: true
  54.     * LE: boolean
  55.     */
  56.     public boolean onkoPankinTili(Tili tiliEhdokas) {
  57.         if (tilit.contains(tiliEhdokas)) return true;
  58.             return false;
  59.         }
  60.     /**
  61.     * Onko asiakas tämän pankin asiakas?
  62.     * AE: true
  63.     * LE: boolean
  64.     */
  65.     public boolean onkoPankinAsiakas(Asiakas asiakasEhdokas) {
  66.         if (asiakkaat.contains(asiakasEhdokas)) return true;
  67.             return false;
  68.         }
  69.  
  70.    
  71. // Muuttajat
  72.    
  73.     /**
  74.  
  75.  
  76.  
  77.  
  78. /*
  79.  * Luokka jonka avulla hoidetaan tilin omistajan ja tilin käyttöoikeuksien haltijoiden tehtävät.
  80.  */
  81.  
  82. public class Asiakas {
  83.  
  84.     private String Nimi;    // Asiakkan nimi
  85.     private String HeTu;    // Yksilöivä HenkilöTunnus
  86.     private String Osoite;  // Asiakkaan osoite
  87.    
  88. /* Konstruktori
  89.  * AE: Henkilötunnus, nimi &/ osoite != null / .length() = 0
  90.  */
  91.     public Asiakas(String henkilötunnus, String nimi, String osoite) {
  92.         this.HeTu = henkilötunnus;
  93.         this.Nimi = nimi;
  94.         this.Osoite = osoite;
  95.     }
  96.    
  97. // Palauttajat
  98.  
  99.     /**
  100.      * Palauta NIMI
  101.      * AE: true
  102.      * LE: String
  103.      */
  104.     public String annaNimi() {  return Nimi;    }
  105.  
  106.     /**
  107.      * Palauta HeTu.
  108.      * AE: true
  109.      * LE: String
  110.      */
  111.     public String annaHeTu() {  return HeTu;    }
  112.  
  113.     /**
  114.      * Palauta Osoite.
  115.      * AE: true
  116.      * LE: String
  117.      */
  118.     public String annaOsoite() {    return Osoite;  }
  119.    
  120.    
  121. // Muuttajat
  122.  
  123.     /**
  124.      * Tehdään nimen  muutos.
  125.      * AE: true
  126.      * LE: String
  127.      */
  128.     public void annaUusiNimi(String UusiNimi) {
  129.         this.Nimi = UusiNimi;   }
  130.    
  131.     /**
  132.      * Tehdään osoitteen muutos.
  133.      * AE: true
  134.      * LE: String
  135.      */
  136.     public void annaUusiOsoite(String UusiOsoite) {
  137.         this.Osoite = UusiOsoite;   }
  138.  
  139.     /**
  140.      * Tehdään osoitteen muutos.
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148. /* Tapahtuma voi olla esimerkiksi rahasumman maksu tililtä toiselle tai vaikkapa käteisen rahan nosto tililtä.
  149.  */
  150. import java.util.Calendar;
  151.  
  152. public class Tapahtuma {
  153.  
  154.     private Calendar aikaleima;
  155.     private Asiakas suorittaja;
  156.     private Tili mistä;
  157.     private double summa;
  158.     private Tili minne;
  159.     private boolean tilisiirto;
  160.     private int viite;
  161.     private String viesti;
  162.  
  163.  
  164.  /**
  165.  * Konstruktori
  166.  * AE: (lähde != null | kohde != null)
  167.  *     && summa >= 0.0
  168.  *     && aikaleima != null
  169.  *     && suorittaja != null
  170.  *     && tyyppi != null
  171.  *     && (viesti != null | viite != null)
  172.  */
  173.     public Tapahtuma(Asiakas suorittaja,
  174.                         Tili lähde,
  175.                         double summa,
  176.                         Tili kohde,
  177.                         boolean tilisiirto,
  178.                         int viite,
  179.                         String viesti) {
  180.        
  181.         this.aikaleima = Calendar.getInstance();
  182.         this.suorittaja = suorittaja;
  183.         this.mistä = lähde;
  184.         this.summa = summa;
  185.         this.minne = kohde;
  186.         this.tilisiirto = tilisiirto;
  187.         this.viite = viite;
  188.         this.viesti = viesti;
  189.     }
  190.  
  191.  
  192. // Palauttajat
  193.  
  194.     public Calendar annaAjankohta() {   return aikaleima;   }
  195.     public Asiakas annaSuorittaja() {   return suorittaja;  }
  196.     public Tili annaMiltäTililtä() {  return mistä;  }
  197.     public double annaSumma() { return summa;   }
  198.     public Tili annaMilleTilille() {    return minne;   }
  199.     public boolean annaTilisiirto() {   return tilisiirto;  }
  200.     public int annaViite() {    return viite;   }
  201.     public String annaViesti() {    return viesti;  }
  202.  
  203. }
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. /* Pankki rakentuu tilien ja niiden välisten tilitapahtumien ympärille.
  215.  * Tilin omistaa yksikäsitteinen omistaja, joka voi olla henkilö tai esimerkiksi yhdistys, mutta käyttöoikeus voi olla usealla henkilöllä.
  216.  * Tilit erotetaan toisistaan yksikäsitteisin tilinumeroin.
  217.  * Systeemi pitää itse huolta, ettei samannumeroisia tilejä koskaan synny.
  218.  * Tilille olennaista tietoa on myös saldo.
  219.  *
  220.  * Tili
  221.  */
  222.  
  223. import java.util.ArrayList;
  224.  
  225. public class Tili {
  226.  
  227.         private static int sarjaNumero = 0; // Juokseva luokkamuuttuja
  228.  
  229.         private Asiakas Omistaja;
  230.         private ArrayList<Asiakas> käyttöoikeudet;
  231.         private final int TILINUMERO;
  232.         private double Saldo;
  233.         private double Korko;
  234.  
  235.        
  236. /*
  237.  * Konstruktori: Alustaa uuden tilin ja asettaa omistajaksi annetun asiakkaan
  238.  * AE: tilinOmistaja != null
  239.  */
  240.  
  241.         public Tili(Asiakas tilinOmistaja) {
  242.  
  243.             Omistaja = tilinOmistaja;
  244.             käyttöoikeudet.add(tilinOmistaja);
  245.             Saldo = 0;
  246.             Korko = 0;
  247.            
  248.             TILINUMERO = sarjaNumero;
  249.             ++sarjaNumero;
  250.         }
  251.  
  252. // Palauttajat
  253.  
  254.         /**
  255.          * Palauttaa omistajan
  256.          * LE: string
  257.          */
  258.         public Asiakas annaOmistaja() { return Omistaja;    }
  259.  
  260.         /**
  261.          * Palauttaa TILINUMERO.
  262.          * LE: int
  263.          */
  264.         public int annaTilinumero() {   return TILINUMERO;  }
  265.        
  266.         /**
  267.          * Palauttaa Saldo.
  268.          * AE: double = Saldo != null
  269.          * LE: double
  270.          */
  271.         public double annaSaldo() { return Saldo;   }
  272.  
  273.         /**
  274.          * Palauttaa onko käyttöoikeudet.
  275.          * LE: ArrayList<Asiakas>
  276.          */
  277.         public boolean onkoKäyttöoikeudet(Asiakas oikeuksienKoettelija) {
  278.             if (this.Omistaja == oikeuksienKoettelija)  return true;    // Omistajalla on aina oikeudet tiliinsä
  279.             if (this.käyttöoikeudet.contains(oikeuksienKoettelija))   return true;    // Jos ei ollut omistajaa ketä kysyttiin niin oliko jollain muulla
  280.             return false;
  281.         }
  282.  
  283.         /**
  284.          * Palauttaa korko.
  285.          * AE: double = Korko != null
  286.          * LE: double
  287.          */
  288.         public double annaKorko() { return Korko;   }
  289.  
  290.        
  291.        
  292. // Muuttajat
  293.  
  294.         /**
  295.          * Aseta Omistaja.
  296.          * AE: uusiOmistaja = <Asiakas>
  297.          */
  298.         public void asetaOmistaja(Asiakas uusiOmistaja) {
  299.             Omistaja = uusiOmistaja;    }
  300.        
  301.         /**
  302.          * Lisää käyttöoikeudet.
  303.          * AE: uusiKäyttäjä = <Asiakas>
  304.          */
  305.         public void lisääKäyttöoikeudet(Asiakas uusiKäyttäjä) {
  306.             käyttöoikeudet.add(uusiKäyttäjä);  }
  307.        
  308.         /**
  309.          * Poista yhden Asiakas käyttöoikeudet.
  310.          * AE: uusiOmistaja = <Asiakas>
  311.          */
  312.         public void poistaKäyttöoikeudet(Asiakas poistettavaKäyttäjä) {
  313.             käyttöoikeudet.remove(poistettavaKäyttäjä);
  314.         }
  315.  
  316.         /**
  317.          * Pano tilille
  318.          */
  319.         public void pano(double rahaa) {
  320.             this.Saldo = this.Saldo + rahaa;    }
  321.  
  322.         /**
  323.          * Rahaa pois tililtä
  324.          */
  325.         public void otto(double rahaa) {
  326.             this.Saldo = this.Saldo  - rahaa;   }
  327.  
  328.         /**
  329.          * Uusi korko%
  330.          * AE: Korko != null/0
  331.          */
  332.         public void uusiKorko(double uusiKorko) {
  333.             this.Korko = uusiKorko; }
  334.        
  335.        
  336. }
Add Comment
Please, Sign In to add comment