BaseArtisan, as it's currently designed, is expected to provide two abstract methods:
- add_product, which requires a mechanism for adding products to the products collection of an instance to be implemented on derived Concrete Classes
- remove_product, which similarly requires a mechanism for removing an item from the products collection of a derived instance
These are specified as abstract methods because, while there will almost certainly be some common functionality involved with each of them across the application and service installables of hms_sys, there will also almost certainly be significant implementation differences across those same components—artisans, for example, may well be the only users ...