2007 Exam answers
Contents |
Question 1
[26 marks for whole question] For each part (a)-(m), name the idea (or ideas) that best match the description and briefly explain your answer. If possible, include WikiNames.
- [2 marks] Keep the number of fields in a class small.
- Answer: One key abstraction, Large class smell
- [2 marks] Methods should use most of the fields of the method’s object.
- [2 marks] When several methods cooperate to do a job, give them the same name.
- Answer: Recursion Introduction
- [2 marks] Objects should invoke methods of contained objects.
- [2 marks] A CodeSmell that supports one of RielsHeuristics.
- Answer: Switch statement smwelol
- [2 marks] A pattern that conflicts with TellDontAsk.
- Answer:
- [2 marks] A pattern that supports TellDontAsk.
- Answer:
- [2 marks] A pattern that employs DoubleDispatch.
- Answer:
- [2 marks] A pattern based on ModelTheRealWorld.
- Answer:
- [2 marks] A pattern that conflicts with one of RielsHeuristics.
- Answer:
- [2 marks] A pattern that exhibits a CodeSmell.
- Answer:
- [2 marks] An architectural pattern that contains a design pattern.
- Answer:
- [2 marks] A design problem that the Waterfall Process was intended to fix.
Question 2
[10 marks] Which of RielsHeuristics can be traced back to ideas described in JohnsonAndFoote1988? For each heuristic you identify, explain how it is based on the earlier idea.
Answer:
Question 3
[16 marks for whole question] For each of the following maxims (a)-(d) name other maxims (as many as you can) that support it. Briefly explain each answer. (a) [4 marks] ProgramToTheInterfaceNotTheImplementation. (b) [4 marks] SeparationOfConcerns. (c) [4 marks] SoftwareReuse (d) [4 marks] OpenClosedPrinciple
Question 4
[8 marks for whole question] Describe a design flaw in a 427 project produced by one of your classmates. Choose the most serious flaw you can find, clearly describe where it occurs (including where it can be found in the wiki) and support your argument, where possible, with maxims etc.
Question 5
[5 marks] Imagine it was your job to interview an applicant for an OO design job. If you were allowed to ask only one question, and from the answer you had to judge whether the person was a skilled OO designer, what would you ask? Explain your reasoning.
Question 6
[35 marks for whole question] The following questions refer to the UML class diagram in Figure 1 and explanatory notes in Figure 2. Some getters and setters and other details are omitted from the diagram, but may be assumed where necessary. Document any non-trivial assumptions you need to make. (a) [18 marks] Find as many Gang of Four design patterns as you can in the Trains design. Name each pattern and describe where and how it is used in this design. Provide just enough information to make it clear how and why the pattern is applied here. Note any important variations from the standard pattern. There is no need to comment here on the value of the pattern (but see next question). (b) [17 marks] Criticise and illuminate the design. Find as many weaknesses or issues as you can, and wherever possible name relevant maxims, smells, refactorings, etc, to reinforce your arguments. Also explain how each problem could be fixed.