Помогите пожалуйста с заданием(прилагаю проект, который нужно изменить):
Код:
package MyPackage;
public class CompComplect{
public static void main(String[] args) {
Mouse m1 = new Mouse();
Klava k1 = new Klava();
System.out.println(m1.toString());
System.out.println(k1.toString());
Mouse m2 = new Mouse(60, "lovely mouse", false);
Klava k2 = new Klava(30, "good klava", 101);
System.out.println(m2.toString());
System.out.println(k2.toString());
System.out.println(Mouse.avgCost());
System.out.println(Klava.avgCost());
System.out.println("__________________");
MyContainer myC = new MyContainer();
myC.add(m1);
myC.add(k1);
myC.add(m2);
myC.add(k2);
myC.print();
System.out.println("__________________");
myC.sortByCost();
myC.print();
}
}
interface IGoods{
void setCost(double cost);
double getCost();
void setName(String name);
String getName();
}
abstract public class Goods implements Comparable<Goods>, IGoods{
double cost;
String name;
Goods(){
cost=0;
name="NULL";
}
Goods(double cost, String name)
{
this.cost=cost;
this.name=name;
}
public void setCost(double cost){
this.cost = cost;
}
public double getCost(){
return cost;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
abstract public String toString();
public int compareTo(Goods o) {
if (this.cost < o.getCost())
return -1;
else if (this.cost == o.getCost())
return 0;
else
return 1;
}
}
public class Mouse extends Goods {
private String NewOld="NULL";
static private int count = 0;
static private double commonCost = 0;
public Mouse() {
super();
this.setCost(0);
this.setName("NULL");
this.setNewOld("NULL");
}
public Mouse(double cost, String name, boolean isNew){
this.setCost(cost);
this.setName(name);
this.setNewOld(NewOld);
count++;
commonCost += cost;
}
public void setNewOld(String NewOld){
this.NewOld = NewOld;
}
public String getNew(){
return NewOld;
}
public String toString(){
return "It's a mouse with cost = " + getCost() + ". Its name = " + getName() + ", " + NewOld;
}
static public double avgCost(){
return commonCost/count;
}
}
public class Klava extends Goods {
private int kolKnopok;
static private int count = 0;
static private double commonCost = 0;
public Klava() {
super();
this.setCost(0);
this.setName("NULL");
this.setkolKnopok(0);
}
public Klava(int cost, String name, int kolKnopok){
this.setCost(cost);
this.setName(name);
this.setkolKnopok(kolKnopok);
count++;
commonCost += cost;
}
public void setkolKnopok(int kolKnopok){
this.kolKnopok = kolKnopok;
}
public int getkolKnopok(){
return kolKnopok;
}
public String toString(){
return "It's a klava with cost = " + getCost() + ". Its name = " + getName() + " and has " + kolKnopok + " buttons";
}
static public double avgCost(){
return commonCost/count;
}
}
Goods[] mas = new Goods[0];
int count=0;
public void add(Goods newGood){
Goods[] mas1 = new Goods[count+1];
for(int i=0; i<count; i++)
mas1[i]=mas[i];
mas1[count]=newGood;
mas=mas1;
count++;
// al.add(newGood);
}
public int count(){
return mas.length;
}
public Goods get(int index){
return mas[index];
}
public void sortByCost(){
Arrays.sort(mas);
// Collections.sort(al);
}
public void print(){
for(int i=0; i<mas.length; i++)
System.out.println(mas[i].toString());
}
}
Создать интерфейс Iтовар, декларирующий getXXX и setXXX методы для работы с полями базового класса, описывающего товар.
Создать интерфейсы наследник1 и наследник2, декларирующие getXXX и setXXX методы для работы с появившимися в наследниках базового класса «товар» полями.
Переделать контейнер так, чтобы он работал с объектами товара при помощи интерфейса Iтовар.
Разнести классы программы по двум разным пакетам. В первый пакет вынести классы и интерфейсы, описывающие объекты товара, и контейнер. Во второй пакет вынести класс с методом main.
Спасибо всем заранее!