Re: circular relationships ok?

From: Alexandr Savinov <spam_at_conceptoriented.com>
Date: Thu, 02 Mar 2006 18:40:13 +0100
Message-ID: <44072dfe$1_at_news.fhg.de>


Volker Hetzer schrieb:
> Alexandr Savinov schrieb:

>> A model with cycles is not a concept-oriented model (theoretically). 
>> It is a strong constraint but it is part of the definition. Then the 
>> question is if it is useful or not. For any model there are examples 
>> which are non-trivial and very difficult to implement. Loops and 
>> cycles can be always avoided by introducing a common subconcept. If A 
>> and B mutual reference each other then we introduce a common 
>> subconcept C:
>>
>> A   B
>>  \ /
>>   C

>
> Ok, here goes:
>
> Net<-------\
> | |
> V |
> Constraint*|
> | |
> V |
> Token* |
> / \ |
> | -----/
> V
> Constant
>
> (* denotes "zero or more")
> ("Token" refers to either a constant or a Net, not both.)
>
> How would you do it?
> Maybe I'm blind but I simply don't see it.
> My problem is that the relations are directed. A Nrt doesn't
> refer to constraints and tokens, a net refers to constraints
> and the token optionally refers to another net.
> Even if I add a Token/Net table, I still have the circle.

Try the following approach in order to find directions for arrows and establish an order without cycles. Assume that you do not have any entities and your model is empty. Then take, say, Net, and ask a question:

I thing yes, but you should decide yourself. If so then Net is positioned above Constant and any constant object can reference one object.

The same question should be asked about other pairs of concepts. As far as understand your problem domain, Net is the primary object which is able to exist without any constraints. However, constraints are not able to exist without a net. So a net object should not reference any other object in your model and has to be positioned at the top. (No outgoing arrows from Nets.)

Constraint is probably the most specific concept. It has to know (reference) a net (for which it is created), a constant and other elements it involves. So position it at the bottom and all arrows will originate in it. However, if we need to reference several elements, say, a constraint can be used in many nets then we need a common subconcept,say, NetConstraint which references both. The same is applied to other relationships.

-- 
http://conceptoriented.com
Received on Thu Mar 02 2006 - 18:40:13 CET

Original text of this message