TableOfContents

Owning a hammer doesn't make one an architect.

Introduction

So you have done Java A and even B. Congratulations. Have you also found that Java offers something that is more than a programming language? With this assignment, we will try to wrap up your knowledge about Java, or any other object-oriented programming language you know (C++, Object Pascal, Python, Ruby ...), to get the essence of object orientation, to turn yourself from a craftsman back to a designer: Use object orientation as a tool to slice the complex into the simple, and put them back again in a structured way.

Schedule

Week 1
  • Lecture: An introduction to UML (21-02 15.45-17.30 HG 2.80)
    • [attachment:UMLintro_presentation.pdf Slides], for viewing on screen
    • [attachment:UMLintro_handouts.pdf Handouts], for printing, with additional details
  • Assignment 1, to be finished in 2 weeks:
    Week 2
  • No lectures.
  • Continue Assignment 1.
  • Week 3
  • Lecture: Object oriented analysis and design (OOA & OOD) (07-03 15.45-17.30 HG 2.80)

  • Assignment 2, to be finished in 2 weeks:
    • Modeling (not programming!) a product designed by yourself, using use case diagrams, class diagrams, sequence diagrams and activity diagrams.
    • Reading material:
      • [http://www.objectcentral.com/oobook/oobook.htm Essense of Object Oriented Programming] Several chapters of this book by Wampler are available online. Chapter 2 is a very good overview of object-oriented programming.

      • [http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/ Object-Oriented Analysis and Design using CRC Cards] CRC (Control, Responsibilities, and Collaborators) cards are an important tool for identifying and defining the classes you need for your program. They are an excellent low-tech method requiring only index cards.

    Week 4
  • Lecture: Design Patters I: Observer, Iterator, Singleton, Factory ... (14-02 15.45-17.30 HG 2.80)
  • Continue Assignment 2.
  • Assignment 3, to be finished in 2 weeks:
    • Reading: [http://www.patterndepot.com/put/8/JavaPatterns.htm The Design Patterns java Companion]

    • You may also refer to the following famous books (if you are lucky, you may grab a copy from the university library):
      • GoF: [#Gamma+HelmETAL-DesiPattElemReus:95 Design Patterns -- Elements of Reusable Object-oriented Software]

      • POSA 1: [#BUSCHMANN:1996 Pattern-Oriented Software Architecture, Volume 1: A System of Patterns]

      • POSA 2: [#Schmidt+StalETAL-PattSoftArchVolu:00 Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects]

    Week 5
  • No lectures.
  • Presentation: Everybody gets 5 minutes to present the results of Assignment 2. (21-03 15.45-17.30 HG 2.80)
  • Continue Assignment 3.
  • Assignment 4, to be finished in 3 weeks
    • Redesign the application you did for Java B, using object-oriented analysis and design approach.
    • Implement it.
    • At least 3 design patterns should be used in the application and identified in the report.
    Week 6
  • No Lectures
  • Contine Assignment 4
  • Week 7
  • Lecture: Design Patterns II: MVC, PAC (03-04 15.45-17.30 HG 2.80)
  • Continue Assignment 4
  • Week 8
  • Q&A session (TBA)

  • Deadline of reports (TBA)
  • Final deliverables

    Online Resources

    References

    @BOOK{Buschmann+MeunierETAL-PattSoftArchVolu:96,
      author       = {Buschmann, F. and Meunier, R. and Rohnert, H. and Sommerlad, P. and Stal, M.},
      title        = {Pattern-Oriented Software Architecture, Volume 1: A System of Patterns},
      publisher    = {John Wiley & Sons, Inc.},
      year         = 1996, 
    }
    @BOOK{Cooper-DesiPattjavaComp:98,
      author       = {Cooper, J.W.},
      title        = {The Design Patterns java Companion},
      publisher    = {Addision-Wesley Design Patterns Series},
      year         = 1998,
      note         = {Free electronic copy available from \url{http://www.patterndepot.com/put/8/JavaPatterns.htm}},
    }
    
    @BOOK{Eckel-ThinJava:02,
      author       = {Eckel, B.},
      title        = {Thinking in Java},
      publisher    = {Prentice Hall},
      year         = 2002,
      edition      = {3rd},
      note         = {Free electronic copy available from \url{http://www.mindview.net/Books/TIJ/}},
    }
    
    @BOOK{Gamma+HelmETAL-DesiPattElemReus:95,
      author       = {Gamma, e. and Helm, R. and Johnson, R. and Vlissides, J.},
      title        = {Design Patterns -- Elements of Reusable Object-oriented Software},
      publisher    = {Addison-Wesley},
      year         = 1995,
    }
    
    @book{BUSCHMANN:1996, 
      author="Buschmann, F. and Meunier, R. and Rohnert, H. and Sommerlad, P. and Stal, M.",
      title="Pattern-Oriented Software Architecture, Volume 1: A System of Patterns",
      publisher="John Wiley & Sons, Inc.",
      year=1996,
    } 
    
    @BOOK{Schmidt+StalETAL-PattSoftArchVolu:00,
      author       = {Schmidt, D.C. and Stal, M. and Rohnert, H. and Buschmann, F.},
      title        = {Pattern-Oriented Software Architecture, Volume 2:  Patterns for Concurrent and Networked Objects},
      publisher    = {John Wiley & Sons},
      year         = 2000,
      edition      = {1st},
    }