Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
1
00:00:01,310 --> 00:00:04,240
Welcome back to your first coding challenge
2
2
00:00:04,240 --> 00:00:05,523
of this section.
3
3
00:00:07,170 --> 00:00:10,950
So now it's time to finally put everything that you learned
4
4
00:00:10,950 --> 00:00:14,400
in the section so far into practice.
5
5
00:00:14,400 --> 00:00:15,720
So in this section,
6
6
00:00:15,720 --> 00:00:18,490
I want you to use a Constructor Function
7
7
00:00:18,490 --> 00:00:22,550
in order to implement a very simple car all right?
8
8
00:00:22,550 --> 00:00:26,470
So for this purpose, a car has just a make
9
9
00:00:26,470 --> 00:00:28,530
and a speed property,
10
10
00:00:28,530 --> 00:00:32,080
and the speed is simply the current speed of the car
11
11
00:00:32,080 --> 00:00:35,000
measured in kilometers per hour,
12
12
00:00:35,000 --> 00:00:38,600
then I want you to implement an accelerate method
13
13
00:00:38,600 --> 00:00:41,720
that will increase the car speed by 10,
14
14
00:00:41,720 --> 00:00:45,370
and it would also log the new speed to the console,
15
15
00:00:45,370 --> 00:00:48,100
then another method called brake,
16
16
00:00:48,100 --> 00:00:50,730
which will then decrease the speed
17
17
00:00:50,730 --> 00:00:53,840
but only by five all right?
18
18
00:00:53,840 --> 00:00:58,040
And finally I want you to use this test data down here
19
19
00:00:58,040 --> 00:01:00,470
to implement these two cars.
20
20
00:01:00,470 --> 00:01:03,390
So basically to create two car objects
21
21
00:01:03,390 --> 00:01:06,640
and then experiment with calling the two methods
22
22
00:01:06,640 --> 00:01:10,080
that we just created on each of the objects.
23
23
00:01:10,080 --> 00:01:12,770
And of course you should use all the knowledge
24
24
00:01:12,770 --> 00:01:15,990
from the previous lectures to doing this.
25
25
00:01:15,990 --> 00:01:18,980
So I hope that this is a fun challenge
26
26
00:01:18,980 --> 00:01:20,870
that's not too hard.
27
27
00:01:20,870 --> 00:01:22,860
So take all the time that you need
28
28
00:01:22,860 --> 00:01:26,263
and I see you back here when you're ready with my solution.
29
29
00:01:29,770 --> 00:01:34,610
All right so hopefully you did that successfully,
30
30
00:01:34,610 --> 00:01:36,620
so let's get started here,
31
31
00:01:36,620 --> 00:01:41,050
so we create the Constructor Function for car
32
32
00:01:41,050 --> 00:01:43,490
and one more time with a capital C
33
33
00:01:44,350 --> 00:01:49,110
and then we want each car object to have a make and a speed
34
34
00:01:49,110 --> 00:01:51,090
and so that's the arguments
35
35
00:01:51,090 --> 00:01:53,780
that we're gonna pass into this function.
36
36
00:01:53,780 --> 00:01:56,940
And then just as before under this property,
37
37
00:01:56,940 --> 00:02:00,970
we will set the make to the make that we receive
38
38
00:02:00,970 --> 00:02:01,950
and the speed,
39
39
00:02:01,950 --> 00:02:04,083
to the speed that we receive as well.
40
40
00:02:05,060 --> 00:02:08,493
And so this is basically always gonna work the same way.
41
41
00:02:09,930 --> 00:02:11,160
So as I mentioned,
42
42
00:02:11,160 --> 00:02:14,750
this is a pattern that developers came up with
43
43
00:02:14,750 --> 00:02:16,920
and so now we just simply follow this
44
44
00:02:16,920 --> 00:02:20,200
like a recipe all right?
45
45
00:02:20,200 --> 00:02:23,903
And with this, we can actually already create our two cars,
46
46
00:02:25,180 --> 00:02:30,180
so let's say the BMW is a new car
47
47
00:02:30,290 --> 00:02:33,760
and so remember this new operator here
48
48
00:02:33,760 --> 00:02:36,193
is what's gonna enable all of this to work.
49
49
00:02:37,330 --> 00:02:40,150
And so here the make is of course BMW
50
50
00:02:40,150 --> 00:02:43,820
and the speed is 120 kilometers per hour,
51
51
00:02:43,820 --> 00:02:48,820
which for my American friends is 75 miles per hour
52
52
00:02:49,300 --> 00:02:50,790
I believe
53
53
00:02:50,790 --> 00:02:53,223
so the next one is gonna be the Mercedes.
54
54
00:02:55,800 --> 00:02:57,060
So that's new car
55
55
00:02:58,200 --> 00:03:02,120
and at speed, 95 kilometers per hour okay?
56
56
00:03:05,900 --> 00:03:07,600
So let's just take a look
57
57
00:03:08,970 --> 00:03:09,803
and so yeah,
58
58
00:03:09,803 --> 00:03:12,820
that appears to be working just fine.
59
59
00:03:12,820 --> 00:03:16,730
And so now let's implement our two methods here,
60
60
00:03:16,730 --> 00:03:19,030
so accelerate and brake
61
61
00:03:19,030 --> 00:03:22,833
and of course we are not going to add the method right here.
62
62
00:03:23,750 --> 00:03:26,950
So we will not do this .accelerate
63
63
00:03:26,950 --> 00:03:29,400
because as we just learned before,
64
64
00:03:29,400 --> 00:03:31,760
that would be terrible for performance,
65
65
00:03:31,760 --> 00:03:34,773
especially if we had many, many car objects.
66
66
00:03:35,610 --> 00:03:38,725
So instead we will of course make use
67
67
00:03:38,725 --> 00:03:41,466
of prototypal inheritance.
68
68
00:03:41,466 --> 00:03:44,550
So we take the prototype property of car
69
69
00:03:44,550 --> 00:03:49,550
and to that, we add the accelerate property accelerate
70
70
00:03:52,380 --> 00:03:53,620
that's correct
71
71
00:03:53,620 --> 00:03:57,690
and we make it a method by passing in a function
72
72
00:03:58,610 --> 00:04:01,693
or actually by specifying a function here.
73
73
00:04:03,280 --> 00:04:04,690
So once again,
74
74
00:04:04,690 --> 00:04:06,810
we can use the This keyword in here
75
75
00:04:06,810 --> 00:04:09,360
because that is simply gonna be the object
76
76
00:04:09,360 --> 00:04:12,100
on which the method will be called
77
77
00:04:12,100 --> 00:04:15,080
and so that object will have the speed property
78
78
00:04:15,080 --> 00:04:18,313
and so here we can then increase that by 10.
79
79
00:04:21,470 --> 00:04:24,750
And then we can also log that to the console
80
80
00:04:25,730 --> 00:04:28,403
and we can even make use of course of the make.
81
81
00:04:29,870 --> 00:04:33,220
So this one wasn't specified in the text,
82
82
00:04:33,220 --> 00:04:35,420
but we can log a nice string, like this
83
83
00:04:36,640 --> 00:04:38,130
is going
84
84
00:04:38,130 --> 00:04:42,360
at this.speed
85
85
00:04:43,750 --> 00:04:46,010
and then kilometers per hour
86
86
00:04:46,010 --> 00:04:47,223
but again this part,
87
87
00:04:48,073 --> 00:04:50,223
you wouldn't have to implement like this.
88
88
00:04:51,350 --> 00:04:53,000
And now let's just take this here
89
89
00:04:54,280 --> 00:04:57,553
for the brake because it's gonna be pretty similar,
90
90
00:04:58,630 --> 00:04:59,720
so brake,
91
91
00:04:59,720 --> 00:05:01,710
and all we do then is to
92
92
00:05:01,710 --> 00:05:06,710
decrease the speed by five all right?
93
93
00:05:07,240 --> 00:05:11,053
And now let's just call this on the BMW a couple of times,
94
94
00:05:12,020 --> 00:05:15,223
so bmw.accelerate,
95
95
00:05:16,200 --> 00:05:17,863
and let's do that three times.
96
96
00:05:18,950 --> 00:05:20,380
And so after three times,
97
97
00:05:20,380 --> 00:05:25,230
the BMW is going at 150 kilometers per hour,
98
98
00:05:25,230 --> 00:05:28,320
so apparently that works just fine.
99
99
00:05:28,320 --> 00:05:30,370
Let's just add a brake here in the middle
100
100
00:05:34,890 --> 00:05:37,930
and so now we reduce the speed a little bit
101
101
00:05:37,930 --> 00:05:42,200
and then back up to 145 now okay?
102
102
00:05:42,200 --> 00:05:44,200
And that's actually it,
103
103
00:05:44,200 --> 00:05:47,230
that's all we had to do in this challenge,
104
104
00:05:47,230 --> 00:05:48,800
and maybe with this example,
105
105
00:05:48,800 --> 00:05:51,100
you can start to see the advantages
106
106
00:05:51,100 --> 00:05:54,520
of object oriented programming in action.
107
107
00:05:54,520 --> 00:05:56,910
So all the advantages that we talked about
108
108
00:05:56,910 --> 00:05:59,990
right in the first lecture of the section,
109
109
00:05:59,990 --> 00:06:02,380
and essentially the part where we learned
110
110
00:06:02,380 --> 00:06:04,590
that in object oriented programming,
111
111
00:06:04,590 --> 00:06:09,350
we pack both the functionality and the data into objects.
112
112
00:06:09,350 --> 00:06:12,160
And so that's exactly what we have here,
113
113
00:06:12,160 --> 00:06:14,170
so each of these objects,
114
114
00:06:14,170 --> 00:06:19,170
so BMW and Mercedes contains the state of the car,
115
115
00:06:19,260 --> 00:06:22,350
so the current speed and the make,
116
116
00:06:22,350 --> 00:06:24,780
and it also contains the functionality
117
117
00:06:24,780 --> 00:06:27,420
to manipulate its own data,
118
118
00:06:27,420 --> 00:06:31,010
so the accelerate and brake methods in this case
119
119
00:06:31,010 --> 00:06:34,650
are able to manipulate the speed, right?
120
120
00:06:34,650 --> 00:06:36,160
And at the same time,
121
121
00:06:36,160 --> 00:06:39,560
these two methods also form the public interface
122
122
00:06:39,560 --> 00:06:42,210
of this object, right?
123
123
00:06:42,210 --> 00:06:44,300
So right now the rest of our code
124
124
00:06:44,300 --> 00:06:47,010
can interact with these objects
125
125
00:06:47,010 --> 00:06:50,740
by calling the brake and the accelerate methods.
126
126
00:06:50,740 --> 00:06:52,473
Now in this case, of course,
127
127
00:06:52,473 --> 00:06:55,730
this is just a very small and isolated example,
128
128
00:06:55,730 --> 00:06:59,430
so it can still be hard to see the advantages of this,
129
129
00:06:59,430 --> 00:07:01,920
but maybe you can take a minute or two
130
130
00:07:01,920 --> 00:07:04,180
and compare this style of coding
131
131
00:07:04,180 --> 00:07:07,090
with the code that we have written up until this point
132
132
00:07:07,090 --> 00:07:08,180
in the course.
133
133
00:07:08,180 --> 00:07:11,090
All right, so at some point you will see
134
134
00:07:11,090 --> 00:07:14,650
that this is really a completely different way of thinking
135
135
00:07:14,650 --> 00:07:16,200
about our code,
136
136
00:07:16,200 --> 00:07:19,010
but anyway that's it for this challenge.
137
137
00:07:19,010 --> 00:07:20,060
In the next video,
138
138
00:07:20,060 --> 00:07:23,290
we are gonna talk about ESX classes,
139
139
00:07:23,290 --> 00:07:24,993
so I hope to see you there soon.
11707
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.