Difference between revisions of "Composition - 2017"
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | Composition is where | + | Composition is where objects created within another object are destroyed along with the containing object. |
+ | |||
<syntaxhighlight lang="csharp"> | <syntaxhighlight lang="csharp"> | ||
− | |||
class Location | class Location | ||
{ | { | ||
Line 13: | Line 13: | ||
} | } | ||
} | } | ||
+ | </syntaxhighlight> | ||
− | + | As you can see Location is creates an instance of Fox & Warren. So if you remove the instance of location then the Fox & Warren instances for that location will also be destroyed. | |
+ | |||
+ | ==Other Examples== | ||
+ | |||
+ | Warrens & Rabbits - warren creates and destroys rabbits: | ||
+ | |||
+ | <syntaxhighlight lang="csharp"> | ||
+ | class Warren | ||
{ | { | ||
− | private | + | private const int MaxRabbitsInWarren = 99; |
− | + | private Rabbit[] Rabbits; | |
− | private | + | private int RabbitCount = 0; |
− | private int | + | </syntaxhighlight> |
− | + | ||
− | + | The Warren class declares an array of Rabbit. The constructor method for Warren creates each rabbit: | |
− | |||
− | |||
+ | <syntaxhighlight lang="csharp"> | ||
+ | public Warren(int Variability) | ||
+ | { | ||
+ | this.Variability = Variability; | ||
+ | Rabbits = new Rabbit[MaxRabbitsInWarren]; | ||
+ | RabbitCount = (int)(CalculateRandomValue((int)(MaxRabbitsInWarren / 4), this.Variability)); | ||
+ | for (int r = 0; r < RabbitCount; r++) | ||
+ | { | ||
+ | Rabbits[r] = new Rabbit(Variability); | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | So if a Warren is destroyed it will destroy all of the rabbits in that warren also. | ||
+ | |||
+ | =Conclusion= | ||
+ | The following are therefore examples of composition (Composition shown with Filled Diamond): | ||
+ | *Location to Fox | ||
+ | *Location to Warren | ||
+ | *Warren to Rabbit | ||
+ | *Simulation to Location |
Latest revision as of 12:48, 28 May 2017
Composition is where objects created within another object are destroyed along with the containing object.
class Location
{
public Fox Fox;
public Warren Warren;
public Location()
{
Fox = null;
Warren = null;
}
}
As you can see Location is creates an instance of Fox & Warren. So if you remove the instance of location then the Fox & Warren instances for that location will also be destroyed.
Other Examples
Warrens & Rabbits - warren creates and destroys rabbits:
class Warren
{
private const int MaxRabbitsInWarren = 99;
private Rabbit[] Rabbits;
private int RabbitCount = 0;
The Warren class declares an array of Rabbit. The constructor method for Warren creates each rabbit:
public Warren(int Variability)
{
this.Variability = Variability;
Rabbits = new Rabbit[MaxRabbitsInWarren];
RabbitCount = (int)(CalculateRandomValue((int)(MaxRabbitsInWarren / 4), this.Variability));
for (int r = 0; r < RabbitCount; r++)
{
Rabbits[r] = new Rabbit(Variability);
}
}
So if a Warren is destroyed it will destroy all of the rabbits in that warren also.
Conclusion
The following are therefore examples of composition (Composition shown with Filled Diamond):
- Location to Fox
- Location to Warren
- Warren to Rabbit
- Simulation to Location