SE2811
Outcomes
Course Outcomes
Week 1
- . Define object-oriented.
- . Define design pattern.
- . State the motivation behind design patterns.
- . Explain when it makes sense to provide some implementation in an abstract class, even though the class is not instantiable.
- . Explain when use of an abstract class may be more favorable than use of a pure interface.
- . Describe the Adapter Pattern and explain when it is useful.
- . Describe the Null Object Pattern and explain when it is useful.
- . Identify and make use of appropriate connectors in UML class diagrams that illustrate generalization/specialization (Java extends), realization (Java implements), and association, and indicate navigability (arrows), multiplicity (numbers), and end roles (attribute names) (postponed: usage, composition, aggregation)
- . Differentiate problem space and solution space.
- . Lab 1: UML notation review and review of implementing inheritance in Java
Week 2
- . Explain how the Strategy Pattern delegates behaviors to separate classes.
- (postponed) Explain the principle of Extend, don't Modify (also called the Open-Closed Principle).
- (postponed) Explain why, in many contexts, composition is preferred to inheritance.
- . Explain the principles of domain-driven development. (postponed: and apply them)
- Explain the context, intent, and motivation of the (non-thread-safe) Singleton Pattern.
- Describe the specific consequences (advantages/disadvantages) of the Singleton Pattern
- List the principal methods of each main Singleton class
- Explain how a Singleton instance is created in the absence of a Singleton constructor
- State the three primary classifications of patterns, and explain them.
- . Lab 3: applying the Strategy Pattern
Week 3
- Explain the Facade Pattern and how it differs from Adapter.
- Explain the context, intent, and motivation of the Decorator Pattern.
- List the principal attribute defined within the abstract class that defines an Abstract Decorator which concrete decorates extend
- Explain and apply the paradigm of the Favor Composition over Extend principle with respect to the Decorator Pattern.
- Describe how the Decorator Pattern is applied in the java.io package to various Java I/O classes, such as OutputStream, FileOutputStream, FilterOutputStream, along with the corresponding InputStream-related classes
- Apply the Decorator Pattern to implement a FilterOutputStream-based or FilterInputStreambased I/O concrete decorator class that manipulates the data within an output or input stream.
- Apply the Decorator Pattern to extend the behavior of graphical shapes.
- Explain the meaning of the term coupling; explain low (loose) coupling vs. high (tight) coupling.
- Explain the meaning of cohesion; explain low cohesion vs. high cohesion
- Explain why low coupling and high cohesion are characteristics of a good design.
- Critique the coupling and cohesion of existing code.
- Lab 3: applying the decorator Pattern to decode encrypted text
Holiday Break
Please see the outcomes on Dr. Hasker's page for future outcomes.
Optional goodies
Enterprise Architect
- To edit an item, press F2
- To add attributes or operations to a class without opening the dialog, use Ctrl-Shift-F9 (or F10). To open the dialog, just press F9 or F10.
- To insert a new attribute or operation after a selected one, you will need to bind the "Element" Category command "Insert New After Selected. Instructions for doing this are at the sparxsystems website. (I mapped mine to Ctrl-F10, which was unnassigned.)
- To make parameter names visible in Enterprise Architect, use menu Diagram → Properties, (Or right-click on the diagram background and select properties) go to the Features tab, look for the parameters drop-down Show Parameter Detail and select Full Details (source)
- To change the order of fields or methods, select the item and then double-click to open the appropriate dialog. Then, within the dialog, select the item again and press Ctrl-Up or Ctrl-Down. The first time you do this, you will have to accept a dialog stating it is turning off alphabetical ordering.
- To tie one class to another with a directed assocation, click on the first class. A small up arrow will appear in the top right corner. Click and drag from this up arrow toward the second class. A line will appear connecting these classes. When you let go of the arrow, a context menu dialog will appear near your cursor. Select Directed Association within this menu.
- If the association already exists, right click on the line and select Advanced->Change Directions->Souce -> Destination.