Object-Oriented Design Frequently Asked Questions


Where do I find answers to questions about Python ?

Tutorials, references, and links kan be found at http://www.python.org.

An excellent starting point is the Python Tutorial by Guido van Rossum.

How does one check whether an object c is of "type" C ?

  1. For builtin types, one can use the operator type(). For example:
         >>> type(2)
         <type 'int'>
    If we declare a class C and create an instance c as shown below, type() will give rather general information:
        >>> class C:
        >>> c=C()
        >>> type(C)
        <type 'classobj'>
        >>> type(c)
        <type 'instance'>
  2. If we want to check whether c is an instance of class C, we can use the test
        >>> isinstance(c, C)
    This will evaluate to True if c is an instance of class C or any of C's sub-classes.

    In recent versions of Python, it is possible to test for basic types with isinstance as in isinstance(1,int), isinstance(1.2,float), isinstance((2,3),tuple), isinstance([3,4],list) and isinstance([1,2],list).

How do I generate nice HTML from Python source code ?

  1. Colorized pretty-printing for file code.py can be done with
    enscript -Whtml -Epython --color code.py -o code.html
  2. An API document for file code.py can be generated with
    pydoc -w code
  3. The more advanced Epydoc allows one to generate API documentation for Python modules, based on their docstrings and in addition supports a lightweight markup language called Epytext to format docstrings, and to add information about specific fields, such as parameters and instance variables.

Which tool do we use to draw UML diagrams ?

A plethora of tools is available. In COMP 304 we focus on the "essence" of OO design and build only relatively small designs. For these reasons, using a huge, sophisticated tools may (1) take a long time to learn and (2) distract from the "essence" of the problem. Some useful tools (installed on the Trottier machines):


MUST we work in teams of 2 ?

You must work in a team of exactly two people. Previous experience has shown that after the initial transient chaos of finding a partner, this works really well. Try to find a team partner after class or by sending a message to the entire class on WebCT. Remember that "pair programming" requires you to actually work together (same place, same time). You may form different teams for different assignments.