The issue of this exercise is to create navigation among objects
For example, 1-1 of the Association The person should be aware and address:
- If any person has been given an address, then that person should be assigned to the address (and vice versa).
- If the address is assigned to 1 person and then person 2, then there will be no address of person 1 and the person will be 2.
This is the code snippet that implements it.
public class A {internal BA; Public b value {receive {return; } Set {if (value == null) {if (a! = Null) a.a = null; } And value. A = this; A = value; }}} Public Segment B {Internal AA; Public A Value {Get {Return; } Set {if (value == null) {if (a! = Null) a.a = null; } And value. A = this; A = value; }}}
This allows the following tests to be passed:
// For general setup: var a = new A (); Var B = new B (); // Test 1: A. Val = b; Apprehension Same (A, B. Well); // Test 2: b. Value = a; Assurance Reekval (b, a.well); // test3: b. Value = a; B Value = null; Assert.IsNull (a.Value); // test4: var a2 = new A (); B Value = A2; Apprehension Same (B, A 2. Well); Apprehension Oh no (A, B. Well); // Test 5: a. Value = b; Apprehension Same (A, B. Well); Var a1 = New A (); Var B1 = New B (); A1.Value = b1; Decide. Same (A1, B1 value); // test 6: var a1 = new A (); Var B1 = New B (); Assert.IsNull (a.Value); Assert.IsNull (b.Value); Assert.IsNull (a1.Value); Assert.IsNull (b1.Value);
The question now is how will you handle the code in the setters to avoid potential mistakes while writing to such classes?
:
- Class A and B's public interfaces can not be changed.
- The factory should not be used.
- Statistics should not be used (to continue sharing information).
- ThreadInfo or similar should not be used
I really can not understand your challenge, what happens when you go to class A Let's start some examples and then an example of Class B?
a1 = new A (); A2 = new A (); A3 = new A (); AA4 = new A (); AA5 = new A (); BB = new B ();
Which test is near? Which fails?
You can see, once A
occurs immediately, it has state in some way by B
Must include an example of an current example . Therefore this example of B
must be present before you start this A
class.
Also B
. There should be a reference for an already present example of A
.
As far as I understand, Class A should be a constructor with reference to the current version: <: >
Public category A {Private BB; Public A (BB) {this.b = b; }} // Then you can have: BB1 = new B (); A1 = New A (B1); // Here the link is BB2 = new B (); A2 = New A (B2); // and another link
either with this or the other b
.
You write that you do not want to change the public signature of A
and b
, and you do not want to add factories in the code. I really can not see the solution continuously under such obstacles, or the challenge itself is not clear?
EDIT: By making a wild guess here, I think that you try to get it here, using reflection can be done: you want to reflect the current code point (call stack For a current instance of A
, and a new example of A
. It may be by using the image, but it is very hard and you have a concrete rule for the relationship between the new examples of A
s and And should be strong set b
. If the direction of this solution is , then I think you should dive in the reflection and see how it goes, it is a large area.
No comments:
Post a Comment