There's also service contracts, which are sort of like overloaded methods. For example if your package wanted to post events to the calendar it could use a theoretical "create event" service contract to do it. The benefit of doing it this way would be that your package could then work with any calendar which implemented that contract.
See http://openacs.org/doc/acs-service-contract/ for the overview, or browse into the app pages on your installation to look around more. You can see for example that many packages implement the contract for "FtsContentProvider", so that any full-text search engine can get the right text to index.