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.