1.Weapon
public class Weapon {
    private String name;

    private Damage damage;

    public Weapon (String name, int physical, int fire,int ice){
        this.name = name;
        this.damage = new Damage(physical,fire,ice);

    }


    void hit(Target target) {

        target.setPhysicalDamage(this.damage.getWeaponPhysicalDamage());
        target.setFireDamage(this.damage.getWeaponFireDamage());
        target.setIceDamage(this.damage.getWeaponIceDamage());

    }
}


2.Damage
public class Damage {
    private int physicalDamage;

    private int fireDamage;

    private int iceDamage;

    Damage (int physicalDamage, int fireDamage, int iceDamage) {

        this.physicalDamage = physicalDamage;

        this.fireDamage = fireDamage;

        this.iceDamage = iceDamage;
    }

    public int getWeaponPhysicalDamage() {

        return physicalDamage;

    }

    public int getWeaponFireDamage() {

        return fireDamage;

    }

    public int getWeaponIceDamage() {

        return iceDamage;

    }
}

3.Target
public class Target {

    private int physicalDamage;

    private int fireDamage;

    private int iceDamage;


    public void setPhysicalDamage(int physicaltarget) {
        physicalDamage = physicaltarget;
    }

    public void setFireDamage(int firetarget) {
        fireDamage = firetarget;
    }

    public void setIceDamage(int icetarget) {
        iceDamage = icetarget;
    }

    public int getPhysicalDamage() {
        return physicalDamage;
    }

    public int getFireDamage() {
        return fireDamage;
    }

    public int getIceDamage() {
        return iceDamage;
    }
}

4.IceGiant
public class IceGiant extends Target {


    @Override
    public void setIceDamage(int icetarget) {
        System.out.println("\nЛедяной великан-игнорирует ледяной урон");
    }
}

5.Ifrit

public class Ifrit extends Target {

    @Override
    public void setFireDamage(int  firetarget) {
        System.out.println("\nЭфрит-игнорирует огненный урон");
    }
}
 6.WeaponTest

public class WeaponTest {

    @Test
    public  void  Weapon () {
        Weapon sword1 = new Weapon("Пылающий асфальт",50,50,0);
        Weapon sword2 = new Weapon("Меч ночи в якутске",50,0,50);


        IceGiant i = new IceGiant();
        Ifrit f = new Ifrit();


        sword1.hit(i);
        System.out.println("Полученный урон от меча Пылающий асвальт: "+" " + "Физ.урон-"+ i.getPhysicalDamage() + " " +"Урон огнем-"+i.getFireDamage()+" "+
                "Ледяной урон-" + i.getIceDamage());



        sword2.hit(f);
        System.out.println("Полученый урон от меча Ночь в Якутске: "+" " + "Физ.урон-"+ f.getPhysicalDamage() + " " +"Урон огнем-"+f.getFireDamage()+" "+
                "Ледяной урон-" + f.getIceDamage());
    }

}