java-development-for-beginners-learnit / 13 - Object-oriented programming /001 Object-oriented programming Basics_en.srt
Tan115's picture
Add files using upload-large-folder tool
f99add3 verified
Raw
History Blame Contribute Delete
21.1 kB
1
00:00:05,000 --> 00:00:11,000
Today, we start super important topic, many even of engineers couldn't apply in practice all aspects
2
00:00:11,000 --> 00:00:17,000
of this knowledge because to understand this topic from all sides, you need to practice a lot as you
3
00:00:17,000 --> 00:00:21,000
get more experience or information, which I'm going to share with you will start to make sense.
4
00:00:22,000 --> 00:00:26,000
I spent a lot of time to select the right person to make complex things easier.
5
00:00:26,000 --> 00:00:30,000
And today I will try to explain you object oriented programming.
6
00:00:30,000 --> 00:00:33,000
So today, let's start from OPIS basics.
7
00:00:33,000 --> 00:00:38,000
In this lesson we'll learn theory and I will explain in simple words what object oriented programming
8
00:00:38,000 --> 00:00:42,000
is, where we are going to discuss what object oriented programming means.
9
00:00:42,000 --> 00:00:48,000
And it is always better to understand first why we need or be and how it can help us in creating software.
10
00:00:49,000 --> 00:00:54,000
We'll briefly discuss functional programming approach so you would be able to understand the difference
11
00:00:54,000 --> 00:01:00,000
and better understand OPIS approach and take into account that this is a lesson about all basics.
12
00:01:00,000 --> 00:01:03,000
We'll talk about key object oriented programming principles.
13
00:01:03,000 --> 00:01:08,000
So let's start let's come up with a definition of OPIS first.
14
00:01:08,000 --> 00:01:13,000
There are multiple definitions of what is or B, I'm going to share with you different ones.
15
00:01:13,000 --> 00:01:20,000
And my own Wikipedia tells us that OPIS is programming paradigm based on the concept of object as a
16
00:01:20,000 --> 00:01:26,000
definition of OPIS is the next one or is a computer programming model that organizes software design
17
00:01:26,000 --> 00:01:29,000
around the objects rather than functions.
18
00:01:29,000 --> 00:01:33,000
This definition clearly describes the difference between all AP and functional programming.
19
00:01:33,000 --> 00:01:36,000
We'll talk about functional programming a little bit later.
20
00:01:36,000 --> 00:01:42,000
My own definition sounds like this object oriented programming is a software design approach in which
21
00:01:42,000 --> 00:01:44,000
concept of object occupies the first place.
22
00:01:45,000 --> 00:01:48,000
In each definition we see that the concept of object is mentioned.
23
00:01:49,000 --> 00:01:52,000
OK, then let's find the answer on the next question.
24
00:01:52,000 --> 00:01:55,000
What is the object and object oriented programming?
25
00:01:55,000 --> 00:01:56,000
Everything is an object.
26
00:01:57,000 --> 00:01:58,000
Array is our object.
27
00:01:58,000 --> 00:02:02,000
Connection to database is the object and expect the situation during the program.
28
00:02:02,000 --> 00:02:06,000
Execution is the object, but this definition is very vast.
29
00:02:07,000 --> 00:02:11,000
We need more specifics and let me simplify the definition of the object.
30
00:02:11,000 --> 00:02:19,000
Imagine a car, a car, doors, headlights, body wheels, trunk engine and sided steering wheel color
31
00:02:19,000 --> 00:02:20,000
and lots more.
32
00:02:20,000 --> 00:02:23,000
What we have just described is called data structure.
33
00:02:23,000 --> 00:02:28,000
We describe something abstract with key properties which allow us to distinguish car from plane.
34
00:02:28,000 --> 00:02:33,000
Right now we have nothing more than a list of properties, which brings us to specific data organization
35
00:02:33,000 --> 00:02:36,000
that enables efficient access and modification.
36
00:02:37,000 --> 00:02:41,000
We can change wheels if we want, or we can change color of the car.
37
00:02:41,000 --> 00:02:44,000
But this will be still a pure data structure in our program.
38
00:02:45,000 --> 00:02:47,000
What does this car need to become an object?
39
00:02:47,000 --> 00:02:53,000
This car needs to have behavior which will allow to manipulate with its own data the properties we have
40
00:02:53,000 --> 00:02:54,000
listed.
41
00:02:54,000 --> 00:02:56,000
We call this behavior methods.
42
00:02:57,000 --> 00:03:04,000
Imagine that car has such behavior, astroland the headlight or start engine or turn right or turn left
43
00:03:04,000 --> 00:03:04,000
and so on.
44
00:03:05,000 --> 00:03:08,000
In case our car has such behavior, we can call it the object.
45
00:03:09,000 --> 00:03:12,000
Now let me share with you my own definition of object.
46
00:03:12,000 --> 00:03:17,000
Object, first of all, is a visual entity with a specific list of properties which can distinguish
47
00:03:17,000 --> 00:03:22,000
it from other objects and behavior which allow to manipulate with these properties.
48
00:03:22,000 --> 00:03:26,000
In other words, data plus behavior equals to object.
49
00:03:26,000 --> 00:03:27,000
Does it make sense?
50
00:03:27,000 --> 00:03:30,000
Object is always an instance of some specific class.
51
00:03:31,000 --> 00:03:32,000
Things become more interesting.
52
00:03:33,000 --> 00:03:35,000
Now we need to understand what acrostics.
53
00:03:35,000 --> 00:03:40,000
I will try to explain what class is in a few words, because we are going to have separate lesson dedicated
54
00:03:40,000 --> 00:03:41,000
to classes.
55
00:03:42,000 --> 00:03:46,000
But I need to understand the concept of the class now to understand what object is.
56
00:03:46,000 --> 00:03:49,000
Treat the class as the template for an object.
57
00:03:49,000 --> 00:03:53,000
Imagine you a car manufacturer and you need to create millions of cars.
58
00:03:54,000 --> 00:04:00,000
You know that each car will have color wheels, body, headlights, engine and lots more.
59
00:04:00,000 --> 00:04:06,000
We also know that car should be able to drive, start and stop engine, accelerate, brake and so on.
60
00:04:07,000 --> 00:04:12,000
We have just described the class for a car with properties and behavior, but each car might have different
61
00:04:12,000 --> 00:04:17,000
color, different, but a petrol engine or diesel engine or electric one.
62
00:04:17,000 --> 00:04:21,000
Besides that, each car can drive radically differently, I believe.
63
00:04:21,000 --> 00:04:22,000
Now you understand that object.
64
00:04:22,000 --> 00:04:24,000
Always an instance of some class.
65
00:04:24,000 --> 00:04:28,000
If you understand this, we already probably are interested.
66
00:04:28,000 --> 00:04:31,000
What are the approaches for software development exist?
67
00:04:32,000 --> 00:04:35,000
One of the most popular programming paradigms is functional programming.
68
00:04:35,000 --> 00:04:41,000
If an object oriented programming, our main concept is object in functional programming, our main
69
00:04:41,000 --> 00:04:42,000
concept is function.
70
00:04:42,000 --> 00:04:48,000
In other words, functional programming is not bothering about grouping data together with related behavior
71
00:04:48,000 --> 00:04:50,000
and about describing of control flow.
72
00:04:51,000 --> 00:04:55,000
We have specific task and we have specific functions that can deal with this task.
73
00:04:55,000 --> 00:05:00,000
Functional programming expresses the logic of a computation which approach is better.
74
00:05:01,000 --> 00:05:02,000
This is wrong question.
75
00:05:03,000 --> 00:05:04,000
Because it is not complete enough.
76
00:05:05,000 --> 00:05:10,000
The right question is which approach is better for some specific task because functional programming
77
00:05:10,000 --> 00:05:12,000
approach works the best way.
78
00:05:12,000 --> 00:05:18,000
You don't care about order of functions, execution for simple data manipulations, functional programming,
79
00:05:18,000 --> 00:05:21,000
solution in some degrees, easier and faster to implement.
80
00:05:21,000 --> 00:05:27,000
Sometimes it is even easier to support, but for complex enterprise solutions, functional programming
81
00:05:27,000 --> 00:05:30,000
approach can turn your project maintenance in the nightmare.
82
00:05:31,000 --> 00:05:36,000
Object oriented approach allows you to organize your code and programming execution in structured way.
83
00:05:36,000 --> 00:05:42,000
During the course, we'll discuss with you different Glynco techniques, which relies on basic principles.
84
00:05:43,000 --> 00:05:47,000
So now I believe you understand the difference between ALBE and functional programming.
85
00:05:47,000 --> 00:05:51,000
Let's name exact reasons why and when we need to follow OPIS design.
86
00:05:51,000 --> 00:05:57,000
Nowadays, you can't implement mobile application of web application if you don't understand or B approach
87
00:05:58,000 --> 00:06:01,000
or in most cases the most natural and pragmatic approach.
88
00:06:02,000 --> 00:06:05,000
I'm not trying to say is that OP is the one true way.
89
00:06:05,000 --> 00:06:10,000
I just want to highlight the list of advantages which in most cases helps to solve even complex software
90
00:06:10,000 --> 00:06:13,000
development tasks, modularity.
91
00:06:13,000 --> 00:06:19,000
And in case something goes wrong in your program, you know where to look at their problems with calculation
92
00:06:19,000 --> 00:06:22,000
of personal discount for user would need to take a look at user object.
93
00:06:23,000 --> 00:06:29,000
If you would follow key or P principles, your code will be structured or allows you to have low coupling
94
00:06:29,000 --> 00:06:34,000
in your code and high cohesion, which makes maintenance of your code much easier.
95
00:06:34,000 --> 00:06:37,000
Scalability because of modularity.
96
00:06:37,000 --> 00:06:42,000
And if you follow opis design principles, you can scale your software easily and in a predictable manner.
97
00:06:43,000 --> 00:06:48,000
If you don't follow opihi approach, adding a new piece of functionality in your program may cause significant
98
00:06:48,000 --> 00:06:55,000
changes in all existing code, which in turn increased risk of new defects associated with those changes.
99
00:06:55,000 --> 00:07:00,000
Lower cost of development or BYDESIGN allows you to reuse code.
100
00:07:00,000 --> 00:07:05,000
When you reuse code, you decrease the number of places where potential defects can appear.
101
00:07:05,000 --> 00:07:10,000
Also, spend less time to reuse already existing method than to write new methods from scratch.
102
00:07:11,000 --> 00:07:13,000
Security and reliability.
103
00:07:13,000 --> 00:07:19,000
Basic principles allow you to hide details of implementation from user of your objects.
104
00:07:19,000 --> 00:07:26,000
Or ByDesign allows you to build a robust design with independent modules that in turn makes the software
105
00:07:26,000 --> 00:07:28,000
more secure and reliable.
106
00:07:28,000 --> 00:07:33,000
Definitely, when you become senior developer, you would find disadvantages in orbit.
107
00:07:33,000 --> 00:07:38,000
But when a candidate starts arguing with me during the interview and hating OPIS approach, usually
108
00:07:38,000 --> 00:07:42,000
I ask him what is better for some imaginary business case?
109
00:07:42,000 --> 00:07:48,000
And these people always lose this fight because they need to understand that programming is always just
110
00:07:48,000 --> 00:07:54,000
a question of tradeoffs between maintainability, scalability, speed of development, good quality
111
00:07:54,000 --> 00:07:55,000
and reliability.
112
00:07:55,000 --> 00:08:00,000
And now when you understand on a high level what is object oriented programming and why we need to learn
113
00:08:00,000 --> 00:08:01,000
it, let's review.
114
00:08:01,000 --> 00:08:09,000
Basic core principles are inheritance, encapsulation, polymorphism, abstraction.
115
00:08:09,000 --> 00:08:16,000
Let's go one by one inheritance to understand inheritance, let's consider the next example the remember
116
00:08:16,000 --> 00:08:22,000
we discussed a class of the car in this lesson and now imagine that you need to create not Sadun but
117
00:08:22,000 --> 00:08:25,000
sports car or family car was Xerces.
118
00:08:25,000 --> 00:08:28,000
Would you describe class for sport car from scratch.
119
00:08:28,000 --> 00:08:34,000
You don't need to do this because sports car also going to have four wheels, also going to have engine,
120
00:08:34,000 --> 00:08:36,000
but something will be different.
121
00:08:36,000 --> 00:08:41,000
Most likely you are going to have only two seats in the car and additional attributes of the sports
122
00:08:41,000 --> 00:08:46,000
car like smaller probably clutch pedal for sport, manual transmission and something else.
123
00:08:46,000 --> 00:08:48,000
I believe you got my point.
124
00:08:48,000 --> 00:08:52,000
Inheritance allows you to create a new class based on another one.
125
00:08:52,000 --> 00:08:56,000
New class can extend existing one and share properties and behavior.
126
00:08:56,000 --> 00:09:01,000
New class is called child class and by the class is called parent class.
127
00:09:01,000 --> 00:09:08,000
Inheritance allows you to reuse code and to create new classes without reinventing the wheel encapsulation.
128
00:09:08,000 --> 00:09:13,000
The key principle tells us to keep data and code that can manipulate this data together.
129
00:09:13,000 --> 00:09:17,000
It is also about keeping data and the code safe from external interference.
130
00:09:18,000 --> 00:09:20,000
To understand it better, let me demonstrate encapsulation.
131
00:09:20,000 --> 00:09:23,000
In real life, you have a car.
132
00:09:23,000 --> 00:09:26,000
Car is a separate object and there is a gas pedal in it.
133
00:09:26,000 --> 00:09:32,000
Gas pedal is external interface, which said the way how will interact with our car.
134
00:09:33,000 --> 00:09:36,000
When we push down gas pedal, a lot of things happen.
135
00:09:36,000 --> 00:09:39,000
The throttle is open to let some air in.
136
00:09:39,000 --> 00:09:42,000
Meanwhile, food is fed to intake.
137
00:09:42,000 --> 00:09:49,000
Manifold sensors regulate when throttle should be closed and so on and everything is done to accelerate
138
00:09:49,000 --> 00:09:50,000
your car.
139
00:09:50,000 --> 00:09:54,000
Do you see how many details are encapsulated from you inside the car?
140
00:09:54,000 --> 00:09:55,000
But you don't care.
141
00:09:56,000 --> 00:09:58,000
You don't want to control all these actions.
142
00:09:58,000 --> 00:10:02,000
You just want to push gas pedal to accelerate your car and you don't have access.
143
00:10:02,000 --> 00:10:08,000
Control how much food to feed in different cases, you'll get your car handle such kind of questions,
144
00:10:09,000 --> 00:10:10,000
do you understand better now?
145
00:10:10,000 --> 00:10:17,000
What is encapsulation in programming and modifiers exist to facilitate the encapsulation of components.
146
00:10:17,000 --> 00:10:22,000
For example, in Java you have next access modifiers privat the strictest one.
147
00:10:23,000 --> 00:10:27,000
You have access to fields and methods only within the specific class.
148
00:10:27,000 --> 00:10:33,000
You can't access private elements outside of this class default access level.
149
00:10:33,000 --> 00:10:39,000
Within the same package, elements with default access modifier can be accessed outside of the package
150
00:10:39,000 --> 00:10:43,000
protected access level within the package and outside of the package.
151
00:10:43,000 --> 00:10:50,000
In the channel classes access outside of the package and outside of a child class is not possible.
152
00:10:51,000 --> 00:10:53,000
Public access level from everywhere.
153
00:10:54,000 --> 00:10:59,000
You can access elements with public money, fire from within the class, outside of the class, within
154
00:10:59,000 --> 00:11:04,000
the package and outside of the package to keep focus on the basic principles.
155
00:11:04,000 --> 00:11:07,000
In this lesson, we'll discuss on the theory in the next.
156
00:11:07,000 --> 00:11:11,000
Lessons will make a deep dive into practice part, including access modifiers.
157
00:11:12,000 --> 00:11:15,000
I believe now it is clear what this encapsulation principle means.
158
00:11:16,000 --> 00:11:18,000
The next principle is polymorphism.
159
00:11:18,000 --> 00:11:22,000
Let me explain polymorphism in simple words and again of Óscar example.
160
00:11:23,000 --> 00:11:24,000
Imagine you have two different cars.
161
00:11:25,000 --> 00:11:28,000
One was electric engine, another was petrol engine.
162
00:11:28,000 --> 00:11:31,000
Both are going to have Botten start engine.
163
00:11:31,000 --> 00:11:36,000
In most cases, behaviour will be similar, engine will be started and you will be able to drive.
164
00:11:36,000 --> 00:11:40,000
But the way how engine will be started is completely different.
165
00:11:40,000 --> 00:11:47,000
In Kavis, petrol engine car system will feed fuel to the engine to start it in Kavis Electric Engine,
166
00:11:47,000 --> 00:11:52,000
a huge blast of power will drive car like it's shown on the slide.
167
00:11:52,000 --> 00:11:55,000
You have steering the wheel and each car has.
168
00:11:55,000 --> 00:11:58,000
But the way how a steering system work is different in each car.
169
00:11:58,000 --> 00:12:05,000
In this example you can have a single interface, but multiple implementations do feel what polymorphism
170
00:12:05,000 --> 00:12:06,000
is all about.
171
00:12:07,000 --> 00:12:10,000
The same word can mean different things in different contexts.
172
00:12:10,000 --> 00:12:16,000
What we have just discussed called method overriding you your right behaviour in the separate lesson.
173
00:12:16,000 --> 00:12:19,000
I am going to show you how polymorphism works in Java.
174
00:12:19,000 --> 00:12:24,000
For now, I need you to understand the concept of OPIS and basic principles.
175
00:12:24,000 --> 00:12:28,000
And the last but not least principle is abstraction and some literature.
176
00:12:28,000 --> 00:12:34,000
This principle even not mentioned as a basic or principle, but I believe we can consider as this principle
177
00:12:34,000 --> 00:12:37,000
as important as other ones we discussed.
178
00:12:37,000 --> 00:12:39,000
Let me explain of what abstraction is.
179
00:12:40,000 --> 00:12:43,000
If I would ask you, what is the difference between the car and the plane?
180
00:12:43,000 --> 00:12:44,000
What will you say?
181
00:12:45,000 --> 00:12:48,000
You would try to list some key features of a car and the plane.
182
00:12:48,000 --> 00:12:53,000
You're trying to come up with abstraction, which should be enough to differentiate car and plane,
183
00:12:53,000 --> 00:12:57,000
create abstraction, which works the best for your business needs.
184
00:12:57,000 --> 00:13:02,000
It is not easiest thing to do, but if you create good abstraction for a specific case, it would allow
185
00:13:02,000 --> 00:13:07,000
you to not duplicate code to support good scalability of your units and lots more.
186
00:13:07,000 --> 00:13:12,000
This principle is a very important one and it requires time to use it in the right manner.
187
00:13:13,000 --> 00:13:14,000
Let's take a look now.
188
00:13:14,000 --> 00:13:19,000
What we have learned today, the we learned what is or be and what is the difference between object
189
00:13:19,000 --> 00:13:20,000
oriented and functional programming.
190
00:13:21,000 --> 00:13:24,000
We discuss advantages of OPIS and why we need to learn it.
191
00:13:25,000 --> 00:13:26,000
And what is also very important.
192
00:13:26,000 --> 00:13:28,000
We learned basic principles.
193
00:13:29,000 --> 00:13:32,000
That's all what I wanted to share with you in this lesson.
194
00:13:32,000 --> 00:13:35,000
This is our start of learning of object oriented programming.
195
00:13:36,000 --> 00:13:40,000
I would be glad to recommend your literature to read as your homework, but I wouldn't recommend you
196
00:13:40,000 --> 00:13:41,000
read anything.
197
00:13:41,000 --> 00:13:47,000
So far my opinion, the topic of object oriented programming in majority books described chaotically
198
00:13:47,000 --> 00:13:53,000
by saying this, I mean in books, a lot of terms, cost structures, new keywords, which we are going
199
00:13:53,000 --> 00:13:56,000
to learn are mixed in the same chapters.
200
00:13:56,000 --> 00:14:02,000
I spent a lot of time thinking on the structure of lessons and how to explain to my students and my
201
00:14:02,000 --> 00:14:08,000
experience of teaching proofs that the sequence of lessons which I suggest brings a clear vision of
202
00:14:08,000 --> 00:14:10,000
OPIS in the shortest possible time.
203
00:14:10,000 --> 00:14:15,000
So now make sure you understand the content of this lesson before we move further.