code: package hu.pj.obj;
  
  public class Item implements Comparable {
  
      protected String name       = "";
      protected double weight     = 0;
      protected double value      = 0;
      protected double inKnapsack = 0; // the weight of item in solution
  
      public Item() {}
  
      public Item(Item item) {
          setName(item.name);
          setWeight(item.weight);
          setValue(item.value);
      }
  
      public Item(double _weight, double _value) {
          setWeight(_weight);
          setValue(_value);
      }
  
      public Item(String _name, double _weight, double _value) {
          setName(_name);
          setWeight(_weight);
          setValue(_value);
      }
  
      public void setName(String _name) {name = _name;}
      public void setWeight(double _weight) {weight = Math.max(_weight, 0);}
      public void setValue(double _value) {value = Math.max(_value, 0);}
  
      public void setInKnapsack(double _inKnapsack) {
          inKnapsack = Math.max(_inKnapsack, 0);
      }
  
      public void checkMembers() {
          setWeight(weight);
          setValue(value);
          setInKnapsack(inKnapsack);
      }
  
      public String getName() {return name;}
      public double getWeight() {return weight;}
      public double getValue() {return value;}
      public double getInKnapsack() {return inKnapsack;}
  
      // implementing of Comparable interface:
      public int compareTo(Object item) {
          int result = 0;
          Item i2 = (Item)item;
          double rate1 = value / weight;
          double rate2 = i2.value / i2.weight;
          if (rate1 > rate2) result = -1;  // if greater, put it previously
          else if (rate1 < rate2) result = 1;
          return result;
      }
  
  } // class
  