Advertisement
EldiraSesto

rbvs.product CompositeProduct

Apr 24th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. package rbvs.product;
  2.  
  3. //import ict.basic.IDeepCopy;
  4.  
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. //Eldira Sesto, 11815163
  8. public class CompositeProduct extends Product {
  9.  
  10.     private Collection<Product> containedProducts;
  11.     private float discount;
  12.  
  13.     public CompositeProduct(String name, float discountPercentage) {
  14.         super(name == null ? "" : name, 0);
  15.  
  16.         if(discountPercentage < 0) discount = 0;
  17.         else if(discountPercentage >  100) discount = 100;
  18.         else discount = discountPercentage;
  19.  
  20.  
  21.     }
  22.  
  23.     public CompositeProduct(String name, float discountPercentage, Collection<Product> products) {
  24.         super(name == null ? "" : name);
  25.  
  26.         if(discountPercentage < 0) discount = 0;
  27.         else if(discountPercentage >  100) discount = 100;
  28.         else discount = discountPercentage;
  29.  
  30.         if(products != null){
  31.             containedProducts = new ArrayList<>();
  32.             containedProducts.addAll(products);
  33.         }
  34.  
  35.     }
  36.  
  37.     @Override
  38.     public CompositeProduct deepCopy() {
  39.         Collection<Product> copiedCollection = new ArrayList<>();
  40.         for(Product p : containedProducts){
  41.             copiedCollection.add((Product) p.deepCopy());
  42.         }
  43.  
  44.         return new CompositeProduct(getname(), discount, copiedCollection);
  45.     }
  46.  
  47.     public void addProduct(Product product){
  48.         containedProducts.add(product);
  49.     }
  50.  
  51.     public Collection<Product> getProducts(){
  52.         return containedProducts;
  53.     }
  54.  
  55.     public float getPrice(){
  56.         float sum = 0;
  57.         for(Product p : containedProducts){
  58.             sum += p.getPrice();
  59.         }
  60.  
  61.         return sum * discount / 100;
  62.     }
  63.  
  64.     public boolean removeProduct(Product product){
  65.         if(containedProducts.contains(product)){
  66.             containedProducts.remove(product);
  67.             return true;
  68.         }
  69.  
  70.         return false;
  71.     }
  72.  
  73.     @Override
  74.     public String toString() {
  75.         return "CompositeProduct{" +
  76.                 "containedProducts=" + containedProducts +
  77.                 ", discount=" + discount +
  78.                 '}';
  79.     }
  80.  
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement