[Tutor] OO terms and definitions

alan.gauld@bt.com alan.gauld@bt.com
Mon, 10 Dec 2001 11:17:05 -0000


> I am a little(or is that a lot) confused about some OO terminology.

Thats OK
OO terminology is beginning to settle down but for a long time there 
have been numerous different terms for the same concept and subtle 
differences in usage of these terms too. It is confusing even to 
experts!

> I have some quite a bit on the web and I have seen all sorts 
> of definitions for the following terms:

> Module

A Module in the pure sense is any kind of reusable software component.
It could be a function, a procedure, a class, a file, or a library.
Anything that is atomic and can be reused can be called a module.

In Python a module has the more precise meaning of a file.
The file can contain constant/variable definitions, clsass definitions 
and function definitions. It can even contain executable code
(ie executed when the module is loaded)

>     Class

Geneally refers to a description, in code, of some object type.

>        Function?

Technically a function is a (possibly parametereised) executable block 
of code which returns a value. A procedure looks a lot like a function 
but does not return a value. Functions and procedures exist outside of 
classes (usually!).

In python procedures are just functions that return None by implication.
They are executable blocks of code existing outside a class but may, 
or may not, be inside a module.

>        Method?

A method is technically the code block executed on receipt of a given 
message by an object. It usually looks a lot like a function definition 
but is always defined within a class. In python it has a first parameter 
representing the current instance, named by convention 'self'.


>        Procedure?

A function that does not return a value(see function above).

> It seems to me that there is a hierarchy to some degree

Only to a degree, and the extent of that depends on the programming 
language. Languages like Lisp/Scheme change the picture significantly 
compared to Python.

> Does a Module always have a Class? 

No, it may not even have functions!

> How do Function, Method and Procedure differ? 

See above but Functions/Procedures exist outsife classes. Methods 
are functions insiode classes that are activated by the owning 
object receiving a "message". In Python a message looks a lot like 
a function call...

HTH, For more on this look at my web tutor under 
"modules & functions" and the OO topic.

Alan g.
Author of the 'Learning to Program' web site
http://www.freenetpages.co.uk/hp/alan.gauld