[Tutor] list of references to object properties

Alan Gauld alan.gauld at btinternet.com
Sat Jan 19 19:01:04 CET 2013


On 19/01/13 15:47, Jose Amoreira wrote:

> motion. I defined a class, CelestialBody, that describes objects that
> represent planets in my simulation. These objects have three attributes:
> position, velocity and mass (the first two are 3D-vectors; as such, the
> number of attributes is actually 7). The many-body system is represented
> in the simulation by a list of CelestialBody objects.

OK, why not hold that list in the CelestialBody class?

Then get the list to either hold a copy of the key values or generate it 
on demand. If the list of values is also in the class definition all the 
descendant types of body can update the class list at the same time as 
updating their own copy. It means duplicating data but it keeps the 
instances in control of the data while making it available (read-only, 
from the class) when needed. The overhead is creating the getter/setter 
methods to update the class list in parallel with the instance data.

Alternatively store it once at class level and create properties of the 
instance that do all access in the class list. That way it looks like 
you are updating the instance but the instance delegates the storage to 
the class list. The instance can store its own  index into the class 
list as advised by the class on creation.

There are ways of doing what you want that keep responsibility in the 
object. The choice will depend on how often you need to vary the 
instance values as opposed to using the class list.

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



More information about the Tutor mailing list