In the following case scenarios, you apply what you’ve learned about enhancing usability. You can find answers to these questions in the “Answers” section at the end of this book.
Case Scenario 1: The Publishing Application
Now that the great document management application for Fabrikam, Inc., is complete, you have been asked to help design an application for distribution to its clients. This application should enable clients to download large, book-length documents from an online library while enabling clients to continue browsing the library and selecting other documents for download. When download of a single document is complete, download of the next document should begin if more are selected. When download of a document is complete, the UI should be updated to reflect that.
What strategies can you use to coordinate document download with the UI interaction and how can the UI be constantly updated without fear of deadlocks or other problems?
Case Scenario 2: Creating a Simple Game
You finally have a day off from your job, so you decide to spend some time writing a nice, relaxing solitaire program. You have the actual gameplay pretty well done, and you are now just adding the bells and whistles. You would like to implement functionality that plays sounds in the background based on user interactions. These sounds are in a specialized format, and you must use a proprietary player that does not intrinsically support asynchronous play. You have a list of five sound files you can play, and you would like to save time and make the coding easy on yourself.
What is a strategy for implementing the required functionality with a minimum of complexity in your program?