All language subtitles for 043 Contacts – Part 1 (Solution)_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,390 --> 00:00:02,820 In this video, we're going to cover the solution for part one. 2 00:00:05,260 --> 00:00:10,720 Each class that models an object was placed inside the model's folder, and the main class is by itself. 3 00:00:12,630 --> 00:00:17,880 We'll start with task one, and that was to add all the necessary fields to the contact class, and 4 00:00:17,880 --> 00:00:22,140 if you were to look back at the article, the fields were private string name. 5 00:00:23,050 --> 00:00:25,150 Private string, phone number. 6 00:00:28,140 --> 00:00:30,540 Private string birthdate. 7 00:00:36,200 --> 00:00:38,350 In private and age. 8 00:00:40,020 --> 00:00:45,840 And task to reminds us that if a class has failed, it needs to apply the big three steps, the first 9 00:00:45,840 --> 00:00:47,420 step is to create a constructor. 10 00:00:47,700 --> 00:00:49,710 It's only going to receive three parameters. 11 00:00:49,710 --> 00:00:50,580 String name. 12 00:00:53,030 --> 00:00:54,260 String phone number. 13 00:00:58,930 --> 00:01:00,670 And string birthdate. 14 00:01:07,040 --> 00:01:08,350 And you might be thinking, why not? 15 00:01:08,360 --> 00:01:14,480 For while the birth date needs to automatically determine the person's age, it doesn't make sense to 16 00:01:14,480 --> 00:01:17,990 ask the user how old they are if they have already given you their date of birth. 17 00:01:18,710 --> 00:01:19,130 All right. 18 00:01:19,580 --> 00:01:21,800 The constructor runs when you create a new object. 19 00:01:21,800 --> 00:01:24,860 So we're going to set every field in that object equal to a parameter. 20 00:01:25,190 --> 00:01:27,800 The star name, the stop phone number. 21 00:01:30,920 --> 00:01:32,060 Equals phone number. 22 00:01:35,220 --> 00:01:36,990 And they start birthdates. 23 00:01:43,440 --> 00:01:46,290 OK, so how do we get the age from the birth date? 24 00:01:47,100 --> 00:01:50,330 Back in the article, I left you a lot of hints on how to achieve this. 25 00:01:50,580 --> 00:01:54,990 And the first step was to create an object of the simple date format class. 26 00:01:56,330 --> 00:01:57,560 So we'll say formatter. 27 00:02:06,480 --> 00:02:10,289 Is equal to a new object of the simple date format class. 28 00:02:14,380 --> 00:02:18,530 And inside, we need to pass the format that we expect our dates to be in. 29 00:02:19,090 --> 00:02:22,760 They're going to have the format of month, month, day, day. 30 00:02:23,200 --> 00:02:24,010 Yea yea. 31 00:02:24,010 --> 00:02:24,670 Yea, yea. 32 00:02:26,470 --> 00:02:32,110 And make sure the EMS are upper case, because that's how the formatter interprets months, your next 33 00:02:32,110 --> 00:02:37,180 instruction was the research to pass the string value intimidates, and I hope you're able to figure 34 00:02:37,180 --> 00:02:37,610 it out. 35 00:02:40,670 --> 00:02:43,520 We can call the pass method from the formatter object. 36 00:02:49,320 --> 00:02:53,940 And what that's going to do is receive a tax value and from that string, it's going to return a date 37 00:02:53,950 --> 00:02:54,600 object. 38 00:02:58,850 --> 00:03:04,190 So I'm going to pass it the birth date string, and it's going to convert that string to an actual date 39 00:03:04,190 --> 00:03:05,330 object and return it. 40 00:03:05,780 --> 00:03:09,520 So we need to store the return value inside of a variable of type dates. 41 00:03:13,410 --> 00:03:14,910 I'll call it two dates. 42 00:03:16,330 --> 00:03:18,510 Because we're converting from a string to a date. 43 00:03:21,140 --> 00:03:26,300 OK, now the pass method throws a checked exception, we know it's a checked exception because Javas 44 00:03:26,300 --> 00:03:27,440 forcing us to catch it. 45 00:03:29,210 --> 00:03:34,880 Do not try catch the failure inside the constructor, whoever is calling the constructor, it's their 46 00:03:34,880 --> 00:03:36,220 job to handle the failure. 47 00:03:36,740 --> 00:03:41,270 So we're going to throw the exception from the constructor throws pass exception. 48 00:03:43,540 --> 00:03:48,490 So that whoever is calling the constructor, they're going to handle the failure, the constructor's 49 00:03:48,490 --> 00:03:51,250 only job should be to update Fields', nothing else. 50 00:03:55,120 --> 00:03:59,740 So going back in the article, the next step is to convert each date into the number of milliseconds 51 00:03:59,740 --> 00:04:00,880 since 1970. 52 00:04:02,580 --> 00:04:08,280 We can go to the documentation for the date class and look for a method that does this, as I scroll 53 00:04:08,280 --> 00:04:10,500 down, you'll see that many methods are deprecated. 54 00:04:10,530 --> 00:04:11,520 That's pretty crazy. 55 00:04:12,030 --> 00:04:18,510 But interesting enough, this one isn't it returns the number of milliseconds since January 1970 up 56 00:04:18,510 --> 00:04:22,280 until the specified date, and it returns it as a log. 57 00:04:22,290 --> 00:04:23,130 That's perfect. 58 00:04:31,320 --> 00:04:33,870 So I'll have to say long to Milli. 59 00:04:36,010 --> 00:04:39,730 Is equal to to date and from we're going to get the time. 60 00:04:42,020 --> 00:04:45,320 So this line converts the string to an actual date. 61 00:04:49,210 --> 00:04:53,770 And this line converts the date to the number of milliseconds since 1970. 62 00:05:00,800 --> 00:05:05,690 The last thing I want to do is get the current date and convert it to the number of milliseconds since 63 00:05:05,690 --> 00:05:11,900 January 1970, then I can get the difference between the two in milliseconds, which is basically going 64 00:05:11,900 --> 00:05:17,630 to be the person's age in milliseconds, and then we can easily convert from milliseconds to years. 65 00:05:20,670 --> 00:05:22,140 So we'll say long def. 66 00:05:24,870 --> 00:05:30,870 We can get today's date by just saying new dates, we're going to convert the current date to the number 67 00:05:30,870 --> 00:05:36,930 of milliseconds since 1970 and from today's date, we can subtract the birth date. 68 00:05:39,500 --> 00:05:44,690 So this is the number of milliseconds from 1970 until the person's birth, and this is the number of 69 00:05:44,690 --> 00:05:47,020 milliseconds from 1970 until today. 70 00:05:47,360 --> 00:05:50,630 So death is the person's age, but in milliseconds. 71 00:05:55,680 --> 00:05:59,380 But before we can continue, I did all of this in separate steps to walk you through it. 72 00:05:59,610 --> 00:06:00,840 I want to make the code shorter. 73 00:06:03,240 --> 00:06:04,650 So I'm going to add this right here. 74 00:06:10,320 --> 00:06:14,820 And now with just two lines, we're getting the person's age in milliseconds and the next instruction 75 00:06:15,060 --> 00:06:19,540 was free to research how to use the time unit class to convert from milliseconds. 76 00:06:19,740 --> 00:06:20,520 Today's. 77 00:06:25,950 --> 00:06:28,500 Your research would have a junior right time unit. 78 00:06:33,720 --> 00:06:39,720 Milliseconds, two days, and what that's going to do is take a value in milliseconds, in this case 79 00:06:39,720 --> 00:06:42,690 death, and convert it to days. 80 00:06:43,620 --> 00:06:45,930 So now we're going to get the person's age in days. 81 00:06:47,100 --> 00:06:52,590 And then if we divide the number of days by three hundred and sixty five, we'll get their age in years. 82 00:06:57,980 --> 00:07:01,500 But the age is an integer and the two days method returns along. 83 00:07:01,730 --> 00:07:04,640 So the final step is to typecast this long to. 84 00:07:15,220 --> 00:07:20,500 All right, we can finally test our code at the very top, you'll notice the line package models basically 85 00:07:20,500 --> 00:07:23,830 tells us Java, hey, the contact class is inside of a separate folder. 86 00:07:24,460 --> 00:07:26,030 So now inside main Java. 87 00:07:26,260 --> 00:07:28,720 We can import the class from the models folder. 88 00:07:34,300 --> 00:07:37,960 And we can also auto complete imports and TVs code just half way I. 89 00:07:45,020 --> 00:07:49,160 And now inside the main method, we can create a new object of the contact class. 90 00:07:50,310 --> 00:07:51,960 His name will be Alan Turing. 91 00:07:57,980 --> 00:08:00,620 With the following phone number, just some random number. 92 00:08:06,130 --> 00:08:07,510 And their birthdates. 93 00:08:12,920 --> 00:08:17,300 OK, I'm also going to print the object, even though we don't have a to string, I'll just leave it 94 00:08:17,300 --> 00:08:17,930 here for later. 95 00:08:19,240 --> 00:08:25,300 And here we get an error that's because of the contact constructor can throw a pass exception pass exception 96 00:08:25,300 --> 00:08:26,470 is a checked exception. 97 00:08:26,680 --> 00:08:30,820 And if you want to call this constructor, Jebba forces you to try to run the code. 98 00:08:35,289 --> 00:08:38,919 And if the code happens to fail, you need to catch the pass exception. 99 00:08:45,500 --> 00:08:47,710 And we'll just print the message that comes out of it. 100 00:08:54,290 --> 00:08:56,570 Then we're going to add a finally block, that prince. 101 00:08:59,960 --> 00:09:04,880 Process completes finally is always the last thing that runs regardless of the results. 102 00:09:07,140 --> 00:09:10,260 All right, now I'm going to go to break point and step into the constructor. 103 00:09:18,880 --> 00:09:21,100 Here we can see the parameters that were passed in. 104 00:09:22,140 --> 00:09:28,050 And this points to the current object that we just created, the stock names, that's the name field 105 00:09:28,050 --> 00:09:32,970 of the current object, equal to the parameter, the phone number updates, the phone number field, 106 00:09:33,420 --> 00:09:36,090 they stop birth date updates, the birth date field. 107 00:09:36,540 --> 00:09:39,330 And we're just going to step over the formatter object. 108 00:09:39,840 --> 00:09:42,120 I'm going to step over these function calls. 109 00:09:42,960 --> 00:09:45,240 This is Alan Turing's age in milliseconds. 110 00:09:45,810 --> 00:09:50,210 And in this last line, it's going to convert the age to year and update the field. 111 00:09:50,820 --> 00:09:54,450 And just like that, we created an object of the contact class. 112 00:09:55,700 --> 00:10:00,290 And if you keep stepping over the contact variable stores, a reference to the object we just created. 113 00:10:04,030 --> 00:10:07,810 And finally, it's the last thing that runs, regardless of the result in this case, we know that the 114 00:10:07,810 --> 00:10:09,010 process is complete. 115 00:10:13,610 --> 00:10:16,660 Now, what happens if I change them month, something that doesn't make any sense? 116 00:10:18,090 --> 00:10:22,530 I would expect the parties function to not be able to pass the state and throw an exception. 117 00:10:23,280 --> 00:10:24,780 I'm going to relaunch the debugger. 118 00:10:38,940 --> 00:10:43,990 But instead, it falsely interprets the input, it doesn't make sense for the H to be negative. 119 00:10:44,010 --> 00:10:44,730 That's not good. 120 00:10:50,280 --> 00:10:55,470 The past method should have thrown an exception, it should not have been able to pass the state and 121 00:10:55,470 --> 00:11:00,450 the task was free to research how to stop the formatter from being lenient when it's passing the string, 122 00:11:01,230 --> 00:11:04,830 the string that we pass and needs to strictly adhere to the format. 123 00:11:04,830 --> 00:11:06,570 Month, month, day, day. 124 00:11:06,630 --> 00:11:08,850 Yea yea yea yea that we specified. 125 00:11:10,310 --> 00:11:15,080 I told you to look inside the documentation for a method that specifies whether the date passing should 126 00:11:15,080 --> 00:11:20,330 be lenient, and I hope you are able to find the method lenient, which expects a boolean. 127 00:11:27,970 --> 00:11:31,480 And if we go back to our code, we're going to set the leniency to false. 128 00:11:42,430 --> 00:11:47,770 And now I expect that it's going to strictly adhere to the format we Pastan and it's not going to tolerate 129 00:11:47,770 --> 00:11:48,670 anything else. 130 00:11:51,590 --> 00:11:52,940 Relaunching the debugger. 131 00:11:58,340 --> 00:12:01,790 I'm going to keep stepping into the constructor until we reach the pass function. 132 00:12:08,720 --> 00:12:11,020 Which is going to fail and throw a pass exception. 133 00:12:11,940 --> 00:12:14,850 Here we catch the checked exception and print its message. 134 00:12:17,850 --> 00:12:23,520 In this case, it says that the date was unpassable, as always, finally is the last thing that runs 135 00:12:23,520 --> 00:12:27,310 and whether the process succeeds or fails, we know that it's complete. 136 00:12:27,780 --> 00:12:28,920 That's all for part one. 13465

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