All language subtitles for 008 Bank Management – Part 5_en
Afrikaans
Akan
Albanian
Amharic
Arabic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Simplified)
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
English
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranî)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
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.