Guys, for aggregation and composition think of it this way Aggregation(empty rectangle): If a dog breed goes extinct, dogs don't go extinct. Composition(filled rectangle): If dogs go extinct, the dog breed also goes extinct.
Reworded in a more lengthy fashion: Aggregation: The 'Dog' contains a multitude (aggregation) of 'Breeds'; therefore, if a 'Breed' disappears, the 'Dog' remains. Composition: Each 'Breed' is made up of (composed of) 'Dog'; therefore, if 'Dogs' disappear, 'Breeds' can no longer exist.
sorry to be so off topic but does anyone know a trick to log back into an Instagram account..? I somehow lost the account password. I appreciate any assistance you can offer me!
Since Dog is a (sub-)class implementing and inheriting methods from the abstract Animal class, the arrow should be on the other side (see video at 14:05)
From your explanation of Aggregation & Composition, I think you got the notations wrong. Composition should be the filled diamond while Aggregation is the empty diamond. But you used them in the reverse.
+Derek Banas you should create an annotation to let people know about that mistake. Luckily I saw this comment, but others might not see it. Anyways thanks a lot for this video.
+Derek Banas You made one more error. The arrow should be pointing on to the abstract class Animal and not the subclass as it is presented in the video. The "Dog "class inherits from the "Animal" abstract class - not the other way round.
You're very welcome :) An Association occurs when a class contains a reference to another class "Has a". An Aggregation and a Composition are both Associations, but are more complex Associations. An Aggregation occurs when a class contains another class and the contained class can exist without the container class. A Composition ("Part of") also has a class that contains another. The only difference is that the contained can't exist without the container. I hope that helps
That is really up to you and your team. In the real world i normally always used simple class diagrams and verbose sequence diagrams and never had any trouble. Normally new programmers either create overly complex UML diagrams or don't understand them at all. You will normally be at the mercy of the systems architect were you are hired. i hope that helps :)
The association arrows are almost always pointed at the containing object. I cover that later in this series because as you pointed out I should have done it that way. A Composition Association (Filled Diamond) is one in which if the container is destroyed so is the contained object. Aggregations (Empty Diamond) is one in which if the container is destroyed the contained lives on. Composition - "Part of" Aggregation - "Owns a"
I have seen that presented in both ways. In the real world unlike in books there are very few iron class rules. I for example always preferred to ignore most all diagrams except for sequence diagrams which I made very detailed. I never had a boss tell me what I was doing was wrong. As an architect at the time, all of the programmers under me loved working with me.
This tutorial covers the UML 2.0 specification exactly. I do however know what you are referring to. Also, most people don't use the exact spec all of the time in the real world. As you'll see when you get to sequence diagrams I don't either :)
Thanks for taking time to put these lessons together. It sure is nice hearing a coherent and native English-speaking instructor, as opposed to an unintelligible thick Indian accent.
With both an Aggregation and a Composition, a class (I'll call it Dog) contains another class object (One is Bark and the other is FavoriteFood). With an Aggregation, since FavoriteFood could be used by other potential Animal objects (Non Dog Objects) then if the Dog object is destroyed FavoriteFood could continue to exist. With a Composition, Bark couldn't exist or would have no meaning without the Dog object (Assuming that no other Animals bark) Does that help?
All architects work differently. I personally use sequence diagrams that are heavily commented. I also write very detailed usage descriptions. I make class diagrams, but I don't dwell on them. In the real world I do all of this stuff with paper and pencil. In groups I always work on a whiteboard
Thank you very much for the compliment :) I think because I aim to satisfy people that enjoy fast videos that I stand apart from many of the other tutorial people. I'm very happy that you enjoy them. Yes, I have over 500 videos on my RUclips channel. Some of the old ones are terrible, but I do my best to always improve.
My undergrad is Computer Science and I have studied UML 8 years ago. As a PhD student I couldn't find a better refreshing tutorial than yours. good job. can you please post your slides so we can take notes on it. That would be great keep it up
Basically you need to create a use case description that goes over everything in exact detail. Then break everything into objects. Students, admins, email, everything becomes an object if it is an object in the real world. Then translate the use case description into a sequence diagram. You have the objects and the interactions, so you just have to connect them. My object oriented design tutorial shows you everything step by step. Tell me if you have questions after watching the 1st 2
I check all my RUclips personal messages. The ATM system I designed isn't much different from what you want to design. Instead of passing emails it passes an ATM transaction. Replace PIN number and valid card number with userid and password. They are almost exactly the same
You are correct. I'm sorry if I didn't make that clear. I think I got a bit tongue tied and I went back and revisited association arrows to correct any misunderstanding in the next few tutorials. Thanks for pointing that out :)
I made a little error there. Sorry about that. Yes you should definitely make videos. There are a ton of requests I get that I just don't have time to cover.
1.)@ 2:10: semantical error: encapsulation is not information hiding. encapsulation is the concept of encapsulating attributes and methods, which are logically dependent, i.e. the methods operate on the attributes. www.javaworld.com/article/2075271/core- java/encapsulation-is-not-information-hiding.html 2.)protected elements are also accessible to classes in the same package
If only everyone had a teacher like you. If only. Thanks to the RUclips creators for giving people like you an opportunity to teach countless people like me who haven't had a good teacher, and most importantly, thank you!
Thank you for these. I am finding myself thrown into a OOA&D class with no real previous knowledge and you are thorough and do not skip "obvious" stuff like other videos do. Obvious comes with experience and these are perfect for me as a beginnger.
I remember going through your java tutorials over 10-15 years ago as a teen... now I'm a plumber who makes video games at a high level in their spare time lol
I'm sorry, but I just started Android tutorials. I'm having a hard time finding the time to get those out quickly. I promise to cover Obj C as soon as possible. May God bless you as well :)
Thank you :) I do my best to make everything understandable. I have one more video on the syntax of UML and then I'll get into using them in real world applications
Diagram at 14:30 says that Animal extends Dog I believe that you wanted to put it diffeently. And some slide before you put abstract class Animal below Dog. It was correct notation, but I believe it's more readable if abstracts are above inherited classes
The system is all the objects combined. Break everything down into their smallest parts. If it is an object in the real world then make it an object in your use case. Watch my examples and you'll get it. I provide both fast and slow examples
I have no words to describe how you change my life with your videos! Thank you for all your tutorials..I'm not English-Speaker but your explanations are so clear that i understand quickly!
You put me in a total stupor with your Dog and Breen diagram. Composition relationship is drawn with a solid diamond. Just put an annotation at that point and yup, hammered down, everything will be fine. Other than that, good job!
The best explanation ever.. Your articulation of voice is amazing and gives more meaning to your words. Only few people know to talk like this, especially on dry subjects like requirement engineering, process modeling, diagrams etc.
I'm sure someone has said this, but the inheritance arrow on abstract classes is backwards from when you introduced them. Also, why no cheat sheet for this one? I'm printing them all out for my cube but was sad not to find one for class diagrams... Excellent tutorials by the way. Excellent.
14:06 The arrow is facing the wrong way :) With interfaces, the arrow is from Animal to Dog (which is wrong), whilst it with Inheritance at 11:23 the arrow is from Dog to Animal (which is right). (Took me 30 mins to figure out, but hey...)
You actually have aggregation and composition mis-matched. From what I was thought composition has a solid diamond while aggregation doesn't this is a very strange example because it's using both. If you're trying to demonstrate both I think in theory it breaks the composition definition. And the composition is more opinionated. But if the whole dog is destroyed the part breed isn't... What are you getting at here? Kind of bad confusing example. Ambiguity error please use the scope resolution operator :: lol
What are you getting at here? In composition the life cycle of the part class is dependant on the whole class. He is right about the diamonds as well. The part breed is destroyed if it is composition but not if it is aggregation. I like not this comment.
Don't know if anybody said this already but I think you've got the arrow pointing the other way around on 14:02 Really enjoying your tutorials, btw. Planning on making my own once I feel prepared enough.
It will be so kind of you if you initiate it not too late. As I am into objective c now a days just a beginner. Right now following lectures from stanford university on youtube but I am sure I will understand much more if you will deliver your lectures. May the CREATOR of all mankind bless your service.
Hello Derek I am taking course On object oriented design from Alberta university (from Canada ) and there is some points are different 1- association is just when object is a parameter to method in other object class and in uml is just line (not doted line as in video) 2- aggregation is different a way from composition in code that aggregation is when u have something like array of the object of other class (and this array may have objects or may null) but in composition the object u use from other class need to be used every time u use this object (that can happen when u declare that object in yr constructor )
Thank you very much for the nice message :) Ill cover obj c and iDevice programming after I cover android. I'll cover it with the same detail I did with java
Derek, on the 'Abstract Class Diagrams' slide, at 14:20, If I am not wrong, the arrow between Animal and Dog classes seems to be pointing in the opposite direction. Please make a correction.
I just want to thank you for this tutorial service you provide. Currently taking an online community college course with no lectures provided and a very bland textbook; this is helping me immensely!
I've used this kind of diagrams on C# before, still haven't used any on Java, but I would guess they are similar. My questions is: are class diagrams the only build in (or added with plugin) kind of UML diagrams in the popular programming languages like Java, C# etc. And where are the other type of diagrams (like the others in this playlist) usually used? I would guess software architects and "plan makers" in non-IT jobs as well. And also one can do it for himself, with a paper and pencil
I notice that around 14:43 you mentioned that dog is a subclass of animal and having an arrow head pointing at Dog class. Now when you mentioned at 11:29 that a subclass name Dog is created from the animal superclass and having the arrowhead pointing to the Animal superclass. Other than that I will give a like. Cool stuff !!
You're very welcome :) I show on this picture what most of the arrows mean. newthinktank. com/wp-content/uploads/2012/12/UML-Domain-Model. png I hope that helps clear anything up
Thanks for your short and precise videos. I was mainly watching on design patterns, now i found the UML videos very interesting as well. I have one comment, which i think you mistakenly used opposite side of the arrow for the concrete class inherited from Abstract class at time 14:20 . Or correct me if am mistaken too. Well done !
What do you do if there is both a dependency and an association between two classes? Show both dependency and an association? or just the association since that is the 'stronger' one?
I'm sure u get this alot from people, but you are just simply the best. Do you have videos on other languages too.? just incase i might need them in future. Thanks again. your videos are great .:-)
I have a question that pertains to other class diagram relationships, but I will just reference the Inheritance relationship. In your example, you depicted the Dog and Animal classes by putting the subclass ABOVE the superclass. I have no idea, so I am asking... Is that the standard way of depicting this relationship? My own logic processes, which may be wrong, have thought of the most generic class at the top, followed by more and more specific versions (i.e. subclasses) below. Is that wrong?
Derek Banas hi derek at 11:21 i think that "-name:String" should not be written in child class because it is marked as private in parent class indicated by "-" symbol...I would like to know your opinion on this..thanks and keep up the great work :-)
Your video has cleared much of the concepts I was fearing of. However I anticipate that would be a great service from you and help if you upload objective c programming tutorials. I love your voice pitch and clarity you use to simplify things. If possible plz bring your lectures in detail about OBJECTIVE C programming step by step.
so what is the answer? also when u were explaining aggregation u had d unshaded diamond not at the whole(dog) but at the part(breed). you had the shaded diamond at the right place according to the text(sommerville). So, u need to clear up where the unshaded one should rlly be as, according to the text book, it's drawn at d wrong class.
Great Videos!! Very Helpful and well structured. But, next time you make a playlist, could you number the videos (it helps to find the following video if you are watching it outside the playlist)?? Thanks for all your efforts!!!
I believe you have aggregation defined wrong. aggregation is the process in which you inherit class using a instance not inheritance, I believe it to be so.
@14:00 The arrow should be in reverse. Dog should point to Animal. At work in the first week I made over and over this mistake to point a base class to a inherited one when software concepts were presented (this is natural human thinking) this is why mistakes appear. Finally I was able to correct that thinking as upper class derives the base class.
fantastic classes. man you are gifted to teach. congrats. one advice, put the number of lecture in the title. I`m just going back and forth to see which one is the next lecture. other than that.. man I wish I had you as my teacher.
Hello Derek, this is one good example of abstraction. 1) using java class codereview.stackexchange.com/questions/83387/building-data-abstraction-for-line-segments-using-type-abstraction 2) using python function objects codereview.stackexchange.com/questions/83626/building-data-abstraction-and-adt-for-rectangle-using-objects
Hello Derek, Its an excellent video. In the Abstract class and Interface diagrams, the methods are shown with hyphen ((-) negative symbol). Should it not be plus (+) symbol ? -- Sridhar
Shouldn't the visibility modes of the methods in the 'Animal' class in ABSTRACT CLASS DIAGRAMS be declared protected (#) or public (+) for the subclass 'Dog' to inherit them?
Thank you Derek for another great tutorial. But i don't get when to use an association. For example in java, i have class dependency between A and B when class A has a method with type B as argument in one method. Composition is used when one class has an attribute which is of type of another class, thats clear as well. But when do i figure out if i have an association if i look at some java code? Best regards
Guys, for aggregation and composition think of it this way
Aggregation(empty rectangle): If a dog breed goes extinct, dogs don't go extinct.
Composition(filled rectangle): If dogs go extinct, the dog breed also goes extinct.
+Dedokire *Very nicely put!*
*Thanks!!*
Reworded in a more lengthy fashion:
Aggregation: The 'Dog' contains a multitude (aggregation) of 'Breeds'; therefore, if a 'Breed' disappears, the 'Dog' remains.
Composition: Each 'Breed' is made up of (composed of) 'Dog'; therefore, if 'Dogs' disappear, 'Breeds' can no longer exist.
sorry to be so off topic but does anyone know a trick to log back into an Instagram account..?
I somehow lost the account password. I appreciate any assistance you can offer me!
@Israel Bryce Instablaster :)
Since Dog is a (sub-)class implementing and inheriting methods from the abstract Animal class, the arrow should be on the other side (see video at 14:05)
yea! i noticed too!
This is must be reverse.
@@utmostcreator Yup, he needs to fix that.
From your explanation of Aggregation & Composition, I think you got the notations wrong. Composition should be the filled diamond while Aggregation is the empty diamond. But you used them in the reverse.
okeyxyz Sorry about that error. You are correct.
+Derek Banas
you should create an annotation to let people know about that mistake. Luckily I saw this comment, but others might not see it. Anyways thanks a lot for this video.
+Derek Banas You made one more error. The arrow should be pointing on to the abstract class Animal and not the subclass as it is presented in the video. The "Dog "class inherits from the "Animal" abstract class - not the other way round.
Yeah same here jeez
Yeah you're right with your point
Learnt more in five minutes from you than a 3 hour lecture at college :-)
+Geordi La Forge Thank you for the compliment :) I'm glad I could help.
+Geordi La Forge video is 16 mins dammit watch till end
well he must have learned 9 hours worth then xD
Sorry about that error. I have all the Umlet files available for download on this page newthinktank. com/videos/uml-video-tutorial/
On occasion I make typos. I'm glad you liked the video regardless :)
You could do voice acting. You have a great voice for this type of thing.
+shootingblueyes Thank you for the nice compliment :)
You're very welcome :) An Association occurs when a class contains a reference to another class "Has a". An Aggregation and a Composition are both Associations, but are more complex Associations. An Aggregation occurs when a class contains another class and the contained class can exist without the container class. A Composition ("Part of") also has a class that contains another. The only difference is that the contained can't exist without the container. I hope that helps
thanks derek, i remember watching these at uni, but i come back again every couple years to watch when i need to use uml at work
The presentation software I use is called keynote
11:40 points from Dog to Animal (Dog -> Animal), meanwhile 14:20 points from Animal to Dog (Animal -> Dog). This is misguiding.
In the latter the arrow should also point towards animal: Dog -> Animal.
That is really up to you and your team. In the real world i normally always used simple class diagrams and verbose sequence diagrams and never had any trouble. Normally new programmers either create overly complex UML diagrams or don't understand them at all. You will normally be at the mercy of the systems architect were you are hired. i hope that helps :)
The association arrows are almost always pointed at the containing object. I cover that later in this series because as you pointed out I should have done it that way. A Composition Association (Filled Diamond) is one in which if the container is destroyed so is the contained object. Aggregations (Empty Diamond) is one in which if the container is destroyed the contained lives on. Composition - "Part of" Aggregation - "Owns a"
I have seen that presented in both ways. In the real world unlike in books there are very few iron class rules. I for example always preferred to ignore most all diagrams except for sequence diagrams which I made very detailed. I never had a boss tell me what I was doing was wrong. As an architect at the time, all of the programmers under me loved working with me.
Thank you very much :) I'm extremely happy to be able to help people all over the world. Your nice comment is very much appreciated!
Thank you :) Yes I get tongue tied every once in a while because non of this stuff is scripted. Sorry about that
This tutorial covers the UML 2.0 specification exactly. I do however know what you are referring to. Also, most people don't use the exact spec all of the time in the real world. As you'll see when you get to sequence diagrams I don't either :)
Thanks for taking time to put these lessons together. It sure is nice hearing a coherent and native English-speaking instructor, as opposed to an unintelligible thick Indian accent.
With both an Aggregation and a Composition, a class (I'll call it Dog) contains another class object (One is Bark and the other is FavoriteFood).
With an Aggregation, since FavoriteFood could be used by other potential Animal objects (Non Dog Objects) then if the Dog object is destroyed FavoriteFood could continue to exist.
With a Composition, Bark couldn't exist or would have no meaning without the Dog object (Assuming that no other Animals bark) Does that help?
All architects work differently. I personally use sequence diagrams that are heavily commented. I also write very detailed usage descriptions. I make class diagrams, but I don't dwell on them. In the real world I do all of this stuff with paper and pencil. In groups I always work on a whiteboard
Thank you very much for the compliment :) I think because I aim to satisfy people that enjoy fast videos that I stand apart from many of the other tutorial people. I'm very happy that you enjoy them. Yes, I have over 500 videos on my RUclips channel. Some of the old ones are terrible, but I do my best to always improve.
My undergrad is Computer Science and I have studied UML 8 years ago. As a PhD student I couldn't find a better refreshing tutorial than yours. good job.
can you please post your slides so we can take notes on it. That would be great
keep it up
Basically you need to create a use case description that goes over everything in exact detail. Then break everything into objects. Students, admins, email, everything becomes an object if it is an object in the real world. Then translate the use case description into a sequence diagram. You have the objects and the interactions, so you just have to connect them. My object oriented design tutorial shows you everything step by step. Tell me if you have questions after watching the 1st 2
at 14:00 the generalisation (inheritance) arrow goes in the wrong direction.
Peter Kelley Sorry about that error
I check all my RUclips personal messages. The ATM system I designed isn't much different from what you want to design. Instead of passing emails it passes an ATM transaction. Replace PIN number and valid card number with userid and password. They are almost exactly the same
You are correct. I'm sorry if I didn't make that clear. I think I got a bit tongue tied and I went back and revisited association arrows to correct any misunderstanding in the next few tutorials. Thanks for pointing that out :)
I made a little error there. Sorry about that. Yes you should definitely make videos. There are a ton of requests I get that I just don't have time to cover.
1.)@ 2:10: semantical error: encapsulation is not information hiding. encapsulation is the concept of encapsulating attributes and methods, which are logically dependent, i.e. the methods operate on the attributes.
www.javaworld.com/article/2075271/core-
java/encapsulation-is-not-information-hiding.html
2.)protected elements are also accessible to classes in the same package
thank you :) I didn't know if anyone would like these tutorials, but it is hard to teach oo design and refactoring without uml
At 14:53 the arrow between abstract class and inheritance class points to the wrong direction or am I wrong?
No you are right, it seems like it's the opposite ( it's wrong )
If only everyone had a teacher like you. If only.
Thanks to the RUclips creators for giving people like you an opportunity to teach countless people like me who haven't had a good teacher, and most importantly, thank you!
Thank you for the nice compliment :) I'm very happy to be of help.
Thank you for these. I am finding myself thrown into a OOA&D class with no real previous knowledge and you are thorough and do not skip "obvious" stuff like other videos do. Obvious comes with experience and these are perfect for me as a beginnger.
Thank you :) Happy I could help
Thank you :) I do my best to put as much information into each video as possible.
I remember going through your java tutorials over 10-15 years ago as a teen... now I'm a plumber who makes video games at a high level in their spare time lol
I'm sorry, but I just started Android tutorials. I'm having a hard time finding the time to get those out quickly. I promise to cover Obj C as soon as possible. May God bless you as well :)
I'm glad you found it useful. You're very welcome :)
Thank you :) I do my best to make everything understandable. I have one more video on the syntax of UML and then I'll get into using them in real world applications
Diagram at 14:30 says that Animal extends Dog
I believe that you wanted to put it diffeently.
And some slide before you put abstract class Animal below Dog.
It was correct notation, but I believe it's more readable if abstracts are above inherited classes
The system is all the objects combined. Break everything down into their smallest parts. If it is an object in the real world then make it an object in your use case. Watch my examples and you'll get it. I provide both fast and slow examples
I have no words to describe how you change my life with your videos!
Thank you for all your tutorials..I'm not English-Speaker but your explanations are so clear that i understand quickly!
You put me in a total stupor with your Dog and Breen diagram. Composition relationship is drawn with a solid diamond. Just put an annotation at that point and yup, hammered down, everything will be fine. Other than that, good job!
Thank you :) - is private, # is protected, + is public
You're very welcome :) Thank you for taking the time to tell me the videos have helped
The best explanation ever.. Your articulation of voice is amazing and gives more meaning to your words.
Only few people know to talk like this, especially on dry subjects like requirement engineering, process modeling, diagrams etc.
Thank you for the nice compliment :)
I'm sure someone has said this, but the inheritance arrow on abstract classes is backwards from when you introduced them.
Also, why no cheat sheet for this one? I'm printing them all out for my cube but was sad not to find one for class diagrams...
Excellent tutorials by the way. Excellent.
14:06 The arrow is facing the wrong way :)
With interfaces, the arrow is from Animal to Dog (which is wrong), whilst it with Inheritance at 11:23 the arrow is from Dog to Animal (which is right).
(Took me 30 mins to figure out, but hey...)
You actually have aggregation and composition mis-matched. From what I was thought composition has a solid diamond while aggregation doesn't this is a very strange example because it's using both. If you're trying to demonstrate both I think in theory it breaks the composition definition. And the composition is more opinionated. But if the whole dog is destroyed the part breed isn't... What are you getting at here? Kind of bad confusing example. Ambiguity error please use the scope resolution operator :: lol
What are you getting at here? In composition the life cycle of the part class is dependant on the whole class. He is right about the diamonds as well. The part breed is destroyed if it is composition but not if it is aggregation. I like not this comment.
Actually, you're wrong and Kristopher is right.
This greatly increases my understanding of UML. It brings to life the definitions I see in books.
Thank you :) I'm very happy it helped
Don't know if anybody said this already but I think you've got the arrow pointing the other way around on 14:02
Really enjoying your tutorials, btw. Planning on making my own once I feel prepared enough.
It will be so kind of you if you initiate it not too late. As I am into objective c now a days just a beginner. Right now following lectures from stanford university on youtube but I am sure I will understand much more if you will deliver your lectures. May the CREATOR of all mankind bless your service.
Thank you :) I edit the videos with iMovie
Hello Derek
I am taking course On object oriented design from Alberta university (from Canada ) and there is some points are different
1- association is just when object is a parameter to method in other object class and in uml is just line (not doted line as in video)
2- aggregation is different a way from composition in code that aggregation is when u have something like array of the object of other class (and this array may have objects or may null) but in composition the object u use from other class need to be used every time u use this object (that can happen when u declare that object in yr constructor )
Thanks for the input. Yes I messed up the dotted line by accident
@@derekbanas I appreciate so much your reply after 7 years from creating your video
I learnt a lot from yr channel
thanks a lot
Thank you :) I love talking with everyone
Thank you :) You are correct it is omitting it normally means that it doesn't matter
Спасибо. Я делаю лучшее, что я могу. Я рад, что вам нравится видео.
I'll have to take a look. Thanks for pointing that out
Thank you very much for the nice message :) Ill cover obj c and iDevice programming after I cover android. I'll cover it with the same detail I did with java
Derek, on the 'Abstract Class Diagrams' slide, at 14:20, If I am not wrong, the arrow between Animal and Dog classes seems to be pointing in the opposite direction. Please make a correction.
The composite arrow should be filled and the one with aggregation should be left unfilled. Good clip tough!!!
I just want to thank you for this tutorial service you provide. Currently taking an online community college course with no lectures provided and a very bland textbook; this is helping me immensely!
That's great :) I'm happy that I could help
Hi Derek,
It seems a typo.
The arrow should point from class Dog to abstract class Animal. Also it should be a dashed arrow.
Best regards and thanks.
You're a better teacher than my Object Oriented Development lecturer in uni. Thanks a million!
Thank you :) Im using UmLet
Great Vids on the UML series making great use of them. In the first 5secs of this vid you sound like Joe Swanson off family guy.
That's funny :) I'm glad you found them useful.
I've used this kind of diagrams on C# before, still haven't used any on Java, but I would guess they are similar.
My questions is: are class diagrams the only build in (or added with plugin) kind of UML diagrams in the popular programming languages like Java, C# etc.
And where are the other type of diagrams (like the others in this playlist) usually used?
I would guess software architects and "plan makers" in non-IT jobs as well. And also one can do it for himself, with a paper and pencil
Aggregation:
Bee--------Swarm
A Bee CAN exist without a Swarm
Composition:
Swarm-----------◀▶ Bee
A Swarm CAN'T exist without any Bee
Would have been more helpful if you just used an example to tie all these concepts together.
Thank you very much :) Ill see if I can post the whole file so you can open it and output in any format tomorrow
Abstract methods in Abstract classes cannot be private (in C#) . The eg: shown @ 14 : 48 for animal (eat and noise is shown as private.
Thank you :) It is very nice of you to say that
I notice that around 14:43 you mentioned that dog is a subclass of animal and having an arrow head pointing at Dog class. Now when you mentioned at 11:29 that a subclass name Dog is created from the animal superclass and having the arrowhead pointing to the Animal superclass. Other than that I will give a like. Cool stuff !!
Great video, literally got me going for a project at work, but your soothing voice almost put me asleep here at work too!
Thank you :) Sorry for making you tired
You're very welcome :)
You're very welcome :) I show on this picture what most of the arrows mean. newthinktank. com/wp-content/uploads/2012/12/UML-Domain-Model. png
I hope that helps clear anything up
Joe Swanson is on duty to serve :)
Thanks for your short and precise videos. I was mainly watching on design patterns, now i found the UML videos very interesting as well.
I have one comment, which i think you mistakenly used opposite side of the arrow for the concrete class inherited from Abstract class at time 14:20 . Or correct me if am mistaken too. Well done !
habesha63 You're very welcome :) You are correct that subclasses normally point at the super class. Sorry about that
What do you do if there is both a dependency and an association between two classes? Show both dependency and an association? or just the association since that is the 'stronger' one?
you say in the video that composition is the open diamond and aggregation is the filled in diamond, and I have been taught the other way around..?
I'm sure u get this alot from people, but you are just simply the best. Do you have videos on other languages too.? just incase i might need them in future. Thanks again. your videos are great .:-)
Hi Derek, I just wanted to thank you! I have really been struggling with some of the concepts of OOAD and your videos are really helping. Thanks
I have a question that pertains to other class diagram relationships, but I will just reference the Inheritance relationship. In your example, you depicted the Dog and Animal classes by putting the subclass ABOVE the superclass. I have no idea, so I am asking... Is that the standard way of depicting this relationship? My own logic processes, which may be wrong, have thought of the most generic class at the top, followed by more and more specific versions (i.e. subclasses) below. Is that wrong?
Derek Banas hi derek at 11:21 i think that "-name:String" should not be written in child class because it is marked as private in parent class indicated by "-" symbol...I would like to know your opinion on this..thanks and keep up the great work :-)
Your video has cleared much of the concepts I was fearing of. However I anticipate that would be a great service from you and help if you upload objective c programming tutorials. I love your voice pitch and clarity you use to simplify things. If possible plz bring your lectures in detail about OBJECTIVE C programming step by step.
so what is the answer? also when u were explaining aggregation u had d unshaded diamond not at the whole(dog) but at the part(breed). you had the shaded diamond at the right place according to the text(sommerville). So, u need to clear up where the unshaded one should rlly be as, according to the text book, it's drawn at d wrong class.
Great Videos!! Very Helpful and well structured.
But, next time you make a playlist, could you number the videos (it helps to find the following video if you are watching it outside the playlist)??
Thanks for all your efforts!!!
I believe you have aggregation defined wrong. aggregation is the process in which you inherit class using a instance not inheritance, I believe it to be so.
You're welcome :)
Am I correct in thinking that at 11:30, the attribute '- name' is private, therefore is not inherited by the 'Dog' subclass?
+Richard Dunn Exactly, only public and protected properties are inherited
In my tutorial JAVA VIDEO TUTORIAL 53 I show you how to rotate polygons which include every shape :) I hope that helps
Sorry, but I don't have them
Could you briefly explain in a basic way a bi-directional (standard) association ? a code example would be much appreciated.
Thanks in advance.
@14:00 The arrow should be in reverse. Dog should point to Animal. At work in the first week I made over and over this mistake to point a base class to a inherited one when software concepts were presented (this is natural human thinking) this is why mistakes appear. Finally I was able to correct that thinking as upper class derives the base class.
Sorry about the typo
fantastic classes. man you are gifted to teach. congrats. one advice, put the number of lecture in the title. I`m just going back and forth to see which one is the next lecture. other than that.. man I wish I had you as my teacher.
Thank you for the nice compliment :) I'll see what I can do about the titles
Hey Derek, cool video. However I was wondering numOfDogs(6.17) is static and private as well. Shouldn't it be public.
Thank you very much :) I do my best
Hello Derek, this is one good example of abstraction. 1) using java class codereview.stackexchange.com/questions/83387/building-data-abstraction-for-line-segments-using-type-abstraction
2) using python function objects
codereview.stackexchange.com/questions/83626/building-data-abstraction-and-adt-for-rectangle-using-objects
Sorry I made a little error.
I cannot still understand the difference between composition and aggregation.. is there any specific video to explain the differences?
Hello Derek,
Its an excellent video. In the Abstract class and Interface diagrams, the methods are shown with hyphen ((-) negative symbol). Should it not be plus (+) symbol ? -- Sridhar
Shouldn't the visibility modes of the methods in the 'Animal' class in ABSTRACT CLASS DIAGRAMS be declared protected (#) or public (+) for the subclass 'Dog' to inherit them?
Thank you Derek for another great tutorial. But i don't get when to use an association. For example in java, i have class dependency between A and B when class A has a method with type B as argument in one method. Composition is used when one class has an attribute which is of type of another class, thats clear as well. But when do i figure out if i have an association if i look at some java code?
Best regards