package ProductConfig;

class NotACompositeException extends Exception {
    NotACompositeException() { super(); }
    NotACompositeException(String s) { super(s); }

public abstract class Part

public abstract double getPrice();

public abstract String getName();

public abstract String getDescription();

public abstract ResourceList getResourceList();

public abstract void displayInvoice(PrintStream stream, int level);

public abstract void addPart(Part part) throws

public abstract void removePart(Part part) throws

Get Joy of Patterns: Using Patterns for Enterprise Development, The now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.