1 00:00:00,420 --> 00:00:02,740 OK I like the way this class diagram is 2 00:00:02,740 --> 00:00:05,850 coming along. So at this point I think we 3 00:00:05,850 --> 00:00:08,300 have all the classes that we need. For each 4 00:00:08,300 --> 00:00:12,250 class we specified the attributes or the characteristics of the 5 00:00:12,250 --> 00:00:15,150 class. And we also specified the operations so we 6 00:00:15,150 --> 00:00:18,710 know what the class can do And, I like to 7 00:00:18,710 --> 00:00:22,110 kind of move forward on this, but I first 8 00:00:22,110 --> 00:00:25,690 want to see that you're fine with the class structure. 9 00:00:25,690 --> 00:00:27,500 So that's the way the class structure is going 10 00:00:27,500 --> 00:00:29,880 to be in terms of attributes and operations. So anything 11 00:00:29,880 --> 00:00:34,910 that bothers you? Well, one thing I didn't understand 12 00:00:34,910 --> 00:00:38,090 is how come you put check out over where 13 00:00:38,090 --> 00:00:40,350 the patron when it's really the item being checked 14 00:00:40,350 --> 00:00:46,280 out? Right. Okay. So that actually is you know, is a perfect 15 00:00:46,280 --> 00:00:48,030 segway for the next thing that really wanted 16 00:00:48,030 --> 00:00:50,780 to model. Because what you're talking about is basically a 17 00:00:50,780 --> 00:00:54,100 relationship between two classes which is something we haven't touched on 18 00:00:54,100 --> 00:00:57,582 yet. So we haven't, haven't looked at individual classes. But now, it 19 00:00:57,582 --> 00:01:00,720 is typical, now we are looking more at requirements, we're starting to 20 00:01:00,720 --> 00:01:04,800 find more things about our system, and what you're pointed out right 21 00:01:04,800 --> 00:01:08,370 now is the fact that patron and item are somehow related. So 22 00:01:08,370 --> 00:01:11,020 this checkout operation is not really something that belongs only on in 23 00:01:11,020 --> 00:01:13,660 the patron, because it needs to know about the item. And it 24 00:01:13,660 --> 00:01:15,790 doesn't belong only on the item because it needs to know about 25 00:01:15,790 --> 00:01:19,640 the patron. So, it's something that associates the patron and 26 00:01:19,640 --> 00:01:22,600 the item. Okay. And that's exactly the way we call 27 00:01:22,600 --> 00:01:24,630 in the UML which is the notation that we're using 28 00:01:24,630 --> 00:01:29,060 here this kind of relationship. So, we're going to represent that 29 00:01:29,060 --> 00:01:32,820 by drawing a line between these two classes that tells 30 00:01:32,820 --> 00:01:35,220 us there is an association. And we're also going to 31 00:01:35,220 --> 00:01:37,890 give a name to this. Since this refers to the 32 00:01:37,890 --> 00:01:40,280 fact of checking out items. We're just going to call 33 00:01:40,280 --> 00:01:43,794 it, checkout. Gotcha. And notice that this basically you 34 00:01:43,794 --> 00:01:48,500 know,eventually will end up kind of replacing this attribute. Because 35 00:01:48,500 --> 00:01:51,780 the existence of this association will tell us that 36 00:01:51,780 --> 00:01:53,932 this is checked out. We're, we're not going to, you know, 37 00:01:53,932 --> 00:01:55,428 do it right now, but in the final cleanup 38 00:01:55,428 --> 00:01:58,750 or the diagram, this name will disappear. Okay. Okay. 39 00:01:58,750 --> 00:02:02,190 And so since we started talking about relationships and 40 00:02:02,190 --> 00:02:05,280 associations, is there any other kind of relationship that you 41 00:02:05,280 --> 00:02:08,805 see here? Well, what you just did with checked 42 00:02:08,805 --> 00:02:12,009 out is, it seems similar to the whole issue 43 00:02:12,009 --> 00:02:16,090 of requests. It is, it is. So a request 44 00:02:16,090 --> 00:02:19,580 is something else that happens in both, you know, in 45 00:02:19,580 --> 00:02:22,090 the patron and in the item, it involves both. 46 00:02:22,090 --> 00:02:24,070 And in fact in a request, I would definitely 47 00:02:24,070 --> 00:02:26,950 represent this as an additional association. So I will 48 00:02:26,950 --> 00:02:30,730 just draw an another line between these two that represent 49 00:02:30,730 --> 00:02:33,804 that specific kind of relationship and I will call it 50 00:02:33,804 --> 00:02:37,330 request. So that indicates that this association refers to a 51 00:02:37,330 --> 00:02:41,660 request that also connects the patron with an item. Okay. 52 00:02:41,660 --> 00:02:45,710 And, let's see. Any, anything else that jumps at you? 53 00:02:45,710 --> 00:02:47,590 Yeah, well, how about all these ones down at the 54 00:02:47,590 --> 00:02:50,080 bottom? I mean book and item's got to be 55 00:02:50,080 --> 00:02:52,920 related, right? A book is a kind of item, And 56 00:02:52,920 --> 00:02:55,860 audiovisual... are there associations between them? Can you repeat 57 00:02:55,860 --> 00:02:58,790 that, you said that the book, yeah? Is 58 00:02:58,790 --> 00:03:02,550 a kind of item. Perfect, that's exactly what we're 59 00:03:02,550 --> 00:03:04,700 modeling next, which is, this, what we call the 60 00:03:04,700 --> 00:03:07,900 is-a relationship. So you said, a book is an item? 61 00:03:07,900 --> 00:03:13,346 A book is an item. And, we can model that in the diagram. So, we do that 62 00:03:13,346 --> 00:03:17,409 using another kind of relationship between the classes. So 63 00:03:17,409 --> 00:03:21,210 we're going to represent that as a specialization we call it. 64 00:03:21,210 --> 00:03:24,890 And, a specialization is indicated in this way. Okay? 65 00:03:24,890 --> 00:03:27,410 With this arrow at the end, so a solid 66 00:03:27,410 --> 00:03:30,800 with this kind of arrow at the end. And 67 00:03:30,800 --> 00:03:34,160 we can do the same for book, magazine, reference book 68 00:03:34,160 --> 00:03:36,200 and audiovisual material. So we're all going to connect, 69 00:03:36,200 --> 00:03:37,950 we're going to connect all of them, to the 70 00:03:37,950 --> 00:03:43,190 item, using the same kind of connection. And now 71 00:03:43,190 --> 00:03:47,200 that we have connected all these four, with item 72 00:03:47,200 --> 00:03:50,620 and indicated them in subclasses. That's something else that we can 73 00:03:50,620 --> 00:03:54,370 do. So we can make this kind of cleaner. And I'll 74 00:03:54,370 --> 00:03:56,360 tell you what I mean by that. So now we have 75 00:03:56,360 --> 00:04:00,190 this loanable attribute that refers to item, but it seems to 76 00:04:00,190 --> 00:04:03,100 me from what you were saying before, that loanable is not 77 00:04:03,100 --> 00:04:05,490 really an attribute of an item. Right? It's more of a 78 00:04:05,490 --> 00:04:09,240 characteristic of the type of item. Right. Is that right? Right. 79 00:04:09,240 --> 00:04:13,120 Books, and audio/visual are loanable but the others aren't. 80 00:04:13,120 --> 00:04:16,450 Okay, and so representing it here, it's okay to, 81 00:04:16,450 --> 00:04:20,579 it will work. But it's not really right so from 82 00:04:20,579 --> 00:04:23,590 the style standpoint it doesn't really you know, 83 00:04:23,590 --> 00:04:26,100 it's not the best way of modeling this. What we're going to 84 00:04:26,100 --> 00:04:30,130 do instead, we're going to use this specialization relationship to make 85 00:04:30,130 --> 00:04:33,000 that more explicit. To make it cleaner. Okay, so what 86 00:04:33,000 --> 00:04:35,300 I'm doing here is I'm going to take this hierarchy 87 00:04:35,300 --> 00:04:38,130 of classes, this is just on two levels now, and I'm 88 00:04:38,130 --> 00:04:40,380 going to kind of make it a little richer. 89 00:04:40,380 --> 00:04:43,470 So I'm going to add an intermediate set of 90 00:04:43,470 --> 00:04:45,756 classes. And in particular I'm going to have these two 91 00:04:45,756 --> 00:04:48,306 classes that I'm going to call non loanable item and loanable 92 00:04:48,306 --> 00:04:51,790 item. So, they're both items but they tell me 93 00:04:51,790 --> 00:04:55,490 clearly that some items are loanable and some items 94 00:04:55,490 --> 00:04:59,392 are not. Okay. Okay. And then I'm simply going to 95 00:04:59,392 --> 00:05:03,192 put book and audio video material as subclasses of loanable 96 00:05:03,192 --> 00:05:07,980 item and reference book and magazine as subclasses of non-loanable 97 00:05:07,980 --> 00:05:10,510 item. So, if we look at this diagram now it's 98 00:05:10,510 --> 00:05:13,650 pretty clear what is loanable and what is not. And 99 00:05:13,650 --> 00:05:16,070 it's actually is a very clean, much cleaner 100 00:05:16,070 --> 00:05:18,980 design. And, and I see you've, gotten rid of 101 00:05:18,980 --> 00:05:21,560 the loanable attribute, too. I did. Because at 102 00:05:21,560 --> 00:05:24,130 this point this is already represented by the fact of 103 00:05:24,130 --> 00:05:28,570 having these two classes. And actually, something else that I did 104 00:05:28,570 --> 00:05:31,820 is that I moved all these attributes, value, 105 00:05:31,820 --> 00:05:34,220 due date, renewed and checked out, that makes 106 00:05:34,220 --> 00:05:37,452 sense only for loanable item. From item to 107 00:05:37,452 --> 00:05:40,450 loanable item. So at this point, this really 108 00:05:40,450 --> 00:05:42,600 is telling me that, you know, these 109 00:05:42,600 --> 00:05:46,410 characteristics are just meaningful for the loanable item, 110 00:05:46,410 --> 00:05:53,800 and not for the other ones. Well, speaking of that, the way that you got the 111 00:05:53,800 --> 00:05:57,270 lines going in the diagram here is you still have 112 00:05:57,270 --> 00:05:59,920 request and checked out going to item, even though you 113 00:05:59,920 --> 00:06:02,610 can't request non loanable Items. You can't check out non 114 00:06:02,610 --> 00:06:05,630 loanable Items. Oh, you were right actually. You got me on 115 00:06:05,630 --> 00:06:10,940 that one. You're exactly right. So this associations are between 116 00:06:10,940 --> 00:06:13,440 the two wrong classes. So, I guess, at this point, 117 00:06:13,440 --> 00:06:16,450 you can probably go and fix the diagram yourself. Well, 118 00:06:16,450 --> 00:06:19,120 can we just make the lines go from patron to loanable 119 00:06:19,120 --> 00:06:21,640 item instead of to item? That's exactly the way in which we 120 00:06:21,640 --> 00:06:25,550 are going to fix it. So, we're going to move these two associations down 121 00:06:25,550 --> 00:06:29,190 here. And at this point, this will represent the right relationships in 122 00:06:29,190 --> 00:06:31,850 the, in the diagram, and in the system. Makes sense to me.