Composite Pattern part 2

6 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€64.99
List Price:  €92.85
You save:  €27.85
£55.77
List Price:  £79.68
You save:  £23.90
CA$95.68
List Price:  CA$136.70
You save:  CA$41.01
A$105.96
List Price:  A$151.38
You save:  A$45.42
S$94.48
List Price:  S$134.98
You save:  S$40.50
HK$546.78
List Price:  HK$781.15
You save:  HK$234.36
CHF 63.33
List Price:  CHF 90.48
You save:  CHF 27.14
NOK kr761.11
List Price:  NOK kr1,087.35
You save:  NOK kr326.23
DKK kr485.02
List Price:  DKK kr692.92
You save:  DKK kr207.89
NZ$116.44
List Price:  NZ$166.35
You save:  NZ$49.91
د.إ257.06
List Price:  د.إ367.25
You save:  د.إ110.18
৳7,660.01
List Price:  ৳10,943.35
You save:  ৳3,283.33
₹5,835.78
List Price:  ₹8,337.18
You save:  ₹2,501.40
RM331.75
List Price:  RM473.95
You save:  RM142.20
₦86,437.65
List Price:  ₦123,487.65
You save:  ₦37,050
₨19,492.21
List Price:  ₨27,847.21
You save:  ₨8,355
฿2,572.74
List Price:  ฿3,675.50
You save:  ฿1,102.76
₺2,264.43
List Price:  ₺3,235.04
You save:  ₺970.61
B$355.02
List Price:  B$507.19
You save:  B$152.17
R1,295.44
List Price:  R1,850.71
You save:  R555.27
Лв127.05
List Price:  Лв181.51
You save:  Лв54.46
₩94,909.58
List Price:  ₩135,590.93
You save:  ₩40,681.35
₪260.15
List Price:  ₪371.66
You save:  ₪111.51
₱3,993.87
List Price:  ₱5,705.78
You save:  ₱1,711.90
¥10,713.01
List Price:  ¥15,304.96
You save:  ¥4,591.95
MX$1,187.73
List Price:  MX$1,696.83
You save:  MX$509.10
QR254.83
List Price:  QR364.06
You save:  QR109.23
P950.82
List Price:  P1,358.38
You save:  P407.55
KSh9,247.76
List Price:  KSh13,211.65
You save:  KSh3,963.89
E£3,352.12
List Price:  E£4,788.95
You save:  E£1,436.83
ብር4,006.43
List Price:  ብር5,723.72
You save:  ብር1,717.28
Kz58,511.64
List Price:  Kz83,591.64
You save:  Kz25,080
CLP$65,950.47
List Price:  CLP$94,219
You save:  CLP$28,268.52
CN¥506.53
List Price:  CN¥723.65
You save:  CN¥217.11
RD$4,055.76
List Price:  RD$5,794.19
You save:  RD$1,738.43
DA9,420.16
List Price:  DA13,457.95
You save:  DA4,037.79
FJ$157.70
List Price:  FJ$225.30
You save:  FJ$67.59
Q542.52
List Price:  Q775.06
You save:  Q232.54
GY$14,601.52
List Price:  GY$20,860.22
You save:  GY$6,258.69
ISK kr9,773.40
List Price:  ISK kr13,962.60
You save:  ISK kr4,189.20
DH703.98
List Price:  DH1,005.73
You save:  DH301.75
L1,236.34
List Price:  L1,766.28
You save:  L529.93
ден3,998.26
List Price:  ден5,712.05
You save:  ден1,713.78
MOP$561.77
List Price:  MOP$802.57
You save:  MOP$240.79
N$1,291.99
List Price:  N$1,845.78
You save:  N$553.78
C$2,569.36
List Price:  C$3,670.67
You save:  C$1,101.31
रु9,319.09
List Price:  रु13,313.56
You save:  रु3,994.46
S/260.54
List Price:  S/372.22
You save:  S/111.67
K269.79
List Price:  K385.44
You save:  K115.64
SAR262.50
List Price:  SAR375.01
You save:  SAR112.51
ZK1,882.68
List Price:  ZK2,689.66
You save:  ZK806.98
L323.40
List Price:  L462.03
You save:  L138.62
Kč1,628.77
List Price:  Kč2,326.92
You save:  Kč698.14
Ft25,334.28
List Price:  Ft36,193.38
You save:  Ft10,859.10
SEK kr755.02
List Price:  SEK kr1,078.64
You save:  SEK kr323.62
ARS$61,468.17
List Price:  ARS$87,815.44
You save:  ARS$26,347.26
Bs483.33
List Price:  Bs690.51
You save:  Bs207.17
COP$271,845.87
List Price:  COP$388,367.89
You save:  COP$116,522.02
₡35,672.25
List Price:  ₡50,962.55
You save:  ₡15,290.29
L1,724.16
List Price:  L2,463.20
You save:  L739.03
₲522,510.75
List Price:  ₲746,475.93
You save:  ₲223,965.17
$U2,674.97
List Price:  $U3,821.56
You save:  $U1,146.58
zł281.37
List Price:  zł401.98
You save:  zł120.60
Already have an account? Log In

Transcript

In our last video, I hope you remember that we have created these three components. And using this particular abstract component class, we created those three leaf components. Now CPU, RAM and SSD, all three were leaf component because inside this component we are not going to add any other components. As we discussed in that we are going to have one motherboard component, which was going to be a composite component inside of which we can add any of the leaf components. But to create a motherboard component, we need to create an abstract class first, so I'm going to add a new item. And this new item is a C sharp class with the name composite component.

This composite component is going to be that abstract class which can help me to create multiple concrete composite components. To make sure that this class is going to be public as well as abstract, and this composite component class is going to have one paragraph associated with that, which is going to be that component. So because this composite component can be associated with this component abstract class, inside this we are going to have a logic like this, you can see I have one generic list on the top, which is going to hold the objects of type component, and it's going to have a name underscore components is going to have all the list of components is going to be stored inside that and then you can see we have an add method. This add method is also taking one parameter of type component, but it's going to add those components into this particular generate list.

Our constructor of this composite component class is not having any complicated logic inside that but it's going to have a name and price and then we are going to use this name in price when we are going to create an object of this class. So this constructor is very simple. In below section, we have one property price which we are overriding, which is actually going to take the values of this parameter. And using that it's going to calculate total price for all the components which are there in the collection is going to do the addition of all the prizes, and is going to return the one simple price at the end. And that is going to be accessible with this property capital pre price. So this is a very simple logic, which I hope you guys are able to understand.

Now this total price is something which we are going to use in our test cases. So that's what we'll see at that time. Let's click on Save all. And now I'm going to create some composite component using this abstract class. I'm going to right click on my project and I'm going to add a new C sharp class and I'm giving a name of the C sharp class motherboard. I'm gonna click on Add and you can see I have a class motherboard inside which first, I'm going to specify that this class is going to have a logic like this is going to be public as well as you can see is actually using that composite component using which I'm creating one more component, but this time also we are going to specify that is going to have only one parameter which is price.

And then a name is something which we are directly hard coding there, which is motherboard. This component looks similar to our leaf component, but the only difference is the parent ever class is different. Let's add one more new item which is going to be another composite component which is going to be a name computer. This computer is actually my root level object, but this is also a composite object because it's going to have other component inside that. The only thing which I'm going to change is is going to have price zero with the name computer, because computer is going to have any base price. The total price of the computer is going to be Total Cost of whatever we need to add.

So this is one of a composite pattern component. And now let's click on Save all. And now is the time, so that we can use all of these things into our unit test project. So let's go to the unit test project. And inside this test method, I'm going to write some simple logic. But before that, I need to add a reference of the class library.

So I'm just going to add the reference of composite pattern. And like always, we are going to add a nice base also on the top. We are good with this. Now let's write some logic inside this method. So I'm going to write a code like this. You can see first I'm creating an instance of a computer class.

And we know that it's going to be a composite object. Inside this computer, we can add some more elements. So after this, I'm adding one motherboard, CPU, RAM drive everything. The computer is not having any price in the constructor. So that's why we do not have any parameters in that If you check motherboard is having a price and same way CPU RAM and SSD is also having an associated price with that. Once we are done with all these instances on the top you can see motherboard is a composite component.

So inside this we can add something and we are adding CPU as well as we are adding ram into that. So the total cost of the motherboard is going to be a combination of RAM CPU plus the original motherboard cost. So that's why motherboard is a composite while it's actually a total combination of this three is going to create one cost. If you see in the computer which is a composite object, the airforce adding motherboard. So computer is going to have motherboard as well as is going to have one leaf object which is drive and that's why the total cost of the computer is going to be combination of all four, which I'm actually adding inside this. Once we are done with this we are just writing one a source statement to check the price of the computer and that should be similar to this which should be total of all four, which we are adding into that, if everything is fine and if it is created properly, we are going to run the test case and that test case should be passed.

So if you see when I run the test case, this test case is successfully passed. It shows me that the structure of this computer object is properly created with this kind of nested hierarchical object. I hope you understood this scenario. And you understood our composite pattern, which actually helps me to create a complex object with the hierarchical structure. Thank you

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.