From b2d80610db6beda38573890ed169815e495bc663 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 24 May 2020 16:34:31 +0700 Subject: [usth/ICT2.7] Engineer software --- .../1 - Introduction - lang_en.srt | 88 ++++ .../10 - Debriefing - lang_en.srt | 104 ++++ .../2 - Analyzing Requirements - lang_en.srt | 579 +++++++++++++++++++++ ...- Refining Classes and Attributes - lang_en.srt | 535 +++++++++++++++++++ .../4 - Adding Attributes - lang_en.srt | 352 +++++++++++++ .../5 - Identifying Operations - lang_en.srt | 304 +++++++++++ .../6 - Adding Relationships - lang_en.srt | 488 +++++++++++++++++ .../7 - Refining Relationships - lang_en.srt | 188 +++++++ .../8 - Refining the Class Diagram - lang_en.srt | 328 ++++++++++++ .../9 - Final Considerations - lang_en.srt | 196 +++++++ 10 files changed, 3162 insertions(+) create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt create mode 100644 usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt (limited to 'usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles') diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt new file mode 100644 index 0000000..f6386ed --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt @@ -0,0 +1,88 @@ +1 +00:00:00,430 --> 00:00:05,994 +Hello and welcome to a tale of analysis and design, featuring + +2 +00:00:05,994 --> 00:00:10,809 +Spencer Rugaber, as the librarian, and Alex Orso, + +3 +00:00:10,809 --> 00:00:15,779 +as the software engineer. [SOUND] + +4 +00:00:15,779 --> 00:00:21,520 +>> Hi! I'm here waiting for Spencer, my librarian friend. He needs some + +5 +00:00:21,520 --> 00:00:25,470 +help developing an information system for a library. So I asked him to write + +6 +00:00:25,470 --> 00:00:29,669 +down the requirements for the libra... Oh, [SOUND] that must be him. + +7 +00:00:29,669 --> 00:00:30,850 +>> Hello Alex. + +8 +00:00:30,850 --> 00:00:32,470 +>> Hey Spencer. How's it going? + +9 +00:00:32,470 --> 00:00:34,690 +>> Good. Did you get those requirements I emailed you? + +10 +00:00:34,690 --> 00:00:36,890 +>> Oh, you emailed them. Now let me check. + +11 +00:00:36,890 --> 00:00:38,780 +And, by the way, get some coffee for you here. + +12 +00:00:38,780 --> 00:00:39,880 +>> Thank you very much. + +13 +00:00:41,840 --> 00:00:46,790 +>> Oh yeah. They're right here. Let me see. Oh, good. Oh, yeah, + +14 +00:00:46,790 --> 00:00:50,580 +good. We have, what we need. So the, the way I like to do + +15 +00:00:50,580 --> 00:00:52,500 +this is. I like to start by + +16 +00:00:52,500 --> 00:00:55,430 +looking at the requirements and identifying the nouns + +17 +00:00:55,430 --> 00:00:57,530 +in the requirements, because those tell us + +18 +00:00:57,530 --> 00:01:00,080 +the kind of the relevant elements in the, + +19 +00:01:00,080 --> 00:01:03,360 +in the requirements. So if you don't mind we can start looking at those and + +20 +00:01:03,360 --> 00:01:07,070 +you can tell me you know, whether the ones that I am identifying make sense or not. + +21 +00:01:07,070 --> 00:01:07,920 +>> Sounds good. + +22 +00:01:07,920 --> 00:01:08,500 +>> All right. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt new file mode 100644 index 0000000..cc76d09 --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt @@ -0,0 +1,104 @@ +1 +00:00:00,210 --> 00:00:02,200 +>> So Spencer, now that we went through + +2 +00:00:02,200 --> 00:00:05,340 +this process and, I'd just like to hear + +3 +00:00:05,340 --> 00:00:07,090 +whether you enjoyed it, whether you think it + +4 +00:00:07,090 --> 00:00:09,640 +was useful. What are your thoughts? + +5 +00:00:09,640 --> 00:00:11,661 +>> Well, ti was very interesting. I not only + +6 +00:00:11,661 --> 00:00:16,541 +learned something about computers and about how you design information systems + +7 +00:00:16,541 --> 00:00:19,713 +in UML, but I, it was interesting. I also learned something + +8 +00:00:19,713 --> 00:00:25,290 +interesting about the library. And things that, that I knew but + +9 +00:00:25,290 --> 00:00:27,920 +I never really, explicitly written down. + +10 +00:00:27,920 --> 00:00:28,099 +>> Uh-huh. + +11 +00:00:28,099 --> 00:00:32,280 +>> Came up during the course of doing this. And I think I now + +12 +00:00:32,280 --> 00:00:35,800 +much better understand what this information system that you're + +13 +00:00:35,800 --> 00:00:38,590 +going to build for us, is really all about. + +14 +00:00:38,590 --> 00:00:40,480 +>> Okay, well, I mean, I'm very happy that you say + +15 +00:00:40,480 --> 00:00:43,040 +that, because I really believe that, you know, doing this kind + +16 +00:00:43,040 --> 00:00:46,870 +of analysis and design exercises really helps you figuring out whether + +17 +00:00:46,870 --> 00:00:50,480 +there's any issues with the requirements. So for example, you can find + +18 +00:00:50,480 --> 00:00:53,580 +out whether there's any missing information, or maybe conflicting + +19 +00:00:53,580 --> 00:00:56,820 +information. And I think that's exactly what happened today. + +20 +00:00:56,820 --> 00:01:01,120 +So I'm very glad to hear that it worked for you. That you enjoyed it. I hope you + +21 +00:01:01,120 --> 00:01:03,690 +enjoyed it as well. And I strongly encourage you + +22 +00:01:03,690 --> 00:01:06,000 +to do this kind of exercises for different kinds + +23 +00:01:06,000 --> 00:01:08,630 +of systems. So as you can become more familiar + +24 +00:01:08,630 --> 00:01:12,410 +with analysis and design techniques. So, any final thoughts? + +25 +00:01:12,410 --> 00:01:15,440 +>> I look forward to receiving your delivered software. + +26 +00:01:15,440 --> 00:01:16,440 +>> All right. Will do. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt new file mode 100644 index 0000000..909fb2d --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt @@ -0,0 +1,579 @@ +1 +00:00:00,220 --> 00:00:04,900 +Okay so let me start underlining these nouns, and I'll start + +2 +00:00:04,900 --> 00:00:07,810 +identifying the ones that are relevant, and I'll ask you some + +3 +00:00:07,810 --> 00:00:10,550 +questions or you can ask me questions if + +4 +00:00:10,550 --> 00:00:14,666 +you see something that doesn't make sense to you. Good enough. + +5 +00:00:14,666 --> 00:00:17,650 +>> okay, let's see, patron. It seems to + +6 +00:00:17,650 --> 00:00:19,670 +me that patron is definitely an important entity. + +7 +00:00:19,670 --> 00:00:20,808 +>> That's, that's what its all about. + +8 +00:00:20,808 --> 00:00:23,270 +>> Okay, all right, so actually, the way + +9 +00:00:23,270 --> 00:00:25,750 +I'm going to do this, I'm going to take all these relevant + +10 +00:00:25,750 --> 00:00:28,610 +entities and I'm going to start putting them into what I call a class + +11 +00:00:28,610 --> 00:00:32,450 +diagram. So you don't really need to know what that is exactly, but imagine + +12 +00:00:32,450 --> 00:00:37,150 +this being a, a diagram in which I'm drawing, I represent in all development + +13 +00:00:37,150 --> 00:00:42,260 +items as rectangles with a given name and, and then later on some attributes. + +14 +00:00:42,260 --> 00:00:42,660 +>> Okay. + +15 +00:00:42,660 --> 00:00:44,055 +>> Okay, and I'm, I'm just going to put + +16 +00:00:44,055 --> 00:00:45,600 +them there. So I'm going to start with patron. + +17 +00:00:45,600 --> 00:00:48,420 +I'm going to create one class for the + +18 +00:00:48,420 --> 00:00:50,250 +patron. I'm going to give it the name patron. + +19 +00:00:51,380 --> 00:00:54,120 +And by the way, assuming that you'd probably figure out, it's important that we + +20 +00:00:54,120 --> 00:00:57,430 +represent, we use the right names so that it's clear when we're looking at + +21 +00:00:57,430 --> 00:01:00,790 +the class diagram what we're referring to, so I'll just use the, the nouns + +22 +00:01:00,790 --> 00:01:06,520 +themselves as names. Okay, library card seems to be also a relevant element. + +23 +00:01:06,520 --> 00:01:08,072 +>> Every patron has a library card. + +24 +00:01:08,072 --> 00:01:09,530 +>> All right, perfect, so we'll just + +25 +00:01:09,530 --> 00:01:12,880 +create a library card here. And let's see. + +26 +00:01:12,880 --> 00:01:16,530 +As, as long as they're in the system. And I saw that there's a system + +27 +00:01:16,530 --> 00:01:19,000 +here, this concept of system, this concept + +28 +00:01:19,000 --> 00:01:22,076 +of library. And based on my experience, normally, + +29 +00:01:22,076 --> 00:01:26,574 +those are kind of in an overarching themes. So this is really what we are + +30 +00:01:26,574 --> 00:01:28,597 +modeling. So the only + +31 +00:01:28,597 --> 00:01:30,297 +thing that will make a difference is + +32 +00:01:30,297 --> 00:01:34,120 +if there were more than one library or more than one system. Is that the case? + +33 +00:01:34,120 --> 00:01:36,740 +>> We just want one system for our one library + +34 +00:01:36,740 --> 00:01:38,770 +>> Okay so, in this case I won't even represent + +35 +00:01:38,770 --> 00:01:41,540 +those because basically what I'm representing is the system and + +36 +00:01:41,540 --> 00:01:41,990 +the library. + +37 +00:01:41,990 --> 00:01:42,740 +>> I understand, I understand. + +38 +00:01:42,740 --> 00:01:44,420 + +39 +00:01:44,420 --> 00:01:48,350 +Okay and then, oh name, address and phone + +40 +00:01:48,350 --> 00:01:51,510 +number are interesting because these are important entities, + +41 +00:01:51,510 --> 00:01:53,180 +but this seems like, you know, they're not + +42 +00:01:53,180 --> 00:01:56,550 +entities in themselves, so they're more attributes + +43 +00:01:56,550 --> 00:01:58,070 +of something else. I would imagine that + +44 +00:01:58,070 --> 00:02:00,080 +this is the way you identify, or these + +45 +00:02:00,080 --> 00:02:01,860 +are elements that are important for the patron? + +46 +00:02:01,860 --> 00:02:04,880 +>> That's what we take down when we issue the cards. + +47 +00:02:04,880 --> 00:02:06,800 +>> Okay. Perfect. So, I'm going to + +48 +00:02:06,800 --> 00:02:09,710 +take those and make those attributes of the patron, which means + +49 +00:02:09,710 --> 00:02:12,350 +that I'm going to take the class that I created before, and I'm + +50 +00:02:12,350 --> 00:02:16,430 +just going to write them down here so that they're represented and, + +51 +00:02:16,430 --> 00:02:19,360 +and we know that these are kind of what characterizes the patron. + +52 +00:02:19,360 --> 00:02:20,070 +>> Gotcha. + +53 +00:02:20,070 --> 00:02:25,540 +>> Okay? And then, I guess similar consideration for the library + +54 +00:02:25,540 --> 00:02:28,750 +card number. So this is to be associated with the library card? + +55 +00:02:28,750 --> 00:02:29,902 +>> It's printed right on it. + +56 +00:02:29,902 --> 00:02:32,180 +>> All right, so we'll put this as + +57 +00:02:32,180 --> 00:02:38,130 +an attribute of the library card, then. And then, in addition, at any particular point + +58 +00:02:38,130 --> 00:02:43,630 +in time. Okay, so time seems to be a relevant entity right, + +59 +00:02:43,630 --> 00:02:47,880 +because time seems to occur several times in this description. For example, I + +60 +00:02:47,880 --> 00:02:53,940 +think you guys keep track of how long a book has been loaned, right? + +61 +00:02:53,940 --> 00:02:54,300 +>> Right. + +62 +00:02:54,300 --> 00:02:57,270 +>> And there's some time associated also here. + +63 +00:02:57,270 --> 00:02:58,380 +>> And a children's age. + +64 +00:02:58,380 --> 00:02:59,760 +>> Oh yeah. The children's age here that + +65 +00:02:59,760 --> 00:03:02,200 +I didn't see before. Yeah. So, what + +66 +00:03:02,200 --> 00:03:03,800 +I'm going to do, I'm going to represent this in + +67 +00:03:03,800 --> 00:03:05,520 +a sort of generic way, as a date. + +68 +00:03:05,520 --> 00:03:06,520 +>> Okay. + +69 +00:03:06,520 --> 00:03:08,380 +>> These are kind of, kind of classes, utility + +70 +00:03:08,380 --> 00:03:10,880 +classes we call them, that are normally in every system. + +71 +00:03:10,880 --> 00:03:10,970 +>> Okay. + +72 +00:03:10,970 --> 00:03:13,060 +>> So I'm just going to put it down here + +73 +00:03:13,060 --> 00:03:14,940 +as a utility class that will be used + +74 +00:03:14,940 --> 00:03:18,780 +by different elements in the diagram. Okay, so + +75 +00:03:18,780 --> 00:03:23,070 +I want to calculate the items. So the items also + +76 +00:03:23,070 --> 00:03:25,230 +I mean I for what I know about libraries they + +77 +00:03:25,230 --> 00:03:28,490 +seem to be pretty relevant elements, right? So these are all + +78 +00:03:28,490 --> 00:03:31,305 +>> This is what we check out, this is what we're for. + +79 +00:03:31,305 --> 00:03:34,459 +>> Okay, so then items definitely will become a + +80 +00:03:34,459 --> 00:03:37,349 +class, and then we have a due. Oh there's also + +81 +00:03:37,349 --> 00:03:39,730 +this concept of fines. I guess that seems to be + +82 +00:03:39,730 --> 00:03:42,330 +important. Right? You guys give fines to people who are late. + +83 +00:03:42,330 --> 00:03:42,700 +>> Right, right. + +84 +00:03:42,700 --> 00:03:49,160 +>> Right, collect fines and so on. So we create a fine class down here and + +85 +00:03:49,160 --> 00:03:54,150 +the children. So children are special customers, right? It's + +86 +00:03:55,240 --> 00:03:56,890 +their age makes a difference? Is that the way it works? + +87 +00:03:56,890 --> 00:03:58,950 +>> Right. They, they can only check out a few books. + +88 +00:03:58,950 --> 00:04:01,410 +>> Okay. So I'll create them a special + +89 +00:04:01,410 --> 00:04:03,170 +kind of case, a special kind of customer so + +90 +00:04:03,170 --> 00:04:06,000 +I just create here a class for children. And + +91 +00:04:06,000 --> 00:04:08,682 +I can see that they're categorized by their age. + +92 +00:04:08,682 --> 00:04:09,340 +>> Right. + +93 +00:04:09,340 --> 00:04:13,160 +>> So I'll just put the age here as an attribute of the child. + +94 +00:04:14,220 --> 00:04:15,712 +And, okay, so the next one is + +95 +00:04:15,712 --> 00:04:19,653 +restriction. And restriction is kind of tricky because just + +96 +00:04:19,653 --> 00:04:22,010 +to be sort of a general concept. I mean, + +97 +00:04:22,010 --> 00:04:24,915 +in a sense, all of those are restrictions, right? + +98 +00:04:24,915 --> 00:04:28,250 +>> Right, this is just another one of these requirements. + +99 +00:04:28,250 --> 00:04:31,180 +>> Oh, okay, so, so we don't need to represent it explicitly, right? + +100 +00:04:31,180 --> 00:04:31,430 +>> Right, right. + +101 +00:04:31,430 --> 00:04:34,390 +>> It's just telling us how the children, yeah, okay, right; this is + +102 +00:04:34,390 --> 00:04:39,151 +just another requirement, so I just won't consider that for now. And oh, + +103 +00:04:39,151 --> 00:04:43,444 +I see that these books and audio video materials, I guess these + +104 +00:04:43,444 --> 00:04:48,902 +are things that the patrons can check out, right? + +105 +00:04:48,902 --> 00:04:50,725 +>> Those are some of the items, right. + +106 +00:04:50,725 --> 00:04:53,770 +>> There are two + +107 +00:04:53,770 --> 00:04:56,380 +more down here, right? Reference books and magazines? + +108 +00:04:56,380 --> 00:04:57,990 +>> But, they can't be checked + +109 +00:04:57,990 --> 00:04:59,270 +out, but they're definitely in the library. + +110 +00:04:59,270 --> 00:05:01,338 +>> Okay, so then I'm going to represent all of those + +111 +00:05:01,338 --> 00:05:04,180 +actually, now. So, I'm going to have books, I'm going to have audio + +112 +00:05:04,180 --> 00:05:07,990 +video materials, reference books, and magazines. And + +113 +00:05:07,990 --> 00:05:12,150 +I'm just going to have those as classes. Then, + +114 +00:05:12,150 --> 00:05:14,060 +okay here we have week, and we + +115 +00:05:14,060 --> 00:05:16,630 +already represented this general concept of time, so + +116 +00:05:16,630 --> 00:05:23,270 +week will be represented by the date class as well. And oh, I see best sellers. + +117 +00:05:23,270 --> 00:05:27,520 +So best sellers are also, I guess, items that can be checked out, right? + +118 +00:05:27,520 --> 00:05:28,150 +>> Right. + +119 +00:05:28,150 --> 00:05:29,330 +>> Okay, so I'll + +120 +00:05:29,330 --> 00:05:32,900 +just represent those as a class as well and an additional item that + +121 +00:05:32,900 --> 00:05:38,480 +is relevant for the library. And the limit, this is also a time limit, right? + +122 +00:05:38,480 --> 00:05:39,150 +>> Right. + +123 +00:05:39,150 --> 00:05:41,500 +>> So it can also be represented with a, with a class. + +124 +00:05:43,860 --> 00:05:47,380 +Oh, here we have cents, and for cents, same consideration that made + +125 +00:05:47,380 --> 00:05:50,430 +for time. This is kind of the money, is a general concept + +126 +00:05:50,430 --> 00:05:54,240 +that in all currency, many, in many IT systems. So, I'm, I'm + +127 +00:05:54,240 --> 00:05:57,430 +going to just have a money class here, which is another utility class. + +128 +00:05:57,430 --> 00:05:57,740 +>> Okay + +129 +00:05:57,740 --> 00:06:04,000 +>> Okay, and, oh, here I have value, so value is a property. + +130 +00:06:04,000 --> 00:06:09,320 +Let me look again at the requirement. Oh, it's the value of the item. So value + +131 +00:06:09,320 --> 00:06:11,450 +I'm going to put in the item as an attribute. Okay? + +132 +00:06:11,450 --> 00:06:13,120 +>> Okay. That's how much it cost us. + +133 +00:06:13,120 --> 00:06:14,090 +>> Okay. Perfect. + +134 +00:06:14,090 --> 00:06:18,400 +>> Seems like we got them all. Right? Anything I forgot? + +135 +00:06:18,400 --> 00:06:19,640 +>> That looks like it. + +136 +00:06:19,640 --> 00:06:22,580 +>> Okay, so this one, what I'd like to do. We have a kind of + +137 +00:06:22,580 --> 00:06:26,890 +a first take, first cut at the class diagram. I'd like to kind of + +138 +00:06:26,890 --> 00:06:31,480 +move to that and go through the different classes with you. And I'll ask + +139 +00:06:31,480 --> 00:06:33,440 +you some questions again. And you can + +140 +00:06:33,440 --> 00:06:34,510 +tell me whether there is something that + +141 +00:06:34,510 --> 00:06:36,894 +jumps at you that's not right. And + +142 +00:06:36,894 --> 00:06:38,930 +then we're going to try to refine that. + +143 +00:06:38,930 --> 00:06:39,180 +>> Okay + +144 +00:06:39,180 --> 00:06:39,510 +>> Okay. + +145 +00:06:39,510 --> 00:06:39,800 +>> Sounds good. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt new file mode 100644 index 0000000..271c2fd --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt @@ -0,0 +1,535 @@ +1 +00:00:00,880 --> 00:00:03,920 +Okay, so this is our first, class diagram. + +2 +00:00:03,920 --> 00:00:06,260 +>> So, let me ask you something about. + +3 +00:00:06,260 --> 00:00:06,520 +>> Okay. + +4 +00:00:06,520 --> 00:00:08,930 +>> What we've done so far. I also sent, in what + +5 +00:00:08,930 --> 00:00:14,490 +I sent you, I also had some stories about how the actual + +6 +00:00:14,490 --> 00:00:16,400 +>> Library is used. You asked me to do + +7 +00:00:16,400 --> 00:00:18,950 +that and are we going to take, use that here? + +8 +00:00:20,160 --> 00:00:23,300 +>> Glad you asked actually. yeah. Those are, you know, what we call use + +9 +00:00:23,300 --> 00:00:25,940 +cases, or what we will use as scenarios kind of things that we will + +10 +00:00:25,940 --> 00:00:28,340 +use to derive use cases. And they're also a very good + +11 +00:00:28,340 --> 00:00:31,450 +way of extracting requirements. We're not going to look at them right + +12 +00:00:31,450 --> 00:00:33,890 +now because now, because we're more working on kind of the static + +13 +00:00:33,890 --> 00:00:37,860 +structure of the system. But after we're done with the class diagram, + +14 +00:00:37,860 --> 00:00:40,700 +you know, we will do it at a different time. But + +15 +00:00:40,700 --> 00:00:43,410 +we're going to use those to see how the + +16 +00:00:43,410 --> 00:00:45,850 +libraries actually use them, and see whether we can get more + +17 +00:00:45,850 --> 00:00:49,000 +information that we can use to refine our requirements based on that. + +18 +00:00:49,000 --> 00:00:49,770 +>> Okay. + +19 +00:00:49,770 --> 00:00:51,020 +>> Okay, + +20 +00:00:51,020 --> 00:00:52,940 +So, for now, we'll just focus in on the, + +21 +00:00:52,940 --> 00:00:54,630 +structure, but, just so you know, I'm, + +22 +00:00:54,630 --> 00:00:55,870 +I'm glad you sent them, because they were going + +23 +00:00:55,870 --> 00:00:57,380 +very useful as well. + +24 +00:00:59,410 --> 00:01:00,840 +Okay. So let's see. Well, first of all, let + +25 +00:01:00,840 --> 00:01:03,030 +me, seems like that this is already pretty crowded, + +26 +00:01:03,030 --> 00:01:06,770 +right? We have a number of, classes. So let's + +27 +00:01:06,770 --> 00:01:10,580 +see if there's, some class that may be superfluous and + +28 +00:01:10,580 --> 00:01:13,310 +we can model in a different way. So, for + +29 +00:01:13,310 --> 00:01:16,360 +example, you, while, while thinking of this I was thinking, + +30 +00:01:16,360 --> 00:01:19,450 +the library card, it doesn't really contain much + +31 +00:01:19,450 --> 00:01:22,736 +information, right? So is it basically just the number? + +32 +00:01:22,736 --> 00:01:23,948 + +33 +00:01:23,948 --> 00:01:30,760 +The card has a number on it. We have a separate vendor that does that for us so. + +34 +00:01:30,760 --> 00:01:30,810 +>> Oh. + +35 +00:01:30,810 --> 00:01:33,270 +>> We don't need, it doesn't need to be part of this system, + +36 +00:01:33,270 --> 00:01:35,450 +we just have to make sure that every patron has a library card. + +37 +00:01:35,450 --> 00:01:37,670 +>> Okay, so basically for you, in a sense, the library + +38 +00:01:37,670 --> 00:01:41,560 +card is just an ID that gets associated with a patron. + +39 +00:01:41,560 --> 00:01:42,120 +>> That's right. + +40 +00:01:42,120 --> 00:01:45,380 +>> So I think that the best way to represent this, I mean, unless you + +41 +00:01:45,380 --> 00:01:47,000 +need an entity because you are creating it + +42 +00:01:47,000 --> 00:01:49,160 +yourself, but it seems like you are not. + +43 +00:01:49,160 --> 00:01:52,710 +I would just remove this one and I would like to put this, + +44 +00:01:52,710 --> 00:01:56,020 +basically to take the library card number and add it to the pattern. + +45 +00:01:56,020 --> 00:01:57,100 +>> Okay, makes sense. + +46 +00:01:57,100 --> 00:02:03,000 +>> Okay, so I'll add it here. And as + +47 +00:02:03,000 --> 00:02:06,160 +an additional attribute. Okay, and it will eliminate this class. + +48 +00:02:06,160 --> 00:02:06,410 +>> Okay. + +49 +00:02:06,410 --> 00:02:07,580 +>> Okay. + +50 +00:02:09,690 --> 00:02:11,700 +Oh, and, wait a second, so I guess + +51 +00:02:11,700 --> 00:02:13,940 +also the child needs a library card number, right? + +52 +00:02:13,940 --> 00:02:18,320 +>> Child needs a library card number, but let me ask you about that. Is, + +53 +00:02:18,320 --> 00:02:22,050 +is child a separate class, or is it just another kind of patron? + +54 +00:02:22,050 --> 00:02:24,920 +>> Oh, I see, I see. Because, yeah, it + +55 +00:02:24,920 --> 00:02:28,490 +is sort of a special patron, right? And, so + +56 +00:02:28,490 --> 00:02:31,730 +maybe we should, maybe we should represent it as + +57 +00:02:31,730 --> 00:02:35,640 +a kind of a refinement of the patron. + +58 +00:02:35,640 --> 00:02:38,730 +Hm, but then that made me think. So what is + +59 +00:02:38,730 --> 00:02:42,510 +the only thing that characterizes children? Is it just the age? + +60 +00:02:42,510 --> 00:02:47,440 +>> Well, if they're, that they can't check out more than five books. + +61 +00:02:47,440 --> 00:02:48,890 +>> Okay. And the, and the only difference is the + +62 +00:02:48,890 --> 00:02:52,010 +fact that they are less than, you know, twelve years old. + +63 +00:02:52,010 --> 00:02:52,710 +>> Twelve or less, right. + +64 +00:02:52,710 --> 00:02:56,090 +>> Twelve or less. So, I guess, you know, I would probably + +65 +00:02:56,090 --> 00:03:01,120 +like to represent this by making the age explicit in the patron rather + +66 +00:03:01,120 --> 00:03:04,730 +than to represent it as a class. And I'll tell you why, + +67 +00:03:04,730 --> 00:03:08,300 +because one, one of the issues, and you know, that might happen + +68 +00:03:08,300 --> 00:03:13,070 +again, is that, basically, there are patrons that are children. And they're + +69 +00:03:13,070 --> 00:03:17,130 +no longer children, when they come you know 13 or older right. + +70 +00:03:17,130 --> 00:03:18,100 +>> Right. + +71 +00:03:18,100 --> 00:03:21,990 +>> And if we represent them with a separate class in a sense, then we + +72 +00:03:21,990 --> 00:03:26,620 +cannot really change the type of an instance of these classes. + +73 +00:03:26,620 --> 00:03:28,920 +So we're left to kind of destroy the patron, create + +74 +00:03:28,920 --> 00:03:31,190 +a new one, so that means we also have to transfer + +75 +00:03:31,190 --> 00:03:33,510 +any history we want to keep history and so on. + +76 +00:03:33,510 --> 00:03:35,680 +So I, I think I kind of like better the idea + +77 +00:03:35,680 --> 00:03:39,560 +that I represent the age exclusively in + +78 +00:03:39,560 --> 00:03:42,700 +the patron, and then I'll behave differently, based on whether the + +79 +00:03:42,700 --> 00:03:45,910 +patron is 12 years old, or younger, or 13 or, + +80 +00:03:45,910 --> 00:03:49,600 +13 or older. This, do you see any problem with that? + +81 +00:03:49,600 --> 00:03:51,210 +>> It makes things a little simpler. + +82 +00:03:51,210 --> 00:03:51,490 +>> Okay, + +83 +00:03:51,490 --> 00:03:53,550 +and we actually, it allows us also to eliminate + +84 +00:03:53,550 --> 00:03:56,450 +one class here. So I'm going to proceed this way. + +85 +00:03:56,450 --> 00:03:59,450 +I'm going to eliminate the children class, and I'm going to + +86 +00:03:59,450 --> 00:04:03,600 +put the age in the patron. Okay, and let me + +87 +00:04:03,600 --> 00:04:07,020 +see. But in this spirit, actually, something else that jumps + +88 +00:04:07,020 --> 00:04:09,740 +at me is this idea of the bestseller, because I + +89 +00:04:09,740 --> 00:04:11,850 +kind of feel like, we might have the same + +90 +00:04:11,850 --> 00:04:15,085 +problem. So, what is the story? What is a bestseller. + +91 +00:04:15,085 --> 00:04:16,850 +>> Well it's + +92 +00:04:16,850 --> 00:04:20,750 +an item that we want to restrict how + +93 +00:04:20,750 --> 00:04:23,896 +long people can keep, because there is such demand for it. + +94 +00:04:23,896 --> 00:04:26,880 +>> I see, and so basically a book that's a + +95 +00:04:26,880 --> 00:04:30,450 +bestseller, like the New York Times bestseller, is a bestseller forever? + +96 +00:04:30,450 --> 00:04:32,683 +>> No, no, no it's hot for + +97 +00:04:32,683 --> 00:04:35,940 +awhile, and then it becomes just a regular item. + +98 +00:04:35,940 --> 00:04:38,318 +>> I see. Hm. Then I guess it's a + +99 +00:04:38,318 --> 00:04:40,349 +similar situation to the one I was mentioning before, right? + +100 +00:04:40,349 --> 00:04:40,980 +>> Okay. + +101 +00:04:40,980 --> 00:04:41,800 +>> That if we have a book, + +102 +00:04:41,800 --> 00:04:44,530 +it will kind of have to change its type if it becomes a best seller. + +103 +00:04:44,530 --> 00:04:47,218 +Then we have to change its type again, if it's no longer a best seller. + +104 +00:04:47,218 --> 00:04:47,790 +>> Right. + +105 +00:04:47,790 --> 00:04:48,920 +>> So it seems to me that a better + +106 +00:04:48,920 --> 00:04:52,150 +way to represent this, is just to eliminate this BestSeller + +107 +00:04:52,150 --> 00:04:55,060 +class and instead, I'm going to put the best seller + +108 +00:04:55,060 --> 00:04:58,190 +attribute, which would just be a Boolean in the book. + +109 +00:04:58,190 --> 00:05:00,190 +>> Okay, what do you mean by Boolean? + +110 +00:05:00,190 --> 00:05:02,280 +>> Right. We don't know what Boolean is, right? The Boolean is + +111 +00:05:02,280 --> 00:05:04,940 +basically just a number. It can have two values, right? True or false. + +112 +00:05:04,940 --> 00:05:05,380 +>> Okay. + +113 +00:05:05,380 --> 00:05:06,830 +>> So we usually, normally use it + +114 +00:05:06,830 --> 00:05:09,510 +in this in this case. Imagine one, zero, + +115 +00:05:09,510 --> 00:05:10,970 +right? Then it's just kind of the basic. + +116 +00:05:10,970 --> 00:05:11,120 +>> Okay. + +117 +00:05:11,120 --> 00:05:12,250 +>> You know, the bits, right? + +118 +00:05:12,250 --> 00:05:12,590 +>> Okay. + +119 +00:05:12,590 --> 00:05:14,730 +>> So, this is just telling us, it's like a flag + +120 +00:05:14,730 --> 00:05:16,672 +that is telling this book is a best seller, or not. + +121 +00:05:16,672 --> 00:05:17,053 +>> Okay. + +122 +00:05:17,053 --> 00:05:20,920 +>> It's very easy to change this value and make a book a best + +123 +00:05:20,920 --> 00:05:22,880 +seller or not a best seller, than + +124 +00:05:22,880 --> 00:05:26,210 +just creating and destroying instances of these classes. + +125 +00:05:26,210 --> 00:05:27,135 +>> Okay, makes sense. + +126 +00:05:27,135 --> 00:05:32,630 +>> Okay, so at this point, this already looks better, right? Because we have, + +127 +00:05:32,630 --> 00:05:35,590 +less classes, and I think we did, yeah, we + +128 +00:05:35,590 --> 00:05:38,775 +did some serious cleanup. That's good. Okay, so now that + +129 +00:05:38,775 --> 00:05:40,975 +we eliminated some of this, what I would like to + +130 +00:05:40,975 --> 00:05:42,845 +do, as I said, we are going to both clean + +131 +00:05:42,845 --> 00:05:45,222 +up, but also refine. I would like to go + +132 +00:05:45,222 --> 00:05:48,826 +back to our, requirements and see whether we can identify + +133 +00:05:48,826 --> 00:05:52,566 +additional attributes for this, class that maybe are not as + +134 +00:05:52,566 --> 00:05:55,120 +obvious as the one that we saw so far, okay? + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt new file mode 100644 index 0000000..0a48aae --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt @@ -0,0 +1,352 @@ +1 +00:00:00,240 --> 00:00:02,880 +Okay, so let me look at the requirements and + +2 +00:00:05,500 --> 00:00:09,150 +it's something that I can see here that we didn't point out before is that + +3 +00:00:09,150 --> 00:00:13,540 +there seems to be clearly some concept of a due date. And I'm telling you why + +4 +00:00:13,540 --> 00:00:17,610 +I'm saying that because here, for example, I notice that it says when items are + +5 +00:00:17,610 --> 00:00:22,580 +due. We mention overdue several times, so is + +6 +00:00:22,580 --> 00:00:24,410 +this something we need to keep track of? + +7 +00:00:24,410 --> 00:00:27,510 +>> Yeah remember when we used to stamp them on the books? In the stamp pad? + +8 +00:00:27,510 --> 00:00:28,240 +>> Oh yeah yeah yeah! Oh course! + +9 +00:00:28,240 --> 00:00:30,600 +>> Right? Yeah we definitely keep track of, + +10 +00:00:30,600 --> 00:00:32,390 +the system has to keep track of when books are due. + +11 +00:00:32,390 --> 00:00:35,300 +>> Okay. So it seems to me that one good way + +12 +00:00:35,300 --> 00:00:39,660 +of doing that is by basically adding an attribute to the, item. + +13 +00:00:39,660 --> 00:00:40,590 +>> Okay. + +14 +00:00:40,590 --> 00:00:41,910 +>> And I'll just call it due date. + +15 +00:00:41,910 --> 00:00:42,400 +>> Okay. + +16 +00:00:42,400 --> 00:00:45,360 +>> So basically for each item in case it's loaned + +17 +00:00:45,360 --> 00:00:48,315 +there will be this attribute that will contain the value of + +18 +00:00:48,315 --> 00:00:48,520 +>> Okay. + +19 +00:00:48,520 --> 00:00:55,710 +>> Of when, when the item is due. And then, something else that I noticed + +20 +00:00:55,710 --> 00:00:58,734 +here is that down here, it seems like + +21 +00:00:58,734 --> 00:01:00,900 +the requirements are saying that an item can + +22 +00:01:00,900 --> 00:01:04,190 +be renewed only once. So, I guess, that's + +23 +00:01:04,190 --> 00:01:05,933 +something we need to keep track of, right? + +24 +00:01:05,933 --> 00:01:06,056 +>> Yeah. + +25 +00:01:06,056 --> 00:01:06,700 +>> The system needs to know. + +26 +00:01:06,700 --> 00:01:08,360 +>> We have to know whether they've renewed it or not. + +27 +00:01:08,360 --> 00:01:14,132 +>> Okay so, I'll do a similar thing here. I think I want to go and add a an + +28 +00:01:14,132 --> 00:01:19,140 +attribute that we'd call number of times renewed, and add it to the item class. + +29 +00:01:19,140 --> 00:01:19,760 +>> Okay. + +30 +00:01:19,760 --> 00:01:21,140 +>> And this is kind of more generic + +31 +00:01:21,140 --> 00:01:23,180 +than what you need, because here it says only once, but + +32 +00:01:23,180 --> 00:01:25,800 +let's say that in the future you want to allow it to, + +33 +00:01:25,800 --> 00:01:28,690 +kind of renew twice, you'll be able to use these attributes again + +34 +00:01:28,690 --> 00:01:31,090 +because, we can just count how many times it was renewed. Okay? + +35 +00:01:31,090 --> 00:01:31,680 +>> Makes sense. + +36 +00:01:31,680 --> 00:01:35,980 +>> Alright. And one last thing I want to point out. + +37 +00:01:35,980 --> 00:01:38,310 +And this seems obvious but I'm going to check with + +38 +00:01:38,310 --> 00:01:43,150 +you anyways. And seems like there is a basically the + +39 +00:01:43,150 --> 00:01:46,090 +need to keep track of whether an item is checked + +40 +00:01:46,090 --> 00:01:48,210 +out or not. If you look at the text here, + +41 +00:01:48,210 --> 00:01:51,080 +the requirements here, I can see that check out and checked out are + +42 +00:01:51,080 --> 00:01:55,070 +mentioned five times. So, I'm assuming that that's something also + +43 +00:01:55,070 --> 00:01:58,080 +that we want to know about an item, whether it's checked out or not. + +44 +00:01:58,080 --> 00:01:59,970 +>> We have to keep track of whether they're checked out. + +45 +00:01:59,970 --> 00:02:01,930 +>> Okay, so I'll add an + +46 +00:02:01,930 --> 00:02:04,340 +additional attribute there. So I'm going to again go + +47 +00:02:04,340 --> 00:02:06,480 +back to the diagram and I'm + +48 +00:02:06,480 --> 00:02:10,139 +just going to write here also the checked out attribute. + +49 +00:02:12,260 --> 00:02:14,590 +And, I think that's it as far as I'm + +50 +00:02:14,590 --> 00:02:16,330 +concerned. Is there anything that you think is missing? + +51 +00:02:16,330 --> 00:02:21,077 +>> Well, I do have a question. Would checked out, + +52 +00:02:21,077 --> 00:02:27,140 +better not be the case that someone can check out a reference book. + +53 +00:02:27,140 --> 00:02:28,400 +>> Oh, I see, I see. + +54 +00:02:28,400 --> 00:02:30,120 +>> Okay. I mean, it's only the books and + +55 +00:02:30,120 --> 00:02:31,780 +the audio visual material that can be checked out. + +56 +00:02:31,780 --> 00:02:37,790 +>> Right, right, right. Okay, so I, I guess, well the way I will fix that is, + +57 +00:02:37,790 --> 00:02:42,300 +I'll probably put yet another attribute in the item class, and I'll + +58 +00:02:42,300 --> 00:02:45,860 +call it loanable. And basically, this attribute is just telling us whether + +59 +00:02:45,860 --> 00:02:49,580 +an item is loanable or not. So, when it's not true and + +60 +00:02:49,580 --> 00:02:53,480 +loanable is not on. Basically, that item can be checked out. + +61 +00:02:53,480 --> 00:02:55,174 +>> Okay. And, the system would know this. + +62 +00:02:55,174 --> 00:02:56,450 +>> The system will know that. + +63 +00:02:56,450 --> 00:02:57,160 +>> And prevent it from happening. + +64 +00:02:57,160 --> 00:02:58,240 +>> And prevent it from happening. Okay? + +65 +00:02:58,240 --> 00:02:58,750 +>> Alright. + +66 +00:02:58,750 --> 00:03:02,918 +>> Perfect. So, we're going to do that and, any other objections, + +67 +00:03:02,918 --> 00:03:04,035 +any other? + +68 +00:03:04,035 --> 00:03:05,730 +>> No, that was my question. + +69 +00:03:05,730 --> 00:03:08,040 +>> Okay, perfect, so what I'm going to do next, I + +70 +00:03:08,040 --> 00:03:11,130 +mean, I haven't mentioned that yet, but you know classes right + +71 +00:03:11,130 --> 00:03:12,890 +now we just looked at the attributes right that give + +72 +00:03:12,890 --> 00:03:16,140 +you sort of the state of the class. And there's something + +73 +00:03:16,140 --> 00:03:19,185 +else, there's a second part of the class that is kind of + +74 +00:03:19,185 --> 00:03:22,520 +an orthogonal aspect, which is what the class can do. And we + +75 +00:03:22,520 --> 00:03:25,640 +call those operations. So normally these kinds also have operations, I + +76 +00:03:25,640 --> 00:03:28,000 +guess you know it would make sense to you as well. + +77 +00:03:28,000 --> 00:03:30,070 +And one way, one very natural way to + +78 +00:03:30,070 --> 00:03:33,310 +identify operations is to look at the requirements and + +79 +00:03:33,310 --> 00:03:36,850 +look for verbs. Because verbs associated with an item + +80 +00:03:36,850 --> 00:03:38,480 +will tell you basically what the item can do. + +81 +00:03:38,480 --> 00:03:38,900 +>> Okay. + +82 +00:03:38,900 --> 00:03:41,250 +>> So I, I'd like to go back to the requirements and + +83 +00:03:41,250 --> 00:03:45,110 +start, the same way in which we underlined, nouns, we're going to underline + +84 +00:03:45,110 --> 00:03:49,340 +verbs and we're going to see which ones of those verbs actually represent + +85 +00:03:49,340 --> 00:03:53,120 +actions that we want to represent explicitly, we want to model explicitly in + +86 +00:03:53,120 --> 00:03:53,950 +our class diagram. + +87 +00:03:53,950 --> 00:03:54,490 +>> Okay. + +88 +00:03:54,490 --> 00:03:54,750 +>> Okay. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt new file mode 100644 index 0000000..74ca388 --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt @@ -0,0 +1,304 @@ +1 +00:00:00,460 --> 00:00:03,276 +>> And before we get started actually, I'd like to mention that there's + +2 +00:00:03,276 --> 00:00:05,124 +just, you know, FYI, there's different kinds + +3 +00:00:05,124 --> 00:00:06,708 +of verbs because what I'm looking for + +4 +00:00:06,708 --> 00:00:10,099 +is really action verbs. So verb, verbs that clearly express an action that + +5 +00:00:10,099 --> 00:00:13,580 +can tell me that, you know, what, for example, an item could do, 'kay? + +6 +00:00:13,580 --> 00:00:13,820 +>> Okay? + +7 +00:00:13,820 --> 00:00:16,620 +>> Not the verbs that represent, for example, relationships, 'kay? + +8 +00:00:16,620 --> 00:00:17,076 +>> Okay. + +9 +00:00:17,076 --> 00:00:19,080 +>> So, and the, there, and the ones + +10 +00:00:19,080 --> 00:00:22,020 +that I've identified und, underlined here actually, I, + +11 +00:00:22,020 --> 00:00:26,158 +I underlined complete sentences so that you kind of we can look at the verbs in + +12 +00:00:26,158 --> 00:00:29,150 +in context. And the first one is this + +13 +00:00:29,150 --> 00:00:30,850 +sentence that says that the library may need + +14 +00:00:30,850 --> 00:00:33,190 +to know or to calculate the items a + +15 +00:00:33,190 --> 00:00:35,790 +patron has checked out, when they are due, and + +16 +00:00:35,790 --> 00:00:38,860 +any outstanding overdue fines. So I, I will + +17 +00:00:38,860 --> 00:00:41,430 +imagine that this is representing a situation in + +18 +00:00:41,430 --> 00:00:44,224 +which you bring up a patron's record and + +19 +00:00:44,224 --> 00:00:46,131 +you start looking up this information. Is that [CROSSTALK] + +20 +00:00:46,131 --> 00:00:50,970 +>> The, the patron often wants to know what they have currently checked out. + +21 +00:00:50,970 --> 00:00:51,044 +>> Oh, + +22 +00:00:51,044 --> 00:00:51,282 +alright. + +23 +00:00:51,282 --> 00:00:53,260 +>> Or when are their due or how much they're owed or. + +24 +00:00:53,260 --> 00:00:55,100 +>> Oh, in fact, and then now that you mentioned it, + +25 +00:00:55,100 --> 00:00:57,500 +I think you sent me. One of the scenarios you sent + +26 +00:00:57,500 --> 00:00:59,400 +me had to do with that, right, with the patron coming + +27 +00:00:59,400 --> 00:01:01,930 +in and asking for this information. So yeah, and it makes + +28 +00:01:01,930 --> 00:01:05,025 +a lot of sense. So what I'm going to do, I'm going to + +29 +00:01:05,025 --> 00:01:10,520 +model this by adding this three operations to the patron method. + +30 +00:01:10,520 --> 00:01:13,410 +The first one, I'm going to call, itemsCheckedOut and, basically, it's an + +31 +00:01:13,410 --> 00:01:16,520 +operation, but you don't need to, you know, understand the implementation + +32 +00:01:16,520 --> 00:01:18,820 +details, but when you call this operation, it will + +33 +00:01:18,820 --> 00:01:21,770 +give you back exactly this information, so the items + +34 +00:01:21,770 --> 00:01:23,864 +that are checked out by that patron. The second + +35 +00:01:23,864 --> 00:01:25,965 +one, I'm going to call it whenDue. That will tell you + +36 +00:01:25,965 --> 00:01:29,080 +basically when a, when an item is due. And + +37 +00:01:29,080 --> 00:01:32,550 +the third one is going to be called the outstandingOverdueFines and, + +38 +00:01:32,550 --> 00:01:34,510 +you know, as the name says, it's going to tell + +39 +00:01:34,510 --> 00:01:36,860 +you what are the outstanding overdue fines for that patron. + +40 +00:01:36,860 --> 00:01:37,300 +>> Okay. + +41 +00:01:37,300 --> 00:01:39,306 +>> And as you might notice I mean, + +42 +00:01:39,306 --> 00:01:41,843 +I, I'm going to separate the, the, the attributes + +43 +00:01:41,843 --> 00:01:44,085 +from the operations by having a separate kind + +44 +00:01:44,085 --> 00:01:46,386 +of subrectangle so, in this way, it's clear + +45 +00:01:46,386 --> 00:01:48,274 +what is attribute and what is, what is + +46 +00:01:48,274 --> 00:01:51,000 +an attribute and what's an, what's an operation. + +47 +00:01:51,000 --> 00:01:51,420 +>> Gotcha. + +48 +00:01:51,420 --> 00:01:57,540 +>> And let me see then. Okay, for the + +49 +00:01:57,540 --> 00:02:00,040 +second one you can see that that patron can check + +50 +00:02:00,040 --> 00:02:02,990 +out books and audio visual materials. So I guess, + +51 +00:02:02,990 --> 00:02:06,880 +similarly you, you build kind of the record for a patron. + +52 +00:02:06,880 --> 00:02:09,150 +The patron will give you an item and you will record + +53 +00:02:09,150 --> 00:02:11,020 +the fact that the patron is kind of checking it out. + +54 +00:02:11,020 --> 00:02:15,730 +>> Right. And is that operation related to this, + +55 +00:02:15,730 --> 00:02:18,150 +the checked out attribute that we did a minute ago? + +56 +00:02:18,150 --> 00:02:21,495 +>> It is actually because what will happen then again, you know, if we jump + +57 +00:02:21,495 --> 00:02:24,975 +ahead a little bit would be that every time you invoke this operation. So I'm + +58 +00:02:24,975 --> 00:02:26,810 +going to represent this as a checkOut operation + +59 +00:02:26,810 --> 00:02:28,896 +for the patron. Every time you invoke this, + +60 +00:02:28,896 --> 00:02:31,920 +you will also have to say something about the item and so we will also + +61 +00:02:31,920 --> 00:02:35,700 +flip kind of that that, that build information in the, in the, in the item. + +62 +00:02:35,700 --> 00:02:36,904 +>> Okay. + +63 +00:02:36,904 --> 00:02:39,680 +>> Mm, 'kay? And, and finally, here, I can see that + +64 +00:02:39,680 --> 00:02:42,660 +a patron can request a book or an audio video item Is + +65 +00:02:42,660 --> 00:02:46,240 +not currently in. So I guess this is referring to items that + +66 +00:02:46,240 --> 00:02:48,980 +are already checked out but for which there is interest. Is that? + +67 +00:02:48,980 --> 00:02:54,770 +>> Right. So, particularly, the popular items the patrons want to get on + +68 +00:02:54,770 --> 00:02:57,140 +the list so that they get notified when it comes back in and. + +69 +00:02:57,140 --> 00:02:57,204 +>> Oh. + +70 +00:02:57,204 --> 00:02:57,730 +>> And check it out. + +71 +00:02:57,730 --> 00:03:00,570 +>> I see. I see. Okay. Then I'm going to do + +72 +00:03:00,570 --> 00:03:04,400 +the same thing here. I'm, I'm going to add this method, + +73 +00:03:04,400 --> 00:03:08,510 +which I'm going to call request and I'm going to put it + +74 +00:03:08,510 --> 00:03:11,340 +here in the list of the methods in the list. + +75 +00:03:11,340 --> 00:03:11,450 +>> Okay. + +76 +00:03:11,450 --> 00:03:12,810 +>> Of operations for the, for the patron, okay? + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt new file mode 100644 index 0000000..d47ef80 --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt @@ -0,0 +1,488 @@ +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. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt new file mode 100644 index 0000000..44f9165 --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt @@ -0,0 +1,188 @@ +1 +00:00:00,350 --> 00:00:03,460 +Spencer, I gotta tell you, I'm impressed. + +2 +00:00:03,460 --> 00:00:05,441 +You're getting very good at this. So, why + +3 +00:00:05,441 --> 00:00:07,190 +don't you go wild and continue, there + +4 +00:00:07,190 --> 00:00:09,240 +anything else you think we can improve here? + +5 +00:00:09,240 --> 00:00:11,800 +>> Well something was bothering + +6 +00:00:11,800 --> 00:00:14,600 +me, that what happens if there's more + +7 +00:00:14,600 --> 00:00:19,110 +than one book with the same title and somebody puts in a request? + +8 +00:00:19,110 --> 00:00:25,360 +>> Oh, I see. That's a good point. So basically what you are telling me is + +9 +00:00:25,360 --> 00:00:28,630 +there's kind of a difference between an item and + +10 +00:00:28,630 --> 00:00:30,660 +the title, so the title is kind of a more + +11 +00:00:30,660 --> 00:00:32,940 +general concept, in a sense. So if you can + +12 +00:00:32,940 --> 00:00:35,830 +have multiple copies of a given title, is that right? + +13 +00:00:35,830 --> 00:00:38,460 +>> Yeah, we have five copies of Tom Sawyer, and the + +14 +00:00:38,460 --> 00:00:42,810 +persons, the patrons, really putting in a request for any Tom Sawyer. + +15 +00:00:42,810 --> 00:00:45,332 +>> They don't want like copy number three of Tom Sawyer, right? They want, + +16 +00:00:45,332 --> 00:00:50,530 +they want to read Tom Sawyer. Okay and I can represent that. So, in which + +17 +00:00:50,530 --> 00:00:55,230 +I suggest we do that, and you can tell me whether it makes sense to you is by + +18 +00:00:55,230 --> 00:00:59,650 +introducing an additional class, which I call Title. And + +19 +00:00:59,650 --> 00:01:02,614 +that represents exactly the concept that you're mentioning. So + +20 +00:01:02,614 --> 00:01:04,666 +this is a title which represents some + +21 +00:01:04,666 --> 00:01:09,180 +specific content. That is not related to a specific + +22 +00:01:09,180 --> 00:01:12,110 +physical element. Like it can be rated to multiple, + +23 +00:01:12,110 --> 00:01:15,520 +physical elements. So basically I'm going to create this title. + +24 +00:01:15,520 --> 00:01:18,100 +And then I'm going to create a relationship between + +25 +00:01:18,100 --> 00:01:20,500 +the title and the item. And what + +26 +00:01:20,500 --> 00:01:22,530 +the relationship is telling me, the the association + +27 +00:01:22,530 --> 00:01:25,512 +between these two in this case. Is an association, + +28 +00:01:25,512 --> 00:01:30,320 +that we call aggregation. So it's a special kind of association, that basically + +29 +00:01:30,320 --> 00:01:35,450 +indicates that an item of this type, so a title can + +30 +00:01:35,450 --> 00:01:40,692 +consist of a multiple elements of this type of multiple items. + +31 +00:01:40,692 --> 00:01:42,710 +So it's telling me that one title can + +32 +00:01:42,710 --> 00:01:45,700 +consist of multiple items, and I'm going to indicate + +33 +00:01:45,700 --> 00:01:48,560 +it with this annotation, which is a this + +34 +00:01:49,700 --> 00:01:53,200 +diamond at the top of the association. + +35 +00:01:53,200 --> 00:01:55,570 +>> And so we can move our request + +36 +00:01:55,570 --> 00:01:57,510 +line, up from loanable item to + +37 +00:01:57,510 --> 00:01:59,010 +title, because that's what they're really requesting. + +38 +00:01:59,010 --> 00:02:00,710 +>> Definitely, definitely, and in fact, + +39 +00:02:00,710 --> 00:02:02,420 +you know, that represents exactly the situation + +40 +00:02:02,420 --> 00:02:06,350 +that you are mentioning, at this point when the patron makes a request. + +41 +00:02:06,350 --> 00:02:12,240 +It makes a request to a title and not to a loanable item. And then, and + +42 +00:02:12,240 --> 00:02:15,420 +when the actual loan will take place, + +43 +00:02:15,420 --> 00:02:18,420 +then that will be connected to a specific item. + +44 +00:02:18,420 --> 00:02:20,090 +>> Right. Okay that makes sense. + +45 +00:02:20,090 --> 00:02:20,388 +>> Makes sense? + +46 +00:02:20,388 --> 00:02:20,779 +>> Yeah. + +47 +00:02:20,779 --> 00:02:21,214 +>> Okay, good. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt new file mode 100644 index 0000000..1e47ea6 --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt @@ -0,0 +1,328 @@ +1 +00:00:00,260 --> 00:00:01,720 +Okay, so let me see if + +2 +00:00:01,720 --> 00:00:07,930 +anything changed after we did this last modification. + +3 +00:00:07,930 --> 00:00:09,530 +Acutally, there is someting that I would like + +4 +00:00:09,530 --> 00:00:12,120 +to do here. Because looking at this a little + +5 +00:00:12,120 --> 00:00:15,560 +bit more, I noticed that there are two + +6 +00:00:15,560 --> 00:00:18,760 +attributes, renewed and due date. That we have in + +7 +00:00:18,760 --> 00:00:21,640 +loanable Item, right? But they don't seem to + +8 +00:00:21,640 --> 00:00:25,590 +be really, attributes or characteristics of loanable Item. + +9 +00:00:25,590 --> 00:00:29,150 +They're more of the characteristics of the association between the + +10 +00:00:29,150 --> 00:00:31,450 +Loanable Item and the patron. Wouldn't you agree? + +11 +00:00:32,470 --> 00:00:34,230 +>> Well, yeah, it's not like you could + +12 +00:00:34,230 --> 00:00:37,644 +only renew a book once in it's entire history. + +13 +00:00:37,644 --> 00:00:41,220 +>> Right. Exactly, exactly. So, that's why what l like + +14 +00:00:41,220 --> 00:00:43,970 +to do is I would like to move those out of loanable + +15 +00:00:43,970 --> 00:00:48,020 +item. And actually there is a construct that we can use + +16 +00:00:48,020 --> 00:00:50,710 +to express this. It's called, we haven't seen it yet, but it's + +17 +00:00:50,710 --> 00:00:52,780 +a special kind of class. It's called an association + +18 +00:00:52,780 --> 00:00:55,480 +class. So, it's a class that is connected to + +19 +00:00:55,480 --> 00:00:57,730 +a specific association. So what we can do + +20 +00:00:57,730 --> 00:01:00,730 +here, we can create this class, which I'm going to + +21 +00:01:00,730 --> 00:01:05,200 +call checked out. I'm going to, associate it with + +22 +00:01:05,200 --> 00:01:09,520 +this, association. I'm going to connect it with this association. And + +23 +00:01:09,520 --> 00:01:11,620 +then I'm going to move the due date and the + +24 +00:01:11,620 --> 00:01:16,300 +renewed attributes From the LoanableItem here in this checked + +25 +00:01:16,300 --> 00:01:18,520 +out class. So in this way, seems to me that + +26 +00:01:18,520 --> 00:01:20,910 +it makes it very explicit for somebody looking at this + +27 +00:01:20,910 --> 00:01:25,530 +class diagram, that these characteristics are characteristics of the loan, + +28 +00:01:25,530 --> 00:01:28,200 +and not of the elements involved in the loan. + +29 +00:01:28,200 --> 00:01:33,410 +>> Can you do the same thing with Fine, isn't Fine a property of the + +30 +00:01:33,410 --> 00:01:36,740 +loan? Yeah, actually is right because + +31 +00:01:36,740 --> 00:01:39,120 +a fine is a fine for a specific loan, right? + +32 +00:01:39,120 --> 00:01:39,910 +>> That's correct. + +33 +00:01:39,910 --> 00:01:41,950 +>> Okay, so yeah. Then we can do that. + +34 +00:01:41,950 --> 00:01:45,900 +We don't need to represent fine as a class, we can just transform + +35 +00:01:45,900 --> 00:01:49,460 +that into an attribute that we can put into the checked out association class. + +36 +00:01:49,460 --> 00:01:50,560 +>> Gotcha. + +37 +00:01:50,560 --> 00:01:52,760 +>> Anything else? + +38 +00:01:52,760 --> 00:01:57,990 +>> Yeah. It occurred to me that there's another thing that happens in one + +39 +00:01:57,990 --> 00:02:00,260 +of my scenarios, I put down + +40 +00:02:00,260 --> 00:02:02,770 +about the patron actually returning an item. + +41 +00:02:02,770 --> 00:02:07,620 +>> Right. Okay, so we would probably need an additional operation, + +42 +00:02:07,620 --> 00:02:08,550 +I guess, for the patron. + +43 +00:02:08,550 --> 00:02:08,990 +>> Right. + +44 +00:02:08,990 --> 00:02:11,310 +>> So, okay, so what I'm going to do, that's pretty easy + +45 +00:02:11,310 --> 00:02:15,350 +to do, I'm just going to add the return operation here in the + +46 +00:02:15,350 --> 00:02:19,310 +patron, and when that happens, that will mean that I'll get rid + +47 +00:02:19,310 --> 00:02:23,490 +of this association class because the item is returned. Is that right? + +48 +00:02:23,490 --> 00:02:27,060 +>> Well, what happens if somebody drops the + +49 +00:02:27,060 --> 00:02:29,400 +book in the book drop, but doesn't pay the, + +50 +00:02:29,400 --> 00:02:31,050 +if it's overdue and doesn't pay the fine? + +51 +00:02:31,050 --> 00:02:32,700 +Will that get rid of the information about what + +52 +00:02:32,700 --> 00:02:33,040 +they owe? + +53 +00:02:33,040 --> 00:02:37,960 +>> Oh, I see. So you can have the item being available, but you still + +54 +00:02:37,960 --> 00:02:42,510 +want to know whether there is any pending fines on the book. + +55 +00:02:42,510 --> 00:02:44,390 +>> Uh-huh, and how much those fines are. + +56 +00:02:44,390 --> 00:02:46,340 +>> And how do you compute how much it is? + +57 +00:02:47,420 --> 00:02:52,710 +>> It's how many days it was, from the time it was + +58 +00:02:52,710 --> 00:02:58,170 +due, to when they returned it. I see. OK. + +59 +00:02:58,170 --> 00:03:00,380 +So you know what we can do? I think + +60 +00:03:00,380 --> 00:03:03,690 +we can put an additional attribute in the checked out + +61 +00:03:03,690 --> 00:03:07,190 +class and I'm going to call it when returned and + +62 +00:03:07,190 --> 00:03:10,200 +that item will have either a special value or it + +63 +00:03:10,200 --> 00:03:12,040 +will contain the date in which the book was + +64 +00:03:12,040 --> 00:03:14,520 +returned. So in this way you should be able to + +65 +00:03:14,520 --> 00:03:18,040 +keep this in the system until it's paid, and also to compute + +66 +00:03:18,040 --> 00:03:19,970 +how much the fine is. Is that working? + +67 +00:03:19,970 --> 00:03:23,210 +>> So the special value is for a normal situation when they + +68 +00:03:23,210 --> 00:03:25,880 +haven't, they don't owe anything and haven't returned it yet. + +69 +00:03:25,880 --> 00:03:28,080 +>> Exactly so that will tell us that, + +70 +00:03:28,080 --> 00:03:29,970 +that the loan is still active basically. + +71 +00:03:29,970 --> 00:03:30,500 +>> Great. + +72 +00:03:30,500 --> 00:03:31,480 +>> Does that work for you? + +73 +00:03:31,480 --> 00:03:35,200 +>> Yes. And you know, I like this. I mean, I feel pretty good + +74 +00:03:35,200 --> 00:03:38,490 +about it. I think we have a nice class diagram. So what I'd like to + +75 +00:03:38,490 --> 00:03:43,280 +do is just go off and clean it up a little bit, and put it + +76 +00:03:43,280 --> 00:03:48,640 +in an IDE so I can pretty print it and rearrange things a little bit. + +77 +00:03:48,640 --> 00:03:50,080 +And then I'd like to sit down again and + +78 +00:03:50,080 --> 00:03:52,730 +just go through it for a last time. And + +79 +00:03:52,730 --> 00:03:54,900 +for some final considerations. So if you don't mind + +80 +00:03:54,900 --> 00:03:56,880 +we will take a ten minute break and reconvene here. + +81 +00:03:56,880 --> 00:03:57,500 +>> That's fine. + +82 +00:03:57,500 --> 00:03:57,990 +>> Alright. + diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt new file mode 100644 index 0000000..0dbfccd --- /dev/null +++ b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt @@ -0,0 +1,196 @@ +1 +00:00:00,140 --> 00:00:03,202 +Okay. So this is what I've done as you see, + +2 +00:00:03,202 --> 00:00:06,130 +it looks a little nicer than it was before. And I didn't + +3 +00:00:06,130 --> 00:00:08,530 +really change that much. I just made a few changes, so + +4 +00:00:08,530 --> 00:00:11,560 +I just wanted to point them out to you, so that you + +5 +00:00:11,560 --> 00:00:13,690 +know what they are. And the main thing, one of the + +6 +00:00:13,690 --> 00:00:18,210 +main things I did is really to introduce these derived attributes. So + +7 +00:00:18,210 --> 00:00:19,860 +these are attributes that are basically + +8 +00:00:19,860 --> 00:00:22,520 +computed. Based on some other attributes. + +9 +00:00:22,520 --> 00:00:26,010 +Okay, they don't have a value themselves, but their value is computed. + +10 +00:00:26,010 --> 00:00:28,900 +And I used two. The first one is age. So + +11 +00:00:28,900 --> 00:00:31,930 +basically we know the age of the patron based on + +12 +00:00:31,930 --> 00:00:34,920 +the birthday, of the patron. So you guys, I don't + +13 +00:00:34,920 --> 00:00:37,150 +know if you have that information currently in the system. + +14 +00:00:37,150 --> 00:00:38,480 +>> No, we'll have to add that to the + +15 +00:00:38,480 --> 00:00:40,280 +form patrons fill out, when they get their card. + +16 +00:00:40,280 --> 00:00:42,255 +>> Is that, that an issue? Can you do it? + +17 +00:00:42,255 --> 00:00:44,130 +>> No yes, we, we can easily do that. + +18 +00:00:44,130 --> 00:00:46,670 +>> Okay, so then, perfect. So we'll do it that way. I think it's + +19 +00:00:46,670 --> 00:00:51,310 +a, in a little cleaner. And similarly, since you told me that the fine + +20 +00:00:51,310 --> 00:00:54,480 +was computed based on the amount of days that an + +21 +00:00:54,480 --> 00:00:58,310 +item was late. The patron was late returning the item, then I + +22 +00:00:58,310 --> 00:01:02,010 +also added this as a derived attribute that is computed based on + +23 +00:01:02,010 --> 00:01:05,140 +the due date and when the item is actually returned. + +24 +00:01:05,140 --> 00:01:05,780 +>> Makes sense. + +25 +00:01:05,780 --> 00:01:08,389 +>> Makes sense? Okay. And the rest + +26 +00:01:08,389 --> 00:01:10,590 +is kind of really minor things. So the, the only one I + +27 +00:01:10,590 --> 00:01:14,340 +want to point out is I didn't, you know, discuss that with + +28 +00:01:14,340 --> 00:01:17,260 +you before, but I added this, which is called cardinality + +29 +00:01:17,260 --> 00:01:20,700 +for some of these relationships. And what they say is basically + +30 +00:01:20,700 --> 00:01:25,360 +is how many elements are involved in the relationship. + +31 +00:01:25,360 --> 00:01:26,580 +>> So, you mean the stars? + +32 +00:01:26,580 --> 00:01:27,960 +>> Yeah, like the stars and the one... + +33 +00:01:27,960 --> 00:01:28,290 +>> Okay. + +34 +00:01:28,290 --> 00:01:31,380 +>> Here for example, this is telling you that for each item there + +35 +00:01:31,380 --> 00:01:35,490 +is only one title. And that for each title, there are multiple items. + +36 +00:01:35,490 --> 00:01:36,490 +>> So, star means many. + +37 +00:01:36,490 --> 00:01:37,716 +>> Stars mean many, yeah. + +38 +00:01:37,716 --> 00:01:39,045 +>> Okay, go you. + +39 +00:01:39,045 --> 00:01:42,321 +>> Sorry that's kind of computer science lingo - we use the star + +40 +00:01:42,321 --> 00:01:45,500 +for that kind of stuff. And, similarly, for the patron, it's + +41 +00:01:45,500 --> 00:01:48,510 +telling me that, you know, each patron can have multiple, can + +42 +00:01:48,510 --> 00:01:52,550 +request multiple titles, and that the same title can be requested + +43 +00:01:52,550 --> 00:01:55,650 +by multiple patrons, which I think is the way the system works. + +44 +00:01:55,650 --> 00:01:59,080 +>> Right. So except for these minor changes, + +45 +00:01:59,080 --> 00:02:01,850 +we already had a pretty good model in our hands, so + +46 +00:02:01,850 --> 00:02:04,620 +I think is a, we can finalize this and then just + +47 +00:02:04,620 --> 00:02:07,350 +move to the low level design and then implementation, and be + +48 +00:02:07,350 --> 00:02:07,970 +done with the system. + +49 +00:02:07,970 --> 00:02:08,979 +>> Sounds good. + -- cgit 1.4.1