Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,450 --> 00:00:03,990
All right, we've set up our classes now we need to inject some logic into them.
2
00:00:05,250 --> 00:00:10,890
Going back to requirements, talked text, and from first glance, it seems that we need to force every
3
00:00:10,890 --> 00:00:13,590
child the class to override two common methods.
4
00:00:13,890 --> 00:00:15,510
Deposit and withdraw.
5
00:00:16,020 --> 00:00:20,670
And to do that, we need to define two abstract methods inside the parent class.
6
00:00:21,090 --> 00:00:22,740
So we'll go to account Java.
7
00:00:23,680 --> 00:00:24,880
And here we'll see.
8
00:00:26,080 --> 00:00:26,620
Public.
9
00:00:27,750 --> 00:00:35,340
Abstract void, and it will deposit some amount of money, double amounts.
10
00:00:36,570 --> 00:00:38,860
Now, a withdrawal can be successful or it can fail.
11
00:00:38,880 --> 00:00:40,050
So here we'll say public.
12
00:00:42,280 --> 00:00:44,410
Abstract bullying.
13
00:00:46,340 --> 00:00:48,440
That can withdraw some amount of money.
14
00:00:55,340 --> 00:01:01,370
All right, and as we override, deposit and withdraw, we need to define this protected method inside
15
00:01:01,370 --> 00:01:02,450
of account Java.
16
00:01:08,700 --> 00:01:12,810
Remember, that protected means this method is only accessible from within its children.
17
00:01:13,200 --> 00:01:16,200
It's not public, which means you can't access it from anywhere.
18
00:01:16,440 --> 00:01:18,650
It's protected only child.
19
00:01:18,650 --> 00:01:23,120
The classes, checking savings and loan can access the ruined method.
20
00:01:23,770 --> 00:01:26,070
Anyways, we seem to be getting an error.
21
00:01:26,550 --> 00:01:30,840
OK, got an important decimal format before we can use it, and we're good.
22
00:01:31,650 --> 00:01:37,350
And now remember that if a parent defines an abstract method, the child class is forced to override
23
00:01:37,350 --> 00:01:37,470
it.
24
00:01:37,950 --> 00:01:39,060
So we'll go to checking.
25
00:01:39,480 --> 00:01:41,100
That's why we're seeing these errors.
26
00:01:41,430 --> 00:01:45,390
Checking needs to provide its own logic for deposit and withdraw.
27
00:01:46,440 --> 00:01:49,130
OK, so I'll just override them for now.
28
00:01:50,550 --> 00:01:52,470
We won't provide any logic just yet.
29
00:01:53,160 --> 00:01:54,930
Not until we write unit tests.
30
00:01:56,450 --> 00:01:59,320
Checking we'll do the same thing for savings.
31
00:02:01,720 --> 00:02:02,470
And.
32
00:02:03,680 --> 00:02:06,140
Merge doing that to get rid of the areas for now.
33
00:02:12,540 --> 00:02:17,910
Now, the reason I'm not writing the logic just yet is because we need to unit test all of the behavior
34
00:02:17,910 --> 00:02:21,510
inside of the requirements that text filed before we write the code for it.
35
00:02:21,870 --> 00:02:26,700
That way, we make sure that any code we write, any logic we provide doesn't have any bugs.
36
00:02:27,030 --> 00:02:29,460
So long as every test passes, we know that we're good.
37
00:02:30,180 --> 00:02:35,730
So I'll go to a count tests that Java and I'll start by on commenting the accounts array.
38
00:02:36,570 --> 00:02:43,680
And that doesn't seem to be like a good amount of indentation, so I'll fix that and import the accounts
39
00:02:43,680 --> 00:02:44,280
class.
40
00:02:46,470 --> 00:02:51,060
And now, before running each test, we got to make sure the array is being populated first, so we'll
41
00:02:51,060 --> 00:02:57,300
start by annotating a method with before this before method is going to run before each test.
42
00:02:57,840 --> 00:02:59,040
Public void setup.
43
00:03:00,330 --> 00:03:05,640
Where we set up our accounts are by going back over to learn the parts and populating it with three
44
00:03:05,640 --> 00:03:06,390
objects.
45
00:03:07,680 --> 00:03:08,340
Checking.
46
00:03:09,960 --> 00:03:10,980
Savings.
47
00:03:13,280 --> 00:03:14,360
That did not work.
48
00:03:19,400 --> 00:03:19,970
And loan.
49
00:03:22,380 --> 00:03:23,160
OK, perfect.
50
00:03:23,190 --> 00:03:26,220
We're going to start by unit testing the behavior for withdrawing.
51
00:03:26,670 --> 00:03:31,860
We want to make sure the correct amount gets withdrawn from the checking account under normal circumstances.
52
00:03:32,520 --> 00:03:35,340
So what we'll do is create a unit test.
53
00:03:36,770 --> 00:03:39,620
Public void would draw.
54
00:03:42,300 --> 00:03:46,410
And what we need to do is withdraw from the checking account that's at index zero.
55
00:03:47,020 --> 00:03:48,390
So accounts.
56
00:03:50,060 --> 00:03:52,640
At Index zero, that would draw.
57
00:03:53,910 --> 00:03:56,610
And we're going to withdraw 14 40.
58
00:03:59,290 --> 00:04:01,780
Then we'll make an assertion assert equals.
59
00:04:03,550 --> 00:04:09,930
The assertion expects eighty four point five one after we get the account balance accounts out of like
60
00:04:09,970 --> 00:04:11,680
zero dark get balance.
61
00:04:17,720 --> 00:04:19,370
So instead of checking, not Java.
62
00:04:20,350 --> 00:04:23,500
We'll update the current balance, SuperDart set balance.
63
00:04:24,740 --> 00:04:28,220
By minus thing, the amount from the current balance.
64
00:04:30,340 --> 00:04:34,210
All right, and before we run our tests, let's just return true by default.
65
00:04:34,630 --> 00:04:36,040
We'll address that later on.
66
00:04:37,410 --> 00:04:39,780
Now we can run our test and see if it works.
67
00:04:43,140 --> 00:04:48,540
And it still fails, and it seems like the value is off by decimal points, because this is money,
68
00:04:48,540 --> 00:04:50,790
we're going to round to two decimal points.
69
00:04:51,180 --> 00:04:54,750
So what we can do is call the protected method super dot around.
70
00:04:57,040 --> 00:04:57,850
Right over here.
71
00:05:06,740 --> 00:05:07,670
Rerun your test.
72
00:05:11,100 --> 00:05:11,790
And perfect.
73
00:05:12,600 --> 00:05:16,860
OK, now looking back at the requirements, now we're going to unit test this behavior.
74
00:05:17,370 --> 00:05:23,610
The checking account charges an overdraft fee of five dollars and fifty cents if the amount being withdrawn
75
00:05:23,610 --> 00:05:25,260
exceeds the account balance.
76
00:05:25,500 --> 00:05:30,210
So we want to make sure this overdraft fee gets deducted if they try to withdraw more than what's in
77
00:05:30,210 --> 00:05:30,930
their balance.
78
00:05:31,260 --> 00:05:32,490
So back here?
79
00:05:33,520 --> 00:05:35,050
We'll create another unit tests.
80
00:05:36,340 --> 00:05:36,760
Test.
81
00:05:38,700 --> 00:05:43,140
And the unit test will be called overdraft public void overdraft.
82
00:05:44,660 --> 00:05:48,440
And we need to withdraw from the checking account and index zero.
83
00:05:48,890 --> 00:05:53,110
So we'll say accounts and index zero, that would draw.
84
00:05:54,250 --> 00:05:58,900
And we'll be withdrawing fifteen thirty four point forty three.
85
00:06:01,680 --> 00:06:05,100
And then here we'll make an assertion will assert equals.
86
00:06:07,110 --> 00:06:15,750
The expected value is negative $15 and 42 cents after we get the account's balance accounts at index
87
00:06:15,750 --> 00:06:18,240
zero, don't get balance.
88
00:06:21,530 --> 00:06:24,380
Run the test, and it obviously should fail.
89
00:06:25,850 --> 00:06:27,950
Now we can write code to make it pass.
90
00:06:28,980 --> 00:06:30,840
So back in checking.
91
00:06:31,880 --> 00:06:32,660
We'll see if.
92
00:06:33,740 --> 00:06:40,100
The current balance to get balance minus the amount being withdrawn.
93
00:06:41,940 --> 00:06:43,010
Smaller than zero.
94
00:06:46,410 --> 00:06:52,020
Then we'll update the current balance, super accept balance, super tight get balance.
95
00:06:54,380 --> 00:06:55,970
Minus amounts.
96
00:06:57,050 --> 00:06:59,630
Minus five dollars and fifty cents.
97
00:07:00,970 --> 00:07:01,870
But hold on a second.
98
00:07:01,900 --> 00:07:03,640
This seems like a pretty important value.
99
00:07:03,670 --> 00:07:06,220
So it'd be safer to use a constant tear instead.
100
00:07:06,670 --> 00:07:10,120
So what I'll do is I'll declare a private.
101
00:07:11,440 --> 00:07:16,390
Static final double overdraft fee.
102
00:07:18,500 --> 00:07:20,480
Is equal to five dollars and fifty cents.
103
00:07:21,630 --> 00:07:24,090
And will use that constant instead.
104
00:07:26,300 --> 00:07:29,330
Because there's no risk of accidentally changing a constant.
105
00:07:30,110 --> 00:07:35,360
All right, and in the event that this if statement gets executed, we want to break the entire function
106
00:07:35,360 --> 00:07:39,710
by returning crew here because obviously you don't want this to run.
107
00:07:40,040 --> 00:07:42,260
And then that's true and that will just mess everything up.
108
00:07:42,830 --> 00:07:46,430
So we'll go back to account tests, run the test.
109
00:07:49,950 --> 00:07:55,620
And once again, with doubles, we got the issue of having way too many decimal points, we're dealing
110
00:07:55,620 --> 00:07:58,440
with money, so we went around to two decimal places.
111
00:07:58,950 --> 00:08:00,690
So over here.
112
00:08:01,670 --> 00:08:04,610
And checking, we'll have to call SuperDart around.
113
00:08:10,580 --> 00:08:11,570
We were on the test.
114
00:08:17,540 --> 00:08:17,870
OK.
115
00:08:18,440 --> 00:08:22,220
Back door requirements, that text will a unit test this behavior?
116
00:08:22,490 --> 00:08:26,960
We want to make sure that withdrawal doesn't happen if the amount surpasses the overdraft limit.
117
00:08:27,500 --> 00:08:29,810
So we'll create a unit test.
118
00:08:33,429 --> 00:08:33,970
Public.
119
00:08:35,710 --> 00:08:36,280
Void.
120
00:08:38,000 --> 00:08:39,409
Overdraft limit.
121
00:08:42,679 --> 00:08:44,810
Inside, I'm going to withdraw.
122
00:08:50,080 --> 00:08:54,640
Seventeen twenty six from the checking accounts.
123
00:08:56,260 --> 00:09:00,730
And then we're going to assert that the resulting balance shouldn't change, it should remain.
124
00:09:01,330 --> 00:09:04,090
Uh, fifteen twenty four point five one.
125
00:09:06,510 --> 00:09:11,130
When we get the account balance accounts, zero, don't get balance.
126
00:09:12,080 --> 00:09:12,470
OK.
127
00:09:12,860 --> 00:09:13,790
Run the test.
128
00:09:16,320 --> 00:09:17,250
And it fails.
129
00:09:17,430 --> 00:09:19,770
Now we just got to write code to make it pass.
130
00:09:20,840 --> 00:09:23,090
Back here, we'll check if the current balance.
131
00:09:25,160 --> 00:09:30,320
If super don't get balance minus amounts.
132
00:09:32,310 --> 00:09:37,590
Is smaller than negative 200, then well, wait a second.
133
00:09:37,680 --> 00:09:42,750
This seems like an important value, and it would be safer once again to use a constant here instead.
134
00:09:43,260 --> 00:09:47,010
So we'll declare a private static.
135
00:09:48,040 --> 00:09:49,930
Final double.
136
00:09:51,350 --> 00:09:55,820
Constant named overdraft limit equal to $200.
137
00:09:59,620 --> 00:10:04,450
And we'll say if superdog, that balance minus amount is smaller than the overdraft limit.
138
00:10:06,990 --> 00:10:08,310
Then we'll just return false.
139
00:10:09,490 --> 00:10:11,260
That will break the entire function.
140
00:10:11,310 --> 00:10:12,720
Let's make this an if.
141
00:10:15,040 --> 00:10:15,670
And you know what?
142
00:10:15,760 --> 00:10:18,550
Let's just create a chain of if else.
143
00:10:20,110 --> 00:10:21,910
That looks a lot better to me.
144
00:10:24,060 --> 00:10:24,870
All right.
145
00:10:25,530 --> 00:10:26,880
We can rerun our test.
146
00:10:29,980 --> 00:10:31,570
And that works perfect.
147
00:10:32,820 --> 00:10:37,230
All right, back here, the next piece of behavior we're going to unit test is the withdrawal fee.
148
00:10:37,590 --> 00:10:42,810
We want to make sure that it's charged a $5 fee if they attempt to withdraw from a savings account.
149
00:10:43,350 --> 00:10:45,930
So we'll create a unit test.
150
00:10:47,670 --> 00:10:48,180
Test.
151
00:10:48,750 --> 00:10:51,990
Public void, withdrawal fee.
152
00:10:57,790 --> 00:11:03,700
And we're going to withdraw $100 from the savings accounts, accounts and index one.
153
00:11:04,300 --> 00:11:06,190
Well, withdraw $100.
154
00:11:07,710 --> 00:11:14,190
And then we're going to make an assertion that the resulting balance is twenty one hundred thirty six
155
00:11:14,190 --> 00:11:19,350
dollars point sixty cents as we get the current balance for the savings account.
156
00:11:20,130 --> 00:11:22,290
Count that index one, don't get balance.
157
00:11:23,580 --> 00:11:24,090
All right.
158
00:11:24,120 --> 00:11:25,050
Run the test.
159
00:11:28,070 --> 00:11:29,510
And it fails.
160
00:11:30,200 --> 00:11:36,380
Now we just got to write code to make it past so inside the redraw method for savings.
161
00:11:37,160 --> 00:11:41,210
We'll update the balance super set balance.
162
00:11:41,870 --> 00:11:45,290
We'll get the current balance, super Typekit balance.
163
00:11:46,420 --> 00:11:47,650
Minus the amount.
164
00:11:48,660 --> 00:11:50,310
Minus $5.
165
00:11:52,080 --> 00:11:57,360
Once again, $5, it seems like an important value, so we're going to declare it as a constant here,
166
00:11:57,360 --> 00:11:59,940
we'll say private static.
167
00:12:01,000 --> 00:12:02,260
Final double.
168
00:12:04,480 --> 00:12:05,350
What drove the.
169
00:12:08,900 --> 00:12:10,370
Is equal to $5.
170
00:12:13,720 --> 00:12:15,490
And here we'll use a constant instead.
171
00:12:18,980 --> 00:12:21,830
And, as always, will around to two decimal places.
172
00:12:26,890 --> 00:12:29,890
And return true to indicate that the withdrawal was successful.
173
00:12:30,550 --> 00:12:35,260
Now, usually in a savings account, you shouldn't be able to make a withdrawal that exceeds your balance.
174
00:12:35,680 --> 00:12:38,300
But it didn't say anything in the requirements tax.
175
00:12:38,320 --> 00:12:40,750
So whatever in the Java world, we're going to permit it.
176
00:12:42,400 --> 00:12:43,270
Run the test.
177
00:12:46,650 --> 00:12:47,520
And it passes.
178
00:12:49,000 --> 00:12:51,820
All right, we're going to continue with the remaining tasks in the next video.
15145
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.