package com.javarush.test.level14.lesson08.home09;

import java.util.ArrayList;
import java.util.List;

/* Валюты
1. Реализуй метод getAmount в классе Money:
1.1. Подумай, какого типа нужно создать приватную переменную, если метод getAmount будет ее возвращать.
1.2. Создай приватную переменную этого типа и верни ее в методе getAmount.
1.3. В конструкторе присвой ей значение, полученное параметром.
2. В отдельном файле создай класс Hrivna.
3. Наследуй класс Hrivna от класса Money.
4. В классе Hrivna реализуй метод getCurrencyName, который возвращает "HRN".
5. В отдельном файле создай класс USD.
6. Наследуй класс USD от класса Money.
7. В классе USD реализуй метод getCurrencyName, который возвращает "USD".
8. Подумай, объекты каких классов можно добавить в список(лист) allMoney.
9. Добавь в конструктор класса Person заполнение листа allMoney объектами всех возможных классов.
*/

public class Solution
{
    public static void main(String[] args)
    {
        Person ivan = new Person("Иван");
        for (Money money : ivan.getAllMoney())
        {
            System.out.println(ivan.name + " имеет заначку в размере " + money.getAmount() + " " + money.getCurrencyName());
        }
    }

    static class Person
    {
        public String name;
        Person(String name)
        {
            this.name = name;
            this.allMoney = new ArrayList<Money>();
            allMoney.add(new Hrivna(2));
            allMoney.add(new USD(20));
            //Add your code here
        }
        private List<Money> allMoney;
        public List<Money> getAllMoney()
        {
            return allMoney;
        }
    }
}

 

package com.javarush.test.level14.lesson08.home09;

/**
 * Created by promoscow on 17.08.16.
 */
public class USD extends Money
{
    public USD(double amount)
    {
        super(amount);
    }
    @Override
    public String getCurrencyName()
    {
        return "USD";
    }
}

 

package com.javarush.test.level14.lesson08.home09;

public abstract class Money
{
    private double amount;

    public Money(double amount)
    {
        this.amount = amount;
    }

    public double getAmount()
    {
        return amount;
    }

    public abstract String getCurrencyName();
}

 

package com.javarush.test.level14.lesson08.home09;

/**
 * Created by promoscow on 17.08.16.
 */
public class Hrivna extends Money
{
    public Hrivna(double amount)
    {
        super(amount);
    }
    @Override
    public String getCurrencyName()
    {
        return "HRN";
    }
}