All language subtitles for 008 Bank Management – Part 5_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian Download
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,150 --> 00:00:05,070 This video is going to cover the solution for part five based on the requirements we can define for 2 00:00:05,070 --> 00:00:07,010 fields private. 3 00:00:07,380 --> 00:00:09,000 Long time stamp. 4 00:00:10,730 --> 00:00:18,530 Private string ID, by the way, the reason this is a long is because time stamp values can get really 5 00:00:18,530 --> 00:00:23,630 large and then we'll say private double amounts. 6 00:00:29,690 --> 00:00:34,820 And now the type field can be one of two values, withdraw and deposit. 7 00:00:35,150 --> 00:00:39,110 So what I'm going to do is create an enum named type. 8 00:00:42,640 --> 00:00:46,570 With two constants withdraw and deposit. 9 00:00:49,700 --> 00:00:51,530 And Harold, declare a private field. 10 00:00:53,850 --> 00:00:56,760 Of type, type, named type. 11 00:00:59,620 --> 00:01:04,420 Now, a lot of constructor public transaction they receives for parameters. 12 00:01:05,200 --> 00:01:07,480 On second thought we can just auto generate this. 13 00:01:14,060 --> 00:01:14,810 All right. 14 00:01:16,040 --> 00:01:18,650 We'll add a copy constructor by copying this one. 15 00:01:21,530 --> 00:01:26,450 And instead of receiving values from four different parameters, we're going to receive values from 16 00:01:26,450 --> 00:01:29,480 a source object transaction source. 17 00:01:30,420 --> 00:01:38,550 This duct tape equals sauce, duct tape, source timestamp, source that I.D. and sauce that amounts. 18 00:01:41,200 --> 00:01:44,740 OK, now we're going to auto generate the getters and setters. 19 00:01:46,000 --> 00:01:46,660 Pretty easy. 20 00:01:47,990 --> 00:01:51,960 And now back on learn the parts you go here. 21 00:01:53,950 --> 00:01:58,000 Task number six was to convert the time stem field into a debt. 22 00:01:58,580 --> 00:02:01,870 Accordingly, if we scroll back to the requirements. 23 00:02:07,540 --> 00:02:11,980 Remember, you should always write unit tests for logic that is considered meaningful. 24 00:02:12,400 --> 00:02:18,070 So inside of the test folder, we're going to create a file named transaction. 25 00:02:19,280 --> 00:02:19,970 Tests. 26 00:02:23,800 --> 00:02:26,740 And I believe there was something on there in the part we had to import. 27 00:02:26,770 --> 00:02:27,820 Let me just have a look. 28 00:02:28,390 --> 00:02:32,290 And indeed, we did will import the following snippet. 29 00:02:35,450 --> 00:02:37,850 We'll use autocomplete to get rid of these errors. 30 00:02:42,160 --> 00:02:42,440 OK. 31 00:02:42,460 --> 00:02:43,030 We should be good. 32 00:02:45,120 --> 00:02:52,140 OK, now what we want to do is unit test our capability of converting this long value into a date. 33 00:02:52,590 --> 00:02:53,970 So I'm going to create a unit test. 34 00:02:59,440 --> 00:03:00,280 Public void. 35 00:03:01,640 --> 00:03:02,870 Correct date test. 36 00:03:08,550 --> 00:03:15,650 And now, if we go to any Web site that converts long values into a date, we can convert this one time 37 00:03:15,690 --> 00:03:21,000 stamp to human dates and we get back January 7th, 2019. 38 00:03:21,630 --> 00:03:25,350 So that means that we need to assert assert equals. 39 00:03:27,540 --> 00:03:30,090 We're expecting a value of, oh, seven. 40 00:03:31,240 --> 00:03:32,870 01 2019. 41 00:03:42,810 --> 00:03:47,220 When we call transaction date return dates. 42 00:03:50,870 --> 00:03:55,900 A method that does not exist yet, so back here inside of transaction Java. 43 00:03:56,300 --> 00:03:58,250 We're going to write code to make the test fail. 44 00:03:58,700 --> 00:04:02,540 So I'm going to write public string return dates. 45 00:04:04,570 --> 00:04:05,920 For now, just return high. 46 00:04:08,930 --> 00:04:10,640 And if you go back here. 47 00:04:14,480 --> 00:04:17,709 Figured the test fails now we just got to write code to make it pass. 48 00:04:17,980 --> 00:04:22,270 I left you a lot of hands on during the part, so if you were to look at the documentation, the date 49 00:04:22,270 --> 00:04:30,940 constructor returns a date based on the number of milliseconds since 1970, but our long value represents 50 00:04:30,940 --> 00:04:36,730 the number of seconds since 1970, so all we got to do is say. 51 00:04:38,600 --> 00:04:42,620 Dates date will create a new object of the debt class. 52 00:04:46,310 --> 00:04:51,050 For now will pass in the time stamp, which is the number of seconds since 1970. 53 00:04:51,350 --> 00:04:54,680 But remember, it's expecting the number of milliseconds. 54 00:04:55,010 --> 00:04:57,650 So what we're going to have to do is multiply by a thousand. 55 00:04:59,400 --> 00:05:04,440 So now we have our data object, we just got to format it into a string and we've already done this 56 00:05:04,440 --> 00:05:05,700 like two sections ago. 57 00:05:05,940 --> 00:05:11,790 So I'm going to skip the explanation and we'll go ahead and just create a new object of the simple date 58 00:05:11,800 --> 00:05:12,780 format class. 59 00:05:14,670 --> 00:05:21,210 And we're going to format our date to be in the form day, month, year. 60 00:05:22,680 --> 00:05:27,060 And using this format, we can format our date into a string. 61 00:05:28,550 --> 00:05:29,210 Perfect. 62 00:05:29,650 --> 00:05:31,070 Let's run our unit test. 63 00:05:32,550 --> 00:05:37,050 Go back to transactional tests, run the test. 64 00:05:39,560 --> 00:05:40,970 And we get an error. 65 00:05:42,030 --> 00:05:42,840 Expected. 66 00:05:43,910 --> 00:05:47,240 Negative 2013, but was. 67 00:05:48,630 --> 00:05:54,990 Oh, seven, oh, this is seven minus the one minus 2019. 68 00:05:55,320 --> 00:05:56,490 This should be a string. 69 00:05:57,670 --> 00:05:58,870 Well, we run our tests. 70 00:06:01,610 --> 00:06:02,240 And we're good. 71 00:06:05,130 --> 00:06:11,220 OK, now Task nine was to override equals and hash code, you can just generate them. 72 00:06:14,240 --> 00:06:15,470 Calls and hash code. 73 00:06:15,560 --> 00:06:16,130 OK. 74 00:06:18,300 --> 00:06:20,280 Import the object class. 75 00:06:25,140 --> 00:06:30,510 And now we want to make sure our objects are sortable from lowest time stamp to highest timestamp. 76 00:06:30,870 --> 00:06:34,380 And in order to sort our objects, they need to be comparable. 77 00:06:34,770 --> 00:06:41,850 That is, every transaction needs to implement the comparable interface implements comparable. 78 00:06:45,960 --> 00:06:51,930 And because we implemented the interface, we're signing a contract of behavior that forces us to override 79 00:06:51,930 --> 00:06:54,090 every method inside this interface. 80 00:06:54,540 --> 00:06:58,080 There is only one method, you know it very well, it's compared to. 81 00:07:03,880 --> 00:07:09,760 Compared to expect an integer, that integer is the result from comparing double dot compare. 82 00:07:10,670 --> 00:07:17,090 From comparing the timestamp of the current object, this timestamp against the timestamp of the one 83 00:07:17,090 --> 00:07:17,960 being passed in. 84 00:07:20,790 --> 00:07:26,520 This is going to be useful once we have hundreds of transactions inside of an array, the array is going 85 00:07:26,520 --> 00:07:32,970 to use this method to compare it to transaction objects at a time and based on each comparison, it's 86 00:07:32,970 --> 00:07:36,740 just going to know how to sort from lowest to highest anyways. 87 00:07:36,810 --> 00:07:39,120 Final task is to override to string. 88 00:07:39,840 --> 00:07:41,370 So we'll just generate it. 89 00:07:44,010 --> 00:07:46,480 But we're not going to use this format. 90 00:07:47,480 --> 00:07:49,520 Just copy the one from lowering the parts. 91 00:07:51,450 --> 00:07:52,470 Copy this over. 92 00:07:57,390 --> 00:07:59,490 And here will say. 93 00:08:00,750 --> 00:08:03,660 Return dates that start return date. 94 00:08:04,370 --> 00:08:10,440 OK, the final step is to always apply quality control in case the data being entered is faulty. 95 00:08:10,470 --> 00:08:11,850 You just never know. 96 00:08:13,060 --> 00:08:14,830 There's three hundred rows. 97 00:08:15,010 --> 00:08:16,840 One of the lines could be bad. 98 00:08:17,290 --> 00:08:22,750 We want to throw an unchecked exception, which basically forces the caller to fix their code and anticipate 99 00:08:22,750 --> 00:08:27,500 such a scenario instead of just passing it in that way, they're not sending over bad data. 100 00:08:28,840 --> 00:08:29,860 So we'll go back here. 101 00:08:31,700 --> 00:08:39,980 Now, time stamp is always valid because positive timestamp means seconds since 1970, and a negative 102 00:08:39,980 --> 00:08:43,190 timestamp is the time that comes before 1970. 103 00:08:43,490 --> 00:08:44,270 So that's fine. 104 00:08:44,270 --> 00:08:49,010 No matter what value we get, it shouldn't be null or blank. 105 00:08:49,010 --> 00:08:57,170 So our quality control that will say if ID is equal to known or indeed is blank. 106 00:08:59,250 --> 00:09:04,830 And also, the amount can't be negative, because the type, whether it's withdrawal or the opposite, 107 00:09:05,160 --> 00:09:09,600 it's going to determine whether we subtract or reduce the amount from the account balance. 108 00:09:09,900 --> 00:09:11,730 So we need to quality control that as well. 109 00:09:12,520 --> 00:09:14,040 Amount cannot be negative. 110 00:09:18,140 --> 00:09:22,250 In such a case, we need to throw a new illegal argument exception. 111 00:09:23,800 --> 00:09:25,450 Invalid params. 112 00:09:28,140 --> 00:09:32,490 We'll do the same thing inside the centres inside of it. 113 00:09:33,060 --> 00:09:34,410 We're going to make sure that the ID. 114 00:09:36,340 --> 00:09:37,360 It's not equal to no. 115 00:09:39,230 --> 00:09:40,190 Or if it's blank. 116 00:09:41,420 --> 00:09:45,680 In that case, we want to throw a new illegal argument exception. 117 00:09:48,100 --> 00:09:49,950 Invalid I.D.. 118 00:09:52,790 --> 00:09:59,480 And we'll do the same thing inside of amounts, if amount is smaller than zero. 119 00:10:01,020 --> 00:10:01,830 There are new. 120 00:10:03,640 --> 00:10:06,310 A legal argument exception. 121 00:10:08,720 --> 00:10:10,520 Invalid amount. 122 00:10:12,180 --> 00:10:12,620 That's it. 123 00:10:12,840 --> 00:10:14,460 Moving on to part six. 10892

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.