Object-Oriented Design Frequently Asked Questions
Python
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 ?
- 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:
pass
>>> c=C()
>>> type(C)
<type 'classobj'>
>>> type(c)
<type 'instance'>
- If we want to check whether c is an instance of class C,
we can use the test
>>> isinstance(c, C)
True
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 ?
- Colorized pretty-printing for file code.py can be done with
enscript -Whtml -Epython --color code.py -o code.html
- An API document for file code.py can be generated with
pydoc -w code
- 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):
- Dia is a very lightweight drawing tool with
support for UML.
- MagicDraw is a commercial product with support for UML 2.0.
A community edition is available.
Assignments
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.
Hans Vangheluwe, Winter Term 2008.