All language subtitles for 011 Bank Management – Part 7 (Remaining Tasks)_en

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
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
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian Download
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,240 --> 00:00:05,010 In this video, we'll do the remaining tasks for the bank class now, task five of us to make the add 2 00:00:05,010 --> 00:00:06,570 transaction method private. 3 00:00:06,600 --> 00:00:12,270 The reason we're doing this is because we don't want to be able to add transactions from outside of 4 00:00:12,270 --> 00:00:12,840 this class. 5 00:00:14,910 --> 00:00:20,430 It's the bank that can add successful transactions or ignore failed transactions, so make sure this 6 00:00:20,430 --> 00:00:23,550 is private because the caller shouldn't have access to this method. 7 00:00:24,360 --> 00:00:24,940 All right. 8 00:00:24,960 --> 00:00:30,030 And now going back to requirements that text, there are still some pieces of behavior that we need 9 00:00:30,030 --> 00:00:31,730 to unit test over here. 10 00:00:31,740 --> 00:00:34,760 Depending on the account, some transactions may be denied. 11 00:00:34,770 --> 00:00:36,600 We're going to write to unit tests for this. 12 00:00:36,870 --> 00:00:42,060 We're going to check and see if the bank keeps a record of successful transactions and if it ignores 13 00:00:42,120 --> 00:00:43,350 failed transactions. 14 00:00:43,740 --> 00:00:49,320 And the last thing we want to unit test is if the bank can effectively deduct taxes from taxable accounts. 15 00:00:49,620 --> 00:00:53,580 In other words, from checking accounts because those are the only ones that we made taxable. 16 00:00:53,880 --> 00:00:54,210 All right. 17 00:00:54,210 --> 00:00:59,820 So we'll start writing some unit tests inside, test, create a new file. 18 00:01:00,030 --> 00:01:04,470 We'll call it bank tests the Java. 19 00:01:06,070 --> 00:01:11,830 And before we do anything, I think I left you the initial set up on learning the part, so I'll go 20 00:01:11,830 --> 00:01:12,580 to that right now. 21 00:01:17,200 --> 00:01:18,250 We'll copy this code. 22 00:01:20,460 --> 00:01:21,180 Over to here. 23 00:01:22,320 --> 00:01:23,610 Part the bank class. 24 00:01:25,180 --> 00:01:26,800 In part, the before annotation. 25 00:01:28,940 --> 00:01:30,650 Import the checking class. 26 00:01:32,930 --> 00:01:37,940 And that's all we've got to imports, all right now, we're going to create a unit test at test. 27 00:01:39,140 --> 00:01:43,640 Named successful transaction, so we'll say public void successful. 28 00:01:44,700 --> 00:01:45,750 Transactions. 29 00:01:52,120 --> 00:01:56,020 And inside of this method, we're going to make two transactions a deposit. 30 00:01:56,200 --> 00:02:00,840 Deposits always work because that's how we designed them, as well as a withdrawal, the withdrawal 31 00:02:00,850 --> 00:02:02,200 we're going to make sure is successful. 32 00:02:02,500 --> 00:02:06,190 So we'll copy the code over from learning the parts. 33 00:02:06,850 --> 00:02:08,320 We don't have to do it from scratch. 34 00:02:10,330 --> 00:02:11,440 Desktop bank, oh, yeah. 35 00:02:11,500 --> 00:02:15,220 These don't exist yet, that's fine, we'll have to import transaction. 36 00:02:18,670 --> 00:02:20,460 Import equals. 37 00:02:24,070 --> 00:02:30,490 So this basically confirms the bank has two transactions after a successful withdrawal and deposit. 38 00:02:30,820 --> 00:02:36,190 Now the bank class doesn't have a withdraw transaction or a deposit transaction, so we'll go back to 39 00:02:36,190 --> 00:02:37,300 Bank Java. 40 00:02:41,210 --> 00:02:45,410 You create a public void method called withdraw. 41 00:02:46,520 --> 00:02:47,390 Transaction. 42 00:02:48,860 --> 00:02:52,010 They received a transaction object transaction. 43 00:02:56,330 --> 00:03:01,700 The idea inside this transaction indicates the account where the transaction is going to take place. 44 00:03:01,940 --> 00:03:08,330 So what we're going to do is get the accounts that matches this Transaction ID transaction get ID. 45 00:03:10,870 --> 00:03:14,110 And based on whatever account that we get, we're going to withdraw. 46 00:03:15,820 --> 00:03:18,610 Whatever amount is listed inside the transaction. 47 00:03:21,140 --> 00:03:23,640 Now, remember, that would draw returns a Boolean. 48 00:03:23,880 --> 00:03:28,950 So we're going to check if the withdraw method returns true if it succeeds. 49 00:03:30,490 --> 00:03:33,490 In this case, we're going to add the transaction to the list. 50 00:03:35,490 --> 00:03:37,470 Opie now understand why this is private. 51 00:03:37,650 --> 00:03:42,510 That's because it's only the bank that should have the capability of adding or ignoring transactions. 52 00:03:42,750 --> 00:03:45,780 This method should not be accessible outside this class. 53 00:03:47,270 --> 00:03:51,770 We should still have an error over here, that's because we need to make a deposit transaction method. 54 00:03:52,100 --> 00:03:58,400 So here I'll make another public void method called deposit transaction. 55 00:03:59,610 --> 00:04:01,740 But expects a transaction object. 56 00:04:08,770 --> 00:04:10,810 Once again, we're going to get the accounts. 57 00:04:11,870 --> 00:04:16,730 Where this transaction needs to take place, so we're going to get the account that matches this transaction 58 00:04:16,730 --> 00:04:16,940 ID. 59 00:04:17,839 --> 00:04:23,420 And then from that account, we'll make the deposit transaction Typekit amount. 60 00:04:25,360 --> 00:04:29,930 And no need for an if statement here, because we designed deposits to always work. 61 00:04:29,950 --> 00:04:31,270 They don't even return a Boolean. 62 00:04:31,690 --> 00:04:35,050 And now we'll just say a transaction transaction. 63 00:04:35,960 --> 00:04:39,650 So going back to our test class, if we rerun the unit test. 64 00:04:41,850 --> 00:04:42,750 We get a failure. 65 00:04:46,580 --> 00:04:50,720 The method transaction from the type bank is not visible. 66 00:04:51,500 --> 00:04:52,730 Oh, and that's fine. 67 00:04:54,110 --> 00:04:55,610 Inside the main class. 68 00:04:56,690 --> 00:05:02,210 We're still trying to call our transaction, but remember that we made everything private so you can 69 00:05:02,210 --> 00:05:03,310 just remove all of this. 70 00:05:03,320 --> 00:05:04,160 We don't need it anymore. 71 00:05:04,220 --> 00:05:06,470 That was just for the last video. 72 00:05:08,340 --> 00:05:09,870 OK, we'll proceed. 73 00:05:12,800 --> 00:05:15,020 And the test should work perfect. 74 00:05:19,860 --> 00:05:22,450 OK, going back to requirements not taxed. 75 00:05:23,230 --> 00:05:26,110 Remember that this requirement applies to unit tests. 76 00:05:26,230 --> 00:05:29,020 Now we want to check if failed transactions are denied. 77 00:05:29,350 --> 00:05:34,090 So instead of bank test that Java, we're going to create another unit test test. 78 00:05:36,490 --> 00:05:37,610 Public void. 79 00:05:37,630 --> 00:05:40,960 I'm going to call the unit test failed transactions. 80 00:05:42,440 --> 00:05:45,500 And failed, you know, what will make this singular? 81 00:05:46,610 --> 00:05:50,990 And inside a failed transaction, we're going to make a withdrawal that is designed not to work, a 82 00:05:50,990 --> 00:05:52,490 withdrawal that returns false. 83 00:05:53,060 --> 00:05:55,640 I should already have something set up for you to learn the parts. 84 00:05:55,730 --> 00:05:57,050 I do not. 85 00:05:57,160 --> 00:05:58,130 Well, that's surprising. 86 00:05:58,430 --> 00:06:02,360 So what I'll do is I'll just say this bank that would draw. 87 00:06:04,120 --> 00:06:05,800 I'm going to create a new transaction. 88 00:06:08,650 --> 00:06:09,610 Type would draw. 89 00:06:17,020 --> 00:06:19,200 We can give this any time stamp, it doesn't matter. 90 00:06:21,560 --> 00:06:26,690 The transaction is going to take place inside of this checking account, so we'll copy the idea of this 91 00:06:26,690 --> 00:06:29,270 checking account over here. 92 00:06:31,180 --> 00:06:35,110 And I'm going to make a transaction of a million dollars that shouldn't work. 93 00:06:36,990 --> 00:06:41,140 And now, if you run this test, I believe it should already work because we've already set up the statement. 94 00:06:42,160 --> 00:06:43,090 And perfect. 95 00:06:46,250 --> 00:06:51,470 Before we continue, I'm going to go inside Bank Dot Java, and I want to make these two methods private. 96 00:06:51,920 --> 00:06:55,340 I don't want them being accessed from anywhere except the bank class. 97 00:06:56,510 --> 00:06:59,130 And then what I'm going to do is create a public method. 98 00:06:59,720 --> 00:07:03,140 Public void called execute transaction. 99 00:07:05,080 --> 00:07:07,210 They receives a transaction object. 100 00:07:09,590 --> 00:07:14,360 And depending on what that transaction is, so we'll say switch transaction. 101 00:07:15,730 --> 00:07:16,360 Get type. 102 00:07:18,920 --> 00:07:25,340 If the transaction ends up being of type would draw, then we're going to call it withdraw transaction. 103 00:07:26,740 --> 00:07:29,380 And if it happens to be a tape deposit. 104 00:07:30,450 --> 00:07:32,460 Then we'll call deposit transaction. 105 00:07:34,040 --> 00:07:34,490 OK. 106 00:07:34,520 --> 00:07:40,040 And now if you go back the bank tasked Java, I can just say this that bank execute transaction. 107 00:07:44,530 --> 00:07:45,460 Copy that over. 108 00:07:47,840 --> 00:07:49,550 Can you rerun all of our tests? 109 00:07:55,790 --> 00:07:59,810 We made a mistake expected to, but was three up. 110 00:08:00,410 --> 00:08:02,480 I made a very silly mistake. 111 00:08:02,810 --> 00:08:06,440 Never forget the break your word when you're using a switch. 112 00:08:08,970 --> 00:08:10,620 We're running our tests. 113 00:08:11,450 --> 00:08:15,270 See, that's why our unit tests are so useful, because they'll catch your bug just like that. 114 00:08:19,820 --> 00:08:24,080 OK, that's two out of three unit tests that were done, the final piece of behavior we need to test 115 00:08:24,080 --> 00:08:27,170 is the bank deducting taxes from taxable accounts. 116 00:08:27,500 --> 00:08:33,650 So what I'm going to do is go back to bank tests and I'll create a unit test test. 117 00:08:35,010 --> 00:08:39,419 Public void and the unit test is going to be called tax deduction. 118 00:08:43,030 --> 00:08:47,470 And here what I'm going to do is only execute a single transaction for one account. 119 00:08:47,860 --> 00:08:51,370 So we'll go back here and that transaction is the following. 120 00:08:59,620 --> 00:09:06,370 Here we're making a single transaction of $4000 to a checking account, and the taxable income, I believe, 121 00:09:06,370 --> 00:09:07,320 was 3000. 122 00:09:07,630 --> 00:09:10,120 So our account should definitely get taxed. 123 00:09:10,750 --> 00:09:11,770 Going back here. 124 00:09:14,190 --> 00:09:20,310 The unit test is calling a deduct taxes method, and somehow this is going to deduct taxes from every 125 00:09:20,310 --> 00:09:22,830 single checking account inside of the bank object. 126 00:09:23,130 --> 00:09:25,590 And for this particular account? 127 00:09:29,190 --> 00:09:32,760 The remaining balance after they've been taxed should be the following. 128 00:09:33,120 --> 00:09:36,360 So what we're going to do is write code to make the test pass. 129 00:09:38,200 --> 00:09:43,960 Go over here and I'll create a public method void, deduct taxes. 130 00:09:48,910 --> 00:09:54,220 And I'm going to create a for each loop that runs through every single account in the accounts array 131 00:09:54,220 --> 00:09:54,640 list. 132 00:09:55,790 --> 00:09:59,900 And how do I check if an account is taxable or not? 133 00:10:00,140 --> 00:10:03,080 How do I check if something implements the taxable interface? 134 00:10:03,530 --> 00:10:06,250 Well, there is a very cool syntax that we can use. 135 00:10:06,260 --> 00:10:14,050 I left it for you on there in the parts we can check if taxable doc class that is assignable from account, 136 00:10:14,330 --> 00:10:15,110 get class. 137 00:10:16,330 --> 00:10:20,890 Basically, we're checking if this particular account implements the taxable interface. 138 00:10:23,660 --> 00:10:31,100 Then you can typecast our account to taxable taxable, taxable is equal to or typecast it. 139 00:10:34,640 --> 00:10:41,000 And here what we're going to do is tax the account, we know that taxable objects should implement a 140 00:10:41,000 --> 00:10:41,930 tax method. 141 00:10:42,320 --> 00:10:44,630 So back here, we'll say. 142 00:10:45,870 --> 00:10:46,590 Taxable. 143 00:10:47,590 --> 00:10:55,330 Don't tax the tax method, expect an income, so we'll get the income for this taxable accounts. 144 00:10:56,410 --> 00:10:59,230 OK, now how do we get the income of our accounts? 145 00:11:01,420 --> 00:11:02,740 I'm going to create a private. 146 00:11:05,360 --> 00:11:11,480 Double method called Get Income Notice that I'm making this method private because I only want to access 147 00:11:11,480 --> 00:11:15,100 it inside this class, I don't want the caller to have access to this method. 148 00:11:16,640 --> 00:11:19,460 It'll take one argument or one parameter, I should say. 149 00:11:19,490 --> 00:11:20,720 Taxable accounts. 150 00:11:22,690 --> 00:11:28,570 And inside what I'm going to do is get every single transaction that belongs to this account. 151 00:11:28,660 --> 00:11:37,400 So I'll say transaction transactions is equal to get transactions for this particular account account 152 00:11:37,420 --> 00:11:38,110 dot. 153 00:11:39,250 --> 00:11:41,040 Should be get I.D.. 154 00:11:42,720 --> 00:11:48,240 However, the taxable interface doesn't have a get ID method or anything, except this one method over 155 00:11:48,240 --> 00:11:48,510 here. 156 00:11:48,720 --> 00:11:51,780 So what we need to do is typecast as the checking. 157 00:11:54,990 --> 00:11:56,640 Put a bracket around both. 158 00:12:04,230 --> 00:12:05,800 And I think we need to impart this. 159 00:12:08,250 --> 00:12:08,880 And now we're good. 160 00:12:09,450 --> 00:12:14,010 All right, and so this basically gets every single transaction for this account. 161 00:12:14,020 --> 00:12:19,350 What we could do is create a for a loop that runs through every single transaction and take the sum. 162 00:12:19,740 --> 00:12:22,580 But if you can use a stream, you should use a stream. 163 00:12:22,590 --> 00:12:26,820 So what I'll do is return or raise dot stream. 164 00:12:28,170 --> 00:12:31,440 We'll create a stream of elements out of the transactions array. 165 00:12:33,900 --> 00:12:35,850 And then we're going to map the area to double. 166 00:12:36,420 --> 00:12:41,370 So we're basically going to map every single element in the transactions array to a double value will 167 00:12:41,370 --> 00:12:43,260 map every single transaction. 168 00:12:49,260 --> 00:12:51,480 To a double value, so you could just say. 169 00:12:53,110 --> 00:12:55,360 Transaction get amount. 170 00:12:56,530 --> 00:12:57,670 But that would be a mistake. 171 00:12:58,270 --> 00:12:58,900 Think about it. 172 00:12:59,320 --> 00:13:05,350 What if the transaction is off type withdraw, then the amount we return should be a negative, not 173 00:13:05,350 --> 00:13:05,980 positive. 174 00:13:06,400 --> 00:13:11,440 So for once, instead of just having this one liner, we're going to have an entire block of code where 175 00:13:11,440 --> 00:13:14,260 we compare the transaction type. 176 00:13:16,800 --> 00:13:18,780 Against two possible cases. 177 00:13:20,290 --> 00:13:21,280 Case would draw. 178 00:13:24,070 --> 00:13:28,480 We want to return negative transaction, get amount. 179 00:13:30,490 --> 00:13:35,200 And Case Dep., we want to return transaction. 180 00:13:36,420 --> 00:13:37,440 Don't get him out. 181 00:13:39,100 --> 00:13:41,230 Default returns zero. 182 00:13:42,720 --> 00:13:43,050 OK. 183 00:13:43,680 --> 00:13:49,620 And so at this point, our stream of transaction elements is going to be mapped to a stream of double 184 00:13:49,620 --> 00:13:50,190 values. 185 00:13:50,490 --> 00:13:54,360 So here we'll just take the sum of every single element and return that. 186 00:13:56,040 --> 00:14:02,070 This terminal operation is going to return the sum of every single element in the stream, and now we 187 00:14:02,070 --> 00:14:02,790 should be good. 188 00:14:03,390 --> 00:14:06,510 We'll go back to bank test each Java run the unit test. 189 00:14:08,790 --> 00:14:09,540 Perfect. 190 00:14:13,790 --> 00:14:16,160 Now we're going to confirm that all of our tests pass. 191 00:14:20,240 --> 00:14:20,750 And they do. 192 00:14:21,650 --> 00:14:26,480 This gives me comfort that all of the meaningful logic we implemented doesn't have any bugs and that 193 00:14:26,480 --> 00:14:27,200 can continue. 194 00:14:27,530 --> 00:14:28,820 See you in part eight. 17735

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