On 10/01/13 02:26, Ed Owens wrote:

First, please start a new thread for a new topic, don't reply to an existing one. Threaded mail/news readers are not fooled by a simple change of subject so your post gets buried deep in an old thread.
Just create a brand new mail to the list address.
Anyway...

I'm working my way through Chun's book "Core Python Applications
Programming" and can't get one of the examples to actually work.  In
trying to analyze the problem (good learning approach) I had troubles
understanding the interactions between the two classes of objects.  As
an old FORTRAN programmer, I picked up my pencil to flowchart the code,
then realized I didn't know how to flowchart an OOP.

Us a message sequence chart(MSC). A vertical line represents an object. Draw arrows between the lines to represent the messages passing between them. Messages correspond to function calls in procedural programming.

MSCs are a very old design tool from the communications world but adopted by OOP and included in UML (see below)

Google led me to UML (Unified Modeling Language) and OMG (apparently Oh
My God!!!).  Looks more complicated than the code I'm trying to understand.

OMG (Object Management Group) is a body overseeeing many things OO based. Design tools, integration technologies, languages and specifications etc.

UML is a design language that, if used to its limit, can be used to generate working code. As a result it has a lot of stuff in there to represent fine grained detail. So yes, it is as complex as code because in a sense that's what it is. Graphical code.

In addition UML is designed to completely represent a large software system so it includes notations for designing networks and data centres as well as application code.

The good news is that most people don't use UML like that and only use about 20% of UML or less. The main diagrams you are likely to use as a Python programmer are class diagram, MSC, activity diagram(flow charts!) and state charts. Focus on those areas and don't obsess on the details and UML becomes useful to ordinary mortals. I use UML in the v3 version of my tutor in the OOP topic, the examples there hopefully show how UML can be used even in simple designs.

It there a technique that people use to figure out how do design OOP
models, objects, and the information flow?

There are lots of them, that's why UML was invented to bring the best bits together into a single Unified Modelling Language.

But OOP is more about a different way of thinking about the problem.
You have to start thinking about objects and their responsibilities.
Objects own data and provide services. Other objects use those services to provide their services and so on. So we tend to get a bottom up style of design. Build (or select from the library) the lowest level objects then build the next layer up that consume those. Don;t be scared to split objects into two(or more) if they start to get unweildy or to combine two (or more) if they don;t seem to have a purpose or are duplicating services.

CRC cards - not part of UML - are a good place to start when building OOP systems. A very easy technique that does not require any fancy tools.

HTH,

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to