diff options
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.srt | 187 |
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. |