Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,440 --> 00:00:06,060
All right, so we're done the hard part, we're done designing all of our classes, we wrote all of
2
00:00:06,060 --> 00:00:06,900
our unit tests.
3
00:00:06,930 --> 00:00:09,720
Now we just glue everything together inside men.
4
00:00:10,440 --> 00:00:13,560
So the first task was to create a new bank object.
5
00:00:13,590 --> 00:00:14,790
We're done that already.
6
00:00:15,090 --> 00:00:19,530
And the second task was to define a method that creates an account object and returns it.
7
00:00:19,890 --> 00:00:24,990
So what I'm going to do is define a public static method that returns an account.
8
00:00:26,450 --> 00:00:28,220
Called Create Object.
9
00:00:29,550 --> 00:00:34,470
And this method expects an array of string values, and from these values, it's going to create an
10
00:00:34,470 --> 00:00:35,010
object.
11
00:00:36,320 --> 00:00:39,620
Now you can expect the era of string values to have four elements.
12
00:00:39,830 --> 00:00:46,850
For example, let me just copy and paste one of those as a comment into here so you can expect an array
13
00:00:46,850 --> 00:00:51,920
with four elements where the first element tells us what kind of object we want to create, whether
14
00:00:51,920 --> 00:00:53,390
it's checking savings or loan.
15
00:00:53,720 --> 00:00:58,340
The second, third and fourth elements are actually used to create the object.
16
00:00:58,730 --> 00:01:02,330
So what we can actually do here is approach this one or two ways.
17
00:01:02,840 --> 00:01:08,600
We could create a switch statement that compares the first element against three possible cases.
18
00:01:09,200 --> 00:01:10,610
Case checking.
19
00:01:12,640 --> 00:01:15,970
And here we would create a checking object.
20
00:01:17,780 --> 00:01:21,380
Based on these values, we could do case savings.
21
00:01:26,030 --> 00:01:27,740
And create a Settings object.
22
00:01:29,040 --> 00:01:30,570
Or we could even do case lone.
23
00:01:31,880 --> 00:01:33,680
And then create a lone object.
24
00:01:35,070 --> 00:01:40,200
There is a reason why I don't like this method, and that's because it promotes copying and pasting,
25
00:01:40,800 --> 00:01:45,630
because if you think about it, let's just say the case is checking, then here you would just return
26
00:01:46,050 --> 00:01:47,310
new checking.
27
00:01:50,100 --> 00:01:52,650
Value add index one.
28
00:01:55,500 --> 00:01:56,610
Index two and three.
29
00:01:58,080 --> 00:02:03,720
There you would say, double that price double from the string value because our constructor expect
30
00:02:03,720 --> 00:02:04,230
to double.
31
00:02:06,520 --> 00:02:12,430
Now, so far, it's fine, but the issue is that savings and loan, they have the exact same constructor
32
00:02:12,430 --> 00:02:13,090
as checking.
33
00:02:13,390 --> 00:02:16,150
So you could literally just copy and paste this.
34
00:02:19,200 --> 00:02:22,200
And then just change the class name.
35
00:02:23,890 --> 00:02:29,860
But you know, me, I'm not a big fan of copying and pasting in this case, I could permit it because
36
00:02:29,860 --> 00:02:33,760
it's not always guaranteed that different classes are going to have the same constructor.
37
00:02:34,090 --> 00:02:35,340
But in this case they do.
38
00:02:35,350 --> 00:02:38,320
And you know me, I'm not a big fan of copying and pasting.
39
00:02:38,740 --> 00:02:42,610
So what I'm going to do is actually show you a dynamic way of creating objects.
40
00:02:44,650 --> 00:02:47,740
Go back to learn the part, I left you the syntax right here.
41
00:02:48,480 --> 00:02:49,270
Well, it over.
42
00:02:51,970 --> 00:02:53,770
So here I'm going to return.
43
00:02:55,060 --> 00:02:55,690
Following.
44
00:02:59,330 --> 00:03:04,670
First, you want to specify the class that you want to create an object from the class name includes
45
00:03:04,670 --> 00:03:08,180
the directories that you have to drill into until you get to it.
46
00:03:08,450 --> 00:03:10,940
Let's just say I want to reference the checking class.
47
00:03:11,180 --> 00:03:15,910
We would need to drill into source dot main notice here.
48
00:03:15,920 --> 00:03:17,380
It's not slight.
49
00:03:17,390 --> 00:03:19,280
That's just how you need to pass it into four name.
50
00:03:19,520 --> 00:03:23,720
So I would need to go to source Typekit main Typekit model.
51
00:03:24,770 --> 00:03:26,000
Typekit account.
52
00:03:26,540 --> 00:03:28,850
And here I would use Typekit checking.
53
00:03:29,510 --> 00:03:32,780
So to the string, I'm going to append dot checking.
54
00:03:35,850 --> 00:03:37,360
But obviously, we don't want to do that.
55
00:03:37,380 --> 00:03:41,250
We want to put values at index zero.
56
00:03:43,090 --> 00:03:46,480
So here we're specifying the class that we want to create an object from.
57
00:03:46,750 --> 00:03:49,330
This could be either checking savings or loan.
58
00:03:49,870 --> 00:03:52,360
And then we want to get the constructor for that class.
59
00:03:52,630 --> 00:03:59,170
Lucky for us, checking savings and loan, all of them share the same constructor string string double.
60
00:03:59,920 --> 00:04:03,820
And this line is where you basically pass parameters into the constructor.
61
00:04:04,270 --> 00:04:05,500
Here I'll pass.
62
00:04:06,540 --> 00:04:07,160
The idea?
63
00:04:12,320 --> 00:04:13,220
The person's name.
64
00:04:14,630 --> 00:04:15,710
And their balance.
65
00:04:19,550 --> 00:04:24,830
We're getting an error because our function expects us to return an account object, but this isn't
66
00:04:24,830 --> 00:04:27,290
sure what type of class you're creating an object from.
67
00:04:27,320 --> 00:04:29,750
So we need to type, cast to account.
68
00:04:34,160 --> 00:04:34,800
All right.
69
00:04:34,820 --> 00:04:37,070
And now we get a lot of exceptions.
70
00:04:37,520 --> 00:04:41,900
Now we're not going to throw all of these exceptions separately, that would be a pain.
71
00:04:42,320 --> 00:04:47,930
Instead, consider that the exception class is the base class for every single exception, whether it's
72
00:04:47,930 --> 00:04:49,100
checked or unchecked.
73
00:04:49,550 --> 00:04:53,660
In other words, we can treat every exception in Java as type exception.
74
00:05:08,440 --> 00:05:13,570
All right, now, the last thing I want to stress is let's assume we got these values into the values
75
00:05:13,570 --> 00:05:14,110
parameter.
76
00:05:14,410 --> 00:05:19,090
This would be no different than writing this return new checking.
77
00:05:22,040 --> 00:05:24,470
Values one, values two and values three.
78
00:05:25,950 --> 00:05:26,400
That's all.
79
00:05:26,880 --> 00:05:31,170
But since we want to avoid repetition, we don't want to say new checking, new savings, new loan.
80
00:05:31,410 --> 00:05:36,690
We can use this syntax to create objects on the fly to dynamically create objects.
81
00:05:39,620 --> 00:05:39,920
All right.
82
00:05:39,950 --> 00:05:44,120
What I want to do is confirm that this works, so I'm going to call this method for men.
83
00:05:45,140 --> 00:05:50,720
We'll say create object an inside or in a pass in an array of string values.
84
00:05:55,510 --> 00:05:57,610
Glenn Close, all of these and double quotes.
85
00:06:11,140 --> 00:06:14,140
We get an error because this throws exception.
86
00:06:14,170 --> 00:06:16,540
So what we're going to do is try to run the code.
87
00:06:20,060 --> 00:06:23,630
And catch the exception if it fails, so we'll catch the exception.
88
00:06:24,810 --> 00:06:25,920
And just print it for now.
89
00:06:27,350 --> 00:06:28,850
E get message.
90
00:06:31,120 --> 00:06:31,570
All right.
91
00:06:32,110 --> 00:06:36,280
And a breakpoint right here and make sure that an object gets created.
92
00:06:40,700 --> 00:06:44,390
We get an illegal argument, exception, argument type mismatch.
93
00:06:47,440 --> 00:06:49,450
Oh, that makes a lot of sense.
94
00:06:50,210 --> 00:06:55,360
Assume are creating an object of the checking class the constructor expect to string string and double.
95
00:06:56,500 --> 00:07:01,450
As specified here, string string double, but we're passing in string, string and string.
96
00:07:01,840 --> 00:07:03,610
Accordingly, it throws an exception.
97
00:07:03,940 --> 00:07:08,200
We need to pass this argument into a double before passing it into the constructor.
98
00:07:12,080 --> 00:07:12,440
OK.
99
00:07:13,190 --> 00:07:15,170
Really useful printing that message, by the way.
100
00:07:18,910 --> 00:07:20,080
Let's hope this works.
101
00:07:21,830 --> 00:07:25,820
And it did, but we don't see anything because we're going to have to store this in a variable, so
102
00:07:25,820 --> 00:07:28,130
what I'll do is I'll just say count.
103
00:07:29,330 --> 00:07:32,830
Account is equal to create object restart the runtime.
104
00:07:35,770 --> 00:07:38,170
And wow, this is flood.
105
00:07:38,320 --> 00:07:40,100
I'll put a random print statement.
106
00:07:40,120 --> 00:07:40,780
Try it again.
107
00:07:44,760 --> 00:07:45,540
There it is.
108
00:07:45,720 --> 00:07:46,470
Perfect.
109
00:07:47,040 --> 00:07:51,720
Now we have a way of dynamically creating checking savings and loan objects.
110
00:07:52,500 --> 00:07:58,140
All right now, task for us to define a method that loads every single account from the accounts text
111
00:07:58,140 --> 00:07:59,340
file into the bank.
112
00:07:59,790 --> 00:08:03,090
So what we're going to do is define a method called load accounts.
113
00:08:03,780 --> 00:08:07,440
We'll say public static void load accounts.
114
00:08:08,720 --> 00:08:12,020
It's going to receive an array list of account objects.
115
00:08:16,200 --> 00:08:21,150
And inside of this method, we're going to run through every single accounts in the accounts are list.
116
00:08:22,320 --> 00:08:27,540
And the reason why things aren't working is because we're going to have to import the aerialist class.
117
00:08:36,860 --> 00:08:43,440
And for every account inside of the accounts list, we're going to add it to the bank bank account accounts.
118
00:08:46,530 --> 00:08:50,340
This is great and all, but where are we going to get the ArrayList of accounts from?
119
00:08:51,030 --> 00:08:55,800
We need a method that returns every single account from the accounts that tax filing.
120
00:08:57,920 --> 00:09:02,930
So inside, man, Java will create another method called return accounts public.
121
00:09:04,020 --> 00:09:07,620
Static, this method returns in a rare list of accounts.
122
00:09:07,950 --> 00:09:11,250
It returns the error list of accounts that we're going to use over here.
123
00:09:16,960 --> 00:09:18,070
Return accounts.
124
00:09:20,810 --> 00:09:24,740
And I already know it's going to throw a file not found exception, so we'll just do it right now.
125
00:09:26,060 --> 00:09:30,470
And now inside this method, we're going to create a new object of the final input stream class fan
126
00:09:30,470 --> 00:09:37,610
input stream if this is equal to new file input stream and this file input stream is going to connect
127
00:09:37,610 --> 00:09:38,870
to the accounts file.
128
00:09:41,330 --> 00:09:47,330
And then we're going to create a new object of the scanner class scanner scan is equal to a new object
129
00:09:47,450 --> 00:09:50,480
scanner that receives input from the file input stream.
130
00:09:54,030 --> 00:09:54,450
OK.
131
00:09:54,480 --> 00:09:55,740
Don't forget to import it.
132
00:09:58,660 --> 00:10:04,730
And then we'll initialize the array, a list of accounts that we're going to populate array list accounts
133
00:10:04,750 --> 00:10:12,310
accounts is equal to a new object of the ArrayList class that can store account objects.
134
00:10:14,550 --> 00:10:20,340
And now we want to scan every single line in the accounts file, so we'll say, well, Scan Dot has
135
00:10:20,340 --> 00:10:26,460
next line while the accounts file has a next line, we're going to add it to the list of accounts accounts
136
00:10:26,460 --> 00:10:27,060
don't add.
137
00:10:29,610 --> 00:10:36,810
And expects an account object to here will create objects and create objects, expects an array of four
138
00:10:36,810 --> 00:10:37,590
values.
139
00:10:38,220 --> 00:10:44,130
And if you look back at the accounts file, every line contains four values separated by a comma.
140
00:10:44,460 --> 00:10:47,400
How do we split the line into four values based on a comma?
141
00:10:49,190 --> 00:10:54,590
We can scan the entire line, scanned our next line and then say, does split.
142
00:10:55,510 --> 00:10:59,920
And we'll use the comma separator to split the line into an array of string values.
143
00:11:03,320 --> 00:11:03,710
OK.
144
00:11:03,770 --> 00:11:08,150
The last thing we got to do is just return the error list return accounts.
145
00:11:19,160 --> 00:11:23,660
And it expects us to handle the exception here, but you know what, I think it might make more sense
146
00:11:23,660 --> 00:11:27,380
to go back to create objects and try to run the following code.
147
00:11:32,340 --> 00:11:37,080
If it happens to fail, our catch method is going to catch the failure catch exception.
148
00:11:38,570 --> 00:11:40,190
Here we're just going to print the message.
149
00:11:41,230 --> 00:11:43,780
E get message and return, no.
150
00:11:46,720 --> 00:11:50,890
We're catching the exception from inside the function, which means the function is not going to throw
151
00:11:50,890 --> 00:11:51,910
an exception anymore.
152
00:11:52,630 --> 00:11:57,790
Whoever is calling it, they can rest assured the exception gets caught in here and we don't need this
153
00:11:57,790 --> 00:11:58,660
anymore as well.
154
00:12:03,160 --> 00:12:05,650
OK, now what I want to do is call this method for men.
155
00:12:07,790 --> 00:12:08,960
We'll try to run the code.
156
00:12:09,380 --> 00:12:16,310
Return accounts will store the result inside of an ArrayList variable that can store account objects.
157
00:12:19,050 --> 00:12:24,600
And if the code happens to fail, we're going to catch the file not found exception and print the message.
158
00:12:26,520 --> 00:12:27,870
E get message.
159
00:12:31,290 --> 00:12:34,350
I'll put a random prince statement before starting the debugger.
160
00:12:35,770 --> 00:12:38,680
And if everything works, we should see 16 elements.
161
00:12:39,040 --> 00:12:40,720
So we'll debug the runtime.
162
00:12:43,170 --> 00:12:43,830
Step over.
163
00:12:45,930 --> 00:12:46,980
And indeed, we do.
164
00:12:47,040 --> 00:12:52,050
This is perfect in the next video, we'll continue the remaining tasks.
15443
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.