1 00:00:00,000 --> 00:00:04,818 [MUSIC] 2 00:00:04,818 --> 00:00:07,810 Hello and welcome, I'm Jeremy. 3 00:00:07,810 --> 00:00:11,220 If you've started learning C# by taking the courses here at treehouse, 4 00:00:11,220 --> 00:00:15,330 then you've already learned a lot about the C# programming language. 5 00:00:15,330 --> 00:00:16,250 With what you've learned so 6 00:00:16,250 --> 00:00:20,497 far, you can do a lot and I hope you had the chance to write some code on your own. 7 00:00:20,497 --> 00:00:26,220 In the C# objects course we learned about object oriented programming. 8 00:00:26,220 --> 00:00:30,790 If you remember, object oriented programming makes it easier to think about 9 00:00:30,790 --> 00:00:34,620 architect in software programs because we can think about software 10 00:00:34,620 --> 00:00:38,460 as a number of different objects that interact with each other. 11 00:00:38,460 --> 00:00:42,690 Because object oriented programming naturally breaks the program into types 12 00:00:42,690 --> 00:00:47,290 of objects, object oriented code is easier to reuse and maintain. 13 00:00:48,850 --> 00:00:53,770 In this course we'll learn some slightly more advanced concepts of object oriented 14 00:00:53,770 --> 00:00:58,130 programming and see how these concepts are supported by C#. 15 00:00:58,130 --> 00:01:03,290 These language features and principles are used by most object oriented programs. 16 00:01:03,290 --> 00:01:06,700 This is especially so in software frameworks. 17 00:01:06,700 --> 00:01:09,030 Frameworks such as the .NET framework, for 18 00:01:09,030 --> 00:01:13,488 example, are libraries of code that can be used by including them in our own code. 19 00:01:13,488 --> 00:01:17,280 Frameworks are what make it possible to easily write 20 00:01:17,280 --> 00:01:22,560 large software programs such as websites, games, interactive desktop software, 21 00:01:22,560 --> 00:01:24,860 mobile device applications and so much more. 22 00:01:25,940 --> 00:01:28,330 You may find yourself writing your own frameworks and 23 00:01:28,330 --> 00:01:31,750 libraries that'll be used by other software developers. 24 00:01:31,750 --> 00:01:36,300 If so you'll likely be using much of what you learn in this course. 25 00:01:36,300 --> 00:01:39,760 In any case, knowing how these language features work 26 00:01:39,760 --> 00:01:42,930 will help you understand how to work with existing libraries and frameworks. 27 00:01:44,050 --> 00:01:48,560 Later, when we learn more about using the various classes provided by the .NET 28 00:01:48,560 --> 00:01:52,620 Framework, you'll be grateful you have a good grasp on these concepts. 29 00:01:53,730 --> 00:01:58,170 You may recall that there are four principles of object-oriented programming. 30 00:01:58,170 --> 00:02:03,115 The principles we've learned so far are inheritance and encapsulation. 31 00:02:03,115 --> 00:02:08,007 We'll briefly review these principles here and learn about two more, 32 00:02:08,007 --> 00:02:10,299 polymorphism and abstraction. 33 00:02:10,299 --> 00:02:12,202 These terms sound really technical but 34 00:02:12,202 --> 00:02:16,400 the concepts they represent are actually quite straightforward. 35 00:02:16,400 --> 00:02:21,960 This course will build on top of what we already know about C#, I recommend you 36 00:02:21,960 --> 00:02:26,510 follow the links in the teacher's notes if you haven't completed the prerequisites. 37 00:02:26,510 --> 00:02:27,990 Or if you feel like you need to review, 38 00:02:27,990 --> 00:02:32,600 you can always do a quick refresher by watching some of those videos again. 39 00:02:32,600 --> 00:02:37,750 We started learning about object oriented programming in the C# Objects course where 40 00:02:37,750 --> 00:02:42,120 we wrote the code for a tower defense game called Treehouse Defense. 41 00:02:42,120 --> 00:02:45,470 We'll use what we learn in this course to make it easier to extend 42 00:02:45,470 --> 00:02:47,290 the Treehouse Defense game. 43 00:02:47,290 --> 00:02:50,720 To extend code means to add capabilities to it without 44 00:02:50,720 --> 00:02:53,380 rewriting any of the original code. 45 00:02:53,380 --> 00:02:57,605 When we're done it will be possible to add different types of invaders and 46 00:02:57,605 --> 00:02:59,650 powers to the game with minimal effort. 47 00:03:00,810 --> 00:03:04,470 This sounds like a lot of fun and I'm excited to get going. 48 00:03:04,470 --> 00:03:08,667 Let's begin by taking a look at the code that we ended with in C# objects