10.2. Designing the Interface
At this point, Tim and I were not sure how we were going to obtain the data for the catalog. Sam had mentioned a couple of Internet sites where it might be available. I figured a CD-ROM or two probably was available with the data. After all, a CD-ROM with equivalent information exists for books. At worst, we might put his staff to work when they had nothing else to do. They could input the information from the CD cases.
How we were going to implement the catalog was irrelevant at that point. What we needed was the search interface. Based on the use cases given in the previous section, we came up with a rough class outline that looked like this:
class Song
CommonString the_title
class CD
UPCCode the_upc_code
CommonString the_title
Performer [] the_performers
Song [] the_songs
// Other Info to display (e.g. producer).
class Performer
Name the_name
Based on these classes, we developed the following interface. The return values are shown as groups (arrays). They could become collections if we started to add functionality to the groups (such as sort by producer).
interface CDCatalog
Song [] search_for_song_by_title(CommonString string_to_match)
CD [] retrieve_cds_for_song(Song a_song) // From the song list
Performer [] search_for_performers_by_name(CommonString string_to_match)
CD [] retrieve_cds_for_a_performer(Performer a_performer)
// From performer list
CD [] search_for_cds_by_name(CommonString string_to_match)
10.2.1. What's a CD?
Now, what ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access