Arkanium77

Money class

Jan 10th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 KB | None | 0 0
  1. package moneymain;
  2.  
  3. /**
  4.  * <b>Класс "Money"</b><br>
  5.  * Содержит целочисленные поля "{@link moneymain.Money#ruble рубли}" и
  6.  * "{@link moneymain.Money#kopek копейки}", а так же методы для работы с ними.
  7.  *
  8.  * @author Arkanium77
  9.  */
  10. public class Money {
  11.  
  12.     /**
  13.      * Рубли - основная рассчётная единица РФ.<br>
  14.      * Значение этого поля не может быть отрицательным.
  15.      */
  16.     private int ruble;
  17.     /**
  18.      * Копейки. 100 копеек равны одному {@link moneymain.Money#ruble рублю}<br>
  19.      * Значение этого поля не может быть отрицательным.
  20.      */
  21.     private int kopek;
  22.  
  23.     /**
  24.      * <b>Конструктор класса {@link moneymain.Money Money}</b><br>
  25.      *
  26.      * @param ruble {@link moneymain.Money#ruble рубли}
  27.      * @param kopek {@link moneymain.Money#kopek копейки}
  28.      * @throws NegativeException количество денег не может быть отрицательным.
  29.      */
  30.     Money(int ruble, int kopek) throws NegativeException {
  31.         if (ruble < 0 || kopek < 0) {
  32.             throw new NegativeException();
  33.         }
  34.         this.ruble = ruble;
  35.         this.kopek = kopek;
  36.         while (this.kopek >= 100) {
  37.             this.ruble += 1;
  38.             this.kopek -= 100;
  39.         }
  40.     }
  41.  
  42.     /**
  43.      * <b>Конструктор класса {@link moneymain.Money Money}</b><br>
  44.      *
  45.      * @param money количество денег представленное в виде десятичной дроби, где
  46.      * целая часть - {@link moneymain.Money#ruble рубли}, а числа (сотые и
  47.      * десятые доли) - {@link moneymain.Money#kopek копейки}
  48.      * @throws NegativeException количество денег не может быть отрицательным.
  49.      */
  50.     Money(double money) throws NegativeException {
  51.         if (money < 0) {
  52.             throw new NegativeException();
  53.         }
  54.         this.ruble = (int) money;
  55.         this.kopek = (int) ((money - this.ruble) * 100);
  56.     }
  57.  
  58.     /**
  59.      * <b>Копирующий конструктор класса {@link moneymain.Money Money}</b><br>
  60.      *
  61.      * @param m копируемый объект
  62.      */
  63.     Money(Money m) {
  64.         this.ruble = m.ruble;
  65.         this.kopek = m.kopek;
  66.     }
  67.     /**
  68.      * <b>Конструктор класса {@link moneymain.Money Money} по умолчанию</b><br>
  69.      */
  70.     Money() {
  71.         this.ruble = 0;
  72.         this.kopek = 0;
  73.     }
  74.  
  75.     /**
  76.      * <b>Сложить деньги.</b><br>
  77.      * Складывает два объекта класса {@link moneymain.Money Money}
  78.      *
  79.      * @param a объект класса {@link moneymain.Money Money}
  80.      * @return новый объект класса {@link moneymain.Money Money}, где
  81.      * {@link moneymain.Money#ruble рубли} сложены с рублями, а
  82.      * {@link moneymain.Money#kopek копейки} с копейками.
  83.      */
  84.     Money sum(Money a) {
  85.         this.ruble += a.ruble;
  86.         this.kopek += a.kopek;
  87.         if (this.kopek >= 100) {
  88.             this.ruble += 1;
  89.             this.kopek -= 100;
  90.         }
  91.         return this;
  92.     }
  93.  
  94.     @Override
  95.     public String toString() {
  96.         return this.ruble + "р. " + this.kopek + "к.";
  97.     }
  98. }
  99.  
  100. class NegativeException extends Exception {
  101.  
  102.     @Override
  103.     public String toString() {
  104.         return "Количество денег не может быть отрицательным";
  105.     }
  106. }
Add Comment
Please, Sign In to add comment