For the presentation you will have to elaborate on the design patterns in the text book. The goal is to "extend" the text in ways that will make understanding patterns easier for current and future students (i.e. give explanations and examples from domains with which students are familiar). I will ask you to sign up for a design pattern in class, and then you will build a wiki page for that pattern. The page will include three parts:
- a UML diagram
- a brief description of the pattern and
- a list of at least two examples that are easy to follow in at least two different OO programming languages you've studied (Java, C++, .NET, etc).
For part 1), the description should be brief and easy to follow. Think about how you would explain it to a friend as you were walking to your next class. Even better if you could explain it in such a way your mother/father/brother would understand over Sunday dinner.
For part 2), the OMT diagram can be copied from the text and tweaked to make it conform to UML.
For part 3), you should include code samples from real programs. You must provide a link to the source code repository or files from which this sample is taken. Include appropriate licensing info. Don't drop in sample code you find on web pages unless it is a part of a larger code base to which you can refer (and which can be compiled and run!). Pick code from problem domains you understand and you think other students would understand. Don't, for example, use code snippets from an air traffic control system or an online credit transfer system. Do pick examples from domains everyone is at least familiar with, like POS, GUI editors, command line applications, etc.
Add in your own comments, highlighted in red, that refer back to the pattern diagrams to help explain how the pattern was implemented and/or modified to meet the particular needs of this situation. If you have to pick from a domain that you think would be unfamiliar to most of the students, then you will have to provide an additional explanation of that problem, one that students would find easy to follow.
During the last few weeks of semester, you will have to present your page to the class. Before then, you might want to encourage other students to comment on your description/examples (it's easy, just click edit and add your comments). So the sooner you post, the more likely you are to get suggestions. If someone suggests a better example, feel free to use it -- if you think it is better. (Also, if you are having problems understanding a particular pattern, you might want to check the wiki to see if any information has been posted on that pattern, and comment (politely) on how useful you found their material!)
Please feel free to use Google' source code search.
Note: to edit these wiki pages you must sign-up for an account. Please enter your real name so I can see who is editing the pages. Do not "vandalize" pages - you may make polite remarks or suggestions by appending them to anyone's page, but do not delete content, including any comments made on the work on your page or on other people's pages. You may only delete content you've created. If I find inappropriate content, I will delete it (and penalize the person who posted it!). I will also penalize students who "vandalize" pages.
|Pattern||Taken By||Presentation Date|
|Factory Method||Feb 5|
|Template Method||Feb 23|
|Abstract Factory||Mar 5|
|Chain of Responsibilities||Apr 2|