/* * Created on 10.08.2004 * * @author Jens Guenther */ package de.unirostock.AbstractFactory.example; public abstract class Ship extends ShipFactoryProduct { /** * * @uml.property name="hull" * @uml.associationEnd multiplicity="(0 1)" */ private Hull itsHull; /** * * @uml.property name="masts" * @uml.associationEnd multiplicity="(0 1)" */ private Masts itsMasts; /** * * @uml.property name="sails" * @uml.associationEnd multiplicity="(0 1)" */ private Sails itsSails; protected String itsType = null; /** * * @uml.property name="type" */ public String getType() { return itsType; } /** * * @uml.property name="hull" */ public final void setHull(Hull hull) { if (hull == null) { itsHull = null; return; } if (!fitsComponent(hull)) throw new IllegalArgumentException( "hull does'nt fits for this ship class"); itsHull = hull; } /** * * @uml.property name="masts" */ public final void setMasts(Masts masts) { if (masts == null) { itsMasts = null; return; } if (!fitsComponent(masts)) throw new IllegalArgumentException( "masts does'nt fits for this ship class"); itsMasts = masts; } /** * * @uml.property name="sails" */ public final void setSails(Sails sails) { if (sails == null) { itsSails = null; return; } if (!fitsComponent(sails)) throw new IllegalArgumentException( "sails does'nt fits for this ship class"); itsSails = sails; } public final boolean fitsComponent( ShipComponent sc ) { return sc.getShipClass().equals( this.getClass()); } public final int getLoadingSpace(){ return ( itsHull == null )? 0 : itsHull.getLoadingSpace(); } public final int getMastCount(){ return ( itsMasts == null )? 0 : itsMasts.getCount(); } public final int getSailCount(){ return ( itsSails == null )? 0 : itsSails.getCount(); } }