about summary refs log tree commit diff
path: root/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt')
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt187
1 files changed, 187 insertions, 0 deletions
diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt
new file mode 100644
index 0000000..44fdd74
--- /dev/null
+++ b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt
@@ -0,0 +1,187 @@
+1

+00:00:00,390 --> 00:00:03,750

+Let's start with a quick introduction to object orientation and

+

+2

+00:00:03,750 --> 00:00:07,920

+the fundamental concepts behind it. And let's start by discussing what

+

+3

+00:00:07,920 --> 00:00:11,100

+exactly is object orientation? If you're younger than me, it

+

+4

+00:00:11,100 --> 00:00:13,700

+could be that the first programming language you learned was already

+

+5

+00:00:13,700 --> 00:00:17,030

+an object-oriented language. But things were not always like this.

+

+6

+00:00:17,030 --> 00:00:20,660

+Before object orientation became prevalent, people were not used to thinking

+

+7

+00:00:20,660 --> 00:00:23,447

+in terms of objects. So what happened afterwards? And what does

+

+8

+00:00:23,447 --> 00:00:25,727

+it mean to think in terms of objects and to follow

+

+9

+00:00:25,727 --> 00:00:28,583

+an object-oriented approach? First of all, it

+

+10

+00:00:28,583 --> 00:00:32,203

+means to give precedence of data over function.

+

+11

+00:00:32,203 --> 00:00:35,377

+Did items rather than functionality become the center

+

+12

+00:00:35,377 --> 00:00:39,020

+of development activities. This also allows for enforcing

+

+13

+00:00:39,020 --> 00:00:42,200

+the very important concept of information hiding,

+

+14

+00:00:42,200 --> 00:00:45,460

+which is the encapsulation and segregation of data

+

+15

+00:00:45,460 --> 00:00:49,710

+behind well-defined and ideally stable interfaces. In order

+

+16

+00:00:49,710 --> 00:00:51,490

+to be able to hide the design and

+

+17

+00:00:51,490 --> 00:00:54,130

+also implementation decisions. And note that the terms

+

+18

+00:00:54,130 --> 00:00:58,580

+encapsulation and information hiding are often used interchangeably, although

+

+19

+00:00:58,580 --> 00:01:01,270

+some people prefer to think of information hiding

+

+20

+00:01:01,270 --> 00:01:04,709

+as being the principle and encapsulation being the technique

+

+21

+00:01:04,709 --> 00:01:07,990

+to achieve information hiding. The key concept though,

+

+22

+00:01:07,990 --> 00:01:10,110

+no matter which term you use, is really to

+

+23

+00:01:10,110 --> 00:01:13,460

+gather, to seclude this data behind sort of

+

+24

+00:01:13,460 --> 00:01:16,610

+a wall and give access to the data only

+

+25

+00:01:16,610 --> 00:01:20,270

+through interfaces that you, the developer define. And why is

+

+26

+00:01:20,270 --> 00:01:22,800

+that important? Oh, for many reasons, and one of the main

+

+27

+00:01:22,800 --> 00:01:26,690

+ones is that it makes code more maintainable. Because the

+

+28

+00:01:26,690 --> 00:01:28,860

+rest of the code, the rest of the system doesn't have

+

+29

+00:01:28,860 --> 00:01:32,370

+to be concerned on how the implementation details or the

+

+30

+00:01:32,370 --> 00:01:37,220

+design are defined. And therefore, any change that happens behind this

+

+31

+00:01:37,220 --> 00:01:39,580

+wall doesn't concern the rest of the system. And, doesn't

+

+32

+00:01:39,580 --> 00:01:41,820

+affect the rest of the system, as long as you keep

+

+33

+00:01:41,820 --> 00:01:45,730

+your interfaces consistent. Another advantage of focusing on

+

+34

+00:01:45,730 --> 00:01:49,230

+objects and encapsulating the information into cohesive entities is

+

+35

+00:01:49,230 --> 00:01:52,130

+that it allows the reuse of object definitions

+

+36

+00:01:52,130 --> 00:01:55,000

+by incremental refinement. Which is what we normally call

+

+37

+00:01:55,000 --> 00:01:58,830

+inheritance. And inheritance is definitely a fundamental concept

+

+38

+00:01:58,830 --> 00:02:01,560

+in object orientation. For example, we can define a

+

+39

+00:02:01,560 --> 00:02:04,030

+car as a refinement of the vehicle. That there's

+

+40

+00:02:04,030 --> 00:02:06,850

+some additional characteristics with respect to a generic vehicle.

+

+41

+00:02:06,850 --> 00:02:11,220

+And then we can use the car wherever a vehicle can be used, which is what we

+

+42

+00:02:11,220 --> 00:02:14,200

+call polymorphism. And we'll continue this discussion for a

+

+43

+00:02:14,200 --> 00:02:16,440

+very long time. Because there's so many things that

+

+44

+00:02:16,440 --> 00:02:18,860

+could be discussed when we talk about object orientation,

+

+45

+00:02:18,860 --> 00:02:21,890

+its characteristics and its advantages. But in the interest

+

+46

+00:02:21,890 --> 00:02:24,000

+of time, let's for now just stop here. And

+

+47

+00:02:24,000 --> 00:02:27,020

+start talking about two key concepts in object orientation.