Thinking in Objects
(Techniques of Object-Oriented Programming)

Accelerated Technical Training for Programmers

About this Course

  1. Overview
  2. Format
  3. Audience
  4. Prerequisites
  5. Outline
  6. Objectives
  7. Method
  8. Textbooks
  9. References
  10. Classroom Setup
  11. Site

Overview

Are you getting ready to tackle an object-oriented software development project? Are you at home with conventional procedural design approaches but new to object-oriented design? Are you still uncomfortable with O-O terminology? Would mastery of the new O-O techniques and tools like UML, CRC cards, use-cases, encapsulation, and sequence diagrams help you to be more effective in your work? If so, this course is for you.

Design problems are presented, and sample solutions are shown (both diagrammatically and in Java) and solution techniques are practiced. You will apply the techniques yourself, and your work will be reviewed with the instructor and discussed with the class.

In two intense days, you will acquire the terminology of this new software design paradigm, and you will be able to apply the most popular and widely-used techniques for creating and documenting object-oriented designs.

Format

  • Two full days.
  • Emphasis on practical skills.
  • Lots of exercises, practice sessions, and discussion.
  • Instructor-led and classroom-based.
  • The materials for this class are available on the web.

Audience

Thinking in Objects is for experienced software designers making the transition to modern object-oriented paradigms and methods.

Prerequisites

Check the boxes for the prerequisites you satisfy.
    You have experience designing software.
    You have done some programming (in any language.)
    You face an object-oriented software design project in your job.
If you checked all three boxes, you are well-equipped to get the most from this course!

Outline

Day 1
Chapter 0: Housekeeping
Chapter 1: Why Objects?
Chapter 2: The Vocabulary of O-O
Chapter 3: Below the Waterline: O-O Design
Chapter 4: Describing Requirements with Use Cases

Day 2
Chapter 5: Identifying Potential Classes
Chapter 6: Finding the Core Classes
Chapter 7: Assigning Responsibilities to Classes
Chapter 8: CRC Cards
Chapter 9: Identifying Relationships and Developing the Class Diagram
Chapter 10: Using Sequence Diagrams to Specify Dynamic Behavior
Chapter 11: Iterative Construction
Chapter 12: Construction
Chapter 13: Other Developments in Objects
Chapter 14: Conclusion

Appendix A: Design Patterns
Appendix B: Architectural Patterns

Objectives

You will practice and learn to:
  • Explain and apply the object-oriented paradigm
  • Design and use classes, objects, inheritance, superclasses, subclasses, container classes, and polymorphism
  • Apply techniques of modularity, reusability, and encapsulation
  • Reduce costs of programming
  • Develop object-oriented designs with state of the art techniques including use-cases, class lists, assignment of responsibilities to and collaborations among classes, and dynamic behavior analysis
  • Design and use constructors and other methods
  • Do domain analysis and responsibility-driven design
  • Recognize and apply design patterns
  • Express designs in Unified Modeling Language (UML), Class, Responsibilities, and Collaborations (CRC) cards, use-case diagrams, class diagrams, and sequence diagrams

Method

Examples of object-oriented designs are presented, including a bank account, an automated teller machine, an electronic checkbook, a waiting line simulation, a room scheduling system, an appointment system, a quick sort, and more.

You also develop object-oriented designs of your own, applying principles discussed in class.

Textbooks

Bellin and Simone, The CRC Card Book, Addison-Wesley Object Technology Series, 1997, paperback, 260 pages, ISBN 0201895358, $29.00,

There is also a course workbook, spiral-bound, approximately 250 pages.

References

Recommended reading:

    References for Thinking in Objects

    • Budd, Common Class Design Flaws, 1991
    • Buschmann, Meunier, Rohnert, Sommerlad and Stal, Pattern-Oriented Software Architecture - A System of Patterns, 1996, Wiley and Sons
    • Coad and Yourdon, Object-Oriented Analysis, 1990
    • Alistair Cockburn: http://members.aol.com/acockburn
    • Gamma, Helm, Johnson and Vlissides, Elements of Reusable Object-Oriented Software, 1995, Addison-Wesley
    • Jacobson, Object-Oriented Software Engineering: A Use-Case Driven Approach, 1994, Addison-Wesley
    • Ross, Entity Modeling, 1987
    • Shlaer and Mellor, Object-Oriented System Analysis, 1988
    • Cetus' superb index to Internet resources (http, ftp and mailto) about object-orientation: http://www.objecthouse.nl/cetus/oo_patterns.html

Classroom Setup

The course requires a classroom equipped with:
  • A PC for the instructor
  • Microsoft PowerPoint
  • A data projector
  • Connection to the Internet

Site

The course can be taught in your classroom, anywhere in the world. Travel outside the San Francisco Bay Area requires reimbursement of the instructor's travel expense.

Copyright © 2020

Dan Keller Technical Services
2248 International Blvd., Oakland
California, USA 94606
tel: 415 / 861-4500