CSC323 2010S Software Design

Class 04: Talking About Objects: Using UML

Back to Python Lab. On to Object-Oriented Design and Analysis.

This outline is also available in PDF.

Held: Thursday, February 4, 2010

Summary: We begin thinking more deeply about object-oriented perspectives, focusing on the UML, a notation for representing object-oriented design.

Related Pages:



Python Continued: Binary Search

Beautiful Code: Multidimensional Arrays in NumPy


Background: Storing Multidimensional Arrays

Background: Slicing Multidimensional Arrays

Back to the problem: Iterating arrays

Making it beautiful: Iterators

A functional perspective

Questions and answers

Thinking About Object-Oriented Programming


The UML: Class Notation

What do we care about for classes? Here are some possibilities

We will need notations for each of these things.

We may find that we need other notations, too.

The UML: Processes

Another common issue: What is the sequence of event calls as a particular task is accomplished.


Is the UML the only commonly used modeling language?

Yes, it's the most commonly used graphical modeling language for certain aspects of OO design, particularly for class relationships. That's it's intent. CRC Cards are popular for modeling activities, but that's a separate issue.

What is the interaction between modelling and the methodology used in the construction of software? There are an impressive variety of methodologies for object-oriented design alone, with no clear "best" option. Is the choice of a modeling language as subjective?

Not really. The UML was designed to work for most methodologies.

According to Wikipedia, UML standards have been criticized as "unintelligible geekspeak" ( How should we as programmers balance the need for readability with the time-saving benefits of shorthand and certain code conventions and hacks? Is there a benefit in having some languages be relatively "unreadable" and other languages be extremely "readable", such that programmers have a wide range of language types to choose from?

As you learned in Tutorial, it's important to know who your audience is. Some people find Scheme unreadable. The UML standards are not written for a general programmer audience; these standards are intended to provide precise definitions of the different components of the language. You'll find that any modern language standard is similarly dense.

What is the purpose of having a machine-readable format for system structure? The implementation won't be done by computers, so why is it necessary for it to be in a machine-readable form?

A lot of the implementation is straightforward enough that it can be done by computers. In fact, there are those who promote using the UML as a programming language.

Plus, it's a lot easier to edit stuff in machine-readable form.

Can you explain how profiles and stereotypes work for UML extension?


I viewed the members list at My question is how can we trust a standard developed by a group with members of companies voting on its board to produce an unbiased modeling language?

Trust? If there are enough companies involved, they will generally build a language that provides no one member with a competitive advantage.

The UML is a very highly regarded tool to programmers, but what are some of its drawbacks?

There's a lot to the UML. If you're someone who believes that you need to know the whole language to use it, there's a lot to grasp. And, as is often the case in large systems, different people may learn different subsets, leading to it being less of a lingua franca.

Back to Python Lab. On to Object-Oriented Design and Analysis.

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Tue May 11 12:40:51 2010.
The source to the document was last modified on Mon Jan 25 20:52:43 2010.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Creative Commons License

Samuel A. Rebelsky,

Copyright © 2010 Samuel A. Rebelsky. This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.