Coding 101 33 (Transcript)
Shannon Morse: Today on Coding 101, don’t be scurred, because we got your classes, right here.
Netcasts you love, From people you trust. This is TWiT! Bandwidth for Coding 101 is provided by Cachefly; at C-A-C-H-E-F-L-Y dot com.
Fr. Robert Ballecer, SJ: Welcome to Coding 101, it’s the Twit show where we bring you into the wonderful world of the code monkey; I’m Father Robert Ballecer.
Shannon: And I’m Shannon Morse and for the next thirty minutes we’re going to get you all learned-ed up on everything you need to know to be a C# code warrior.
Fr. Robert: Wooot! I prefer code monkey, but you know, some people could be code warriors.
Shannon: I’m going to make these people warriors!
Fr. Robert: Warriors! That’s right.
Shannon: I’m going to have an army of coders.
Fr. Robert: That’s actually kind of scary. I’m not really big on that. Now Shannon, people have been getting a little freaked out. We’ve seen this in the feedback, we’ve seen this in the group, there are some people who are like, “I still don’t understand why we’re doing this, why do we have to go into classes, why do we have to talk about abstract classes?”
Shannon: I don’t blame them.
Fr. Robert: And I don’t blame them, because it can be a little scurry, but we’re going to bring you all through some basic examples, we’re going to bring you back to module one of C#, and explain why this isn’t really any different than what you have been doing.
Shannon: I’ll be honest, when I was writing my code for this episode I was like, “Why am I doing the abstract classes?”
Fr. Robert: Yup.
Shannon: But I still did it, and I understand the functionality of it, it’s just very hard for me to figure out why I would use it. But I think that’s part of the problem solving part of programming is finding out why you would actually use certain things like abstract classes.
Fr. Robert: Precisely, and that’s why we want to sort of slam on the breaks here, back up, slow down, show you a couple more examples, and then explain, “This is why this is important.” I think one of the problems we are running into is classes, abstract classes and interfaces really become useful when you start running, creating much larger programs.
Fr. Robert: We’re writing very basic programs, which makes it difficult to see where it would come into play, but I’m betting that we’re going to show you this week why this is the way you want to program.
Shannon: Yea! Well before we get started, can I do a little bit of Snubs Compiles?
Fr. Robert: I think so. Let’s go compile some Snubs.
Shannon: Alright, well hopefully you got my computer. I forgot to check beforehand. Oh, that’s not my computer; that’s it! Yea! So on my computer over here I created a new program. Under here you’ll just see a little bit of code, and then over here, I had created a new class. So if you remember previously, creating a class, you right click on “Snubs episode three,” or whatever your program is called, go down to “add new,” and then go down to “class.” And then you add whatever, however many classes you want. So this is the class I created, and you’ll notice right here I made it public, so I can use it throughout the program.
Fr. Robert: Correct.
Shannon: Abstract, so that I know that it is basically a drawing, an idea for my entire code.
Fr. Robert: Right, and actually-
Shannon: That’s how I explain it, it’s an idea.
Fr. Robert: It’s an idea. That’s actually a very good thing, because remember, a class is like a blueprint, but a blueprint spells out exactly what you are going to build.
Fr. Robert: An abstract, her perfect analogy is just an idea. It’s like saying, “Well, I kind of know I want the building to look like this.”
Fr. Robert: “I have no idea what is going to go in there, but I want to make sure it has floors, it has windows, it has ceilings,” That’s it, right? And then you have to fill in the blanks later on.
Shannon: Exactly. So back on my code, I created to just make an abstract class called “food.” Well what is derived from “food?” you have veggies, you have fruits, you have meats, you have dairy products, so then under it I created a public called “virtual string type of food.” And this is the one that’s going to be get and setted, that’s how I like to explain that part, and then I also had an abstract one called “enter you food,” so this is where if I was creating something were a person had to enter the type of food that they were buying, they could put in, “okay, I’m buying a pumpkin,” or whatever.
Fr. Robert: Right.
Shannon: And then under that I also had one that posts a message so this is similar to what Lou had showed us last week, where he did a social network one, and depending on if you have Twitter, or Facebook, or whatever, it could post some certain kind of message if you needed it to pop out a message to the public, to all the consumers, or what have you. So in mine I just left that the same and then under that I had one that would return the type of food that a person actually bought. So this is very abstract, obviously.
Fr. Robert: Right.
Shannon: It’s just an idea of the many things I could do; I could create this into a point of sale system, so that every time someone enters a barcode, for example, it pops out whatever kind of discount you get for that certain kind of food.
Fr. Robert: But it’s still vital because remember, when we start teaching programming, we really don’t care about the code. The code is just syntax. What we are trying to do is teach concepts. And the concept here is break down the problem into little chunks that you can actually solve.
Fr. Robert: And in your case, you created an abstract class, so there’s; go back to her screen. If you look, in these methods, there is no nothing.
Shannon: There is nothing there, just a whole bunch of comments.
Fr. Robert: Right. So I know that I’m going to have those four methods. They are going to be part of my class. They are going to have to be what’s called instantiated. They are going to have to be fully developed before they can be instantiated. This allows me to solve this tiny little chunk.
Fr. Robert: What’s the problem here? The problem is I need to have something that tells me the type of food, the name of the food,
Fr. Robert: What I do with the food, and…
Shannon: There you go. You could change this to like, recipes, and it will pop out a bunch of different recipes that I want to use, or the cost of it, or whatever. And then down here I created a “Type of Food” called “Veggie.” And this one is a public class so this is not abstract so I had to add in some kind of code down here to actually do something.
Fr. Robert: Right. Because remember, the abstract did not include what was actually in these methods. So what you’ve done now, by overriding, you’ve said, “Okay, you know that thing that you gave me before? This is what actually goes inside of it.”
Shannon: And it doesn’t necessarily have to have all the other different ones in here, because it’s an abstract class that I started with. So I can just include the override bool one, so I override that and tell it to return he type of food or whatever. So it could do whatever I wanted it to. And then over here in program, you go over here and go “class program,” and then after that I have “food, number one, new veggie.” So I could make a whole bunch of different ones under here, all for new vegetables, or I could create a new class under my class under here and make it “fruits,” and then I could put a whole bunch of different fruits in my program, etcetera, etcetera, etcetera. It could go on and on.
Fr. Robert: This is actually important; remember this form lesson one of this module; this is how you create and instance, an object of the class, so “food,” which was the name of the abstract class, “Num1.” “Num1” is going to be the pointer. It says, “This is where it is going to exist.” So I’m calling it “Num1,” is equal to “new,” which is a keyword, it means a “new instance, new object” based on “veggie,” which you created from “food.”
Shannon: Exactly. And from here I could have them enter a kind of food, and I could have it pop out a return console right line when it says something back to me because this is a console application, I could have it do pretty much whatever I wanted it to in here, as long as it’s working off of this abstract class that I started with, this idea.
Fr. Robert: Yeah.
Shannon: Pretty cool.
Fr. Robert: But the nice thing is the coding. So the coding for the class happens in a different screen.
Shannon: Yeah. So it’s very organized.
Fr. Robert: Its super organized, right? Now folks, this is where it gets really, really cool, and that is…
Shannon: And confusing.
Fr. Robert: And confusing. If I’m solving a problem; let’s say I wanted to make a calculator. I need one class that solves for division. I need one class that solves for multiplication. I need one class that does subtraction and addition. May be I start building some classes based on some of the more advance mathematical concepts. Now that I’ve got those built, I can us them in my main program without having to rewrite those methods. I just pull it in, and say, “Okay, I’m going to use it in this way, I’m going to inherit these things, and this is going to be my object.
Shannon: So cool.
Fr. Robert: Very cool. Are you going to show us what it does?
Shannon: Oh well, it doesn’t really do anything. I didn’t set it up to actually do anything.
Fr. Robert: Right, right, you just built it.
Shannon: When I ran it, I built it, it didn’t have any errors, so I know it was written correctly, but after this I could make it do whatever I wanted it to.
Fr. Robert: As (Unintelligible) says, “The human class inherits from the monkey class.” Yeah, okay sure, that works.
Shannon: So true. Okay so I also had an example brought in from our Google Plus Community, and this is from Nathan. Nathan decided to write something that will give you answers to a Fibonacci sequence. So, pretty cool. So he was talking, he was the one who was talking about you need to understand problem solving to be a good programmer. This doesn’t necessarily have any class infrastructure in it, other than the main one that is included when you first create a program in C#. So if I built this, and then I hit “start,” you’ll notice that it starts with a small number and then it goes up and up to a certain number at the end. Now I’ll show you the problem that he shows us online, he actually linked to an example; not the right one, there we go. So he says, “Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with one and two, the first ten terms will be as such.” So, the question in here is: “By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even valued terms.” So that’s the whole problem solving thing that we are getting into.
Fr. Robert: Right.
Shannon: So that’s a really good example, then he also adds at the very bottom; ha that’s my friend Jeff. Break all the things! Yeah! So down at the bottom, here we go, okay, he says he has a challenge for newcomers. This is a good one for you guys, if you can figure it out. Below is a link to the code on GitHub, which is what I just showed you, edit the program so that it will generate and add the even values of the sequence all the way up to four billion. I’ll give you a hint: it’s easy, but not as easy as changing the upper limit variable. You might notice int will stop at a certain value. Hmmm, interesting. So good luck with that, guys, and you can also find that over in the Google Plus Community if you want to give it a try. And the last thing I want to share with you today for the Snubs Compiled segment is another thing linked by Mister Nathan and he said, “Check this out. I was up all night coding so I’ll just leave this here here, tonight I feel like all these language weapons are pointed at me.” So if programming languages were weapons; so let’s find one that we have done. Here’s Perl. “It was probably useful once, but few people use it now.”
Fr. Robert: Perl, it spreads out and causes a lot of damage.
Shannon: And then we have...java script is pretty funny. Is a sword without a hilt.
Fr. Robert: Yeah, you could cut yourself. I can deal with that.
Shannon: Let’s see. “Python: double barrel shotgun only one barrel will shoot at a time. And you never end up shooting the recommended one.”
Fr. Robert: Also, you’ll never actually hit the target.
Shannon: And we also have C# in here. Here we go, so I like this one: “C# is a powerful laser rifle strapped to a donkey. When taken off the donkey, the laser doesn’t seem to work as well.”
Fr. Robert: Yeah, okay, I’ll buy that.
Shannon: All in jest, of course, but very hilarious.
Fr. Robert: Well it’s important for programmers to have humor.
Shannon: Oh yes, I so agree. This was very cute, so thank you, Nathan, for sharing everything. You are one of my favorite code warriors of the week, from our Google Plus Community, and if you guys want to join, you can go over to bit dot LY slash TWiT coding one zero one, and feel free to join over there we have over fourteen hundred members now. Yea!
Fr. Robert: Now we need to get into the ivory tower, but in a slightly different ivory tower. I don’t want to spend a lot of time because I want to give as much time as possible to our code warrior, to Lou Maresca. But I do wan tot recap some of the things that we talked about, because people have been freaking out. We’ve been receiving emails from people saying, “We don’t understand why you are making us learn this.” Or, “Is this the right time to learn this?” Well okay. We know that a class is a blueprint, we’ve talked about this, in fact we just did. The blueprint spells out what you are going to create. Now remember a class doesn’t actually exist until something instantiates it, turns it into an object, and we just showed you how to do that, the new keyword. Now an abstract class is going to be like a blueprint, but it misses all the interior details. You are just trying to show the structure of the thing.
Fr. Robert: An interface goes one step further and it is just the outline, there are no methods, no nothing. In other words, it absolutely cannot be instantiated unless you write the entire program.
Shannon: And Lou showed us an interface last week, at the very end of the episode, but he did show us an example.
Fr. Robert: Right, right. And the important thing to remember about this is, people are saying, “Well it’s because you want to reuse code.” Yes, yes that’s it, you do want to reuse code, but there is more to a class than just that. When you do proper uses of classes, abstract classes and interfaces, what you can do is to enforce a hierarchy, a signature of the way that you are going to program. This is important because even if it’s a small program, even if it’s just you programming on a particular project, when you need to go back later and figure out what you did, if you don’t use the proper structure, if you don’t have some sort of hierarchy that you’ve enforced, you’ll find out you have created a Frankenstein. You have seen this, right?
Shannon: I have seen Frankensteins, yes.
Fr. Robert: Yeah, where the code just goes on and on and on and way, way down at the bottom someone says, “Oh, there was a problem at the beginning, I’m going to fix it here.” It’s difficult to…
Shannon: It could end up breaking the entire program that way too.
Fr. Robert: Precisely.
Shannon: If you have it all on one page like that.
Fr. Robert: Whereas if you have a class; if you have a segment that you say, “This class solves X.” Then you know that if you have a problem with solving X, you know exactly where the problem is, it’s in the class. It’s probably going to be in the methods that you have included in the class, it’s probably not in the instantiation of it.
Shannon: I kind of just ran into a thing like this on a radio program called GNU Radio Companion, which is written in Python but it gives you a nice little Gooey and you have to have different variables for different sample reads and frequencies, and things like that. So as soon as you change that one variable, all your other little pieces of code, your boxes for your Gooey, they all change automatically. So you’re not going to be breaking something in the process because it is all separated and they are just pulling from that one piece of code every time they need to change it.
Fr. Robert: Right, right, and it’s just a better way to code.
Fr. Robert: It’s a better way to organize your thoughts, it’s a better way to organize your code, and that’s why we are teaching it. And that’s why we’re okay with freaking people out, because we know that in the end it going to make them better code monkeys.
Fr. Robert: Alright, now let me show you a little something-something. Do you remember back in module, I think it was module one, and I think it was episode one or two, episode two, we did a problem where we had to convert a decimal into binary.
Shannon: Oh yeah, I remember that.
Fr. Robert: Right, right?
Shannon: I don’t remember exactly how to do it.
Fr. Robert: Yeah what we did was we came up with a process, we said look, it was easy to convert a binary to decimal because you just had to know the powers of the position, and right? But if you want to convert decimal to binary, it’s basically division. You start with a number. So you start with seven.
Fr. Robert: You divide that number by two. If you can’t divide it by two, then that becomes a one, it’s an on position.
Shannon: Oh, right.
Fr. Robert: And you move onto the next one. Then you write the dividend below the original quotient and you write the remainder of the division next to the new quotient.
Shannon: Okay. I remember that.
Fr. Robert: Right, right and you do that, it’s a very easy process, but you have to do it over and over and over again.
Fr. Robert: Well what we did is we coded it and if you go ahead and go to my computer, Brain, you’ll see that we wrote the code for that program. Very, very simple. And notice this: we were writing classes way, way back in module one.
Shannon: We just didn’t know we were doing it.
Fr. Robert: We didn’t know we were doing it, and we didn’t tell people they were doing it because we didn’t think it was important. We thought programs were going to be so short, they were going to be so simple that it wasn’t something we wanted to burden them with. You may remember we told you just don’t worry about this part. Well now what we’re doing is we are telling you this is why we didn’t want you to worry about it, because people are freaking out. However, if you did module one, if you did these examples, if you did code these problems, then you have used classes. The only thing is you didn’t know you were using classes.
Fr. Robert: Surprise. Now what we are asking you to do is look at all the code form module one because it really will open your eyes to as to how crucial it is to use classes, and how easy it is. There is nothing that is different between writing a class and what you did way back when. The only difference really is going to be that you are going to be able to get more organized. So for example, in this example, all we did is we solved for a problem. The problem was that it needed to solve for the simple mathematical question of: how do I convert this decimal number back into a binary number? It ran through the process, which is coded down here, there we go, and then we got ourselves an answer. So I want you to go back through the code from module one, turn it into classes and here’s the cool thing: once you have them in classes, you will be able to access them throughout your programming inventory.
Shannon: Love it! It makes it so much more sense now.
Fr. Robert: It really does. Now, to make it make even more sense, this is the part of the show where we are going to bring in our code warrior. Ladies and gentlemen, Mister Lou Maresca. Lou, thank you for coming back. I believe you have got one of ours with you. Is this some kind of hostage exchange?
Shannon: Who is that?
Lou Maresca: What are you reading back there? Oh, a cookbook, The Ultimate C# Cookbook.
Fr. Robert: Now Lou, you’ve been listening in on the conversation. You know that we have had people freaking out. So what we asked you to do for this week of Coding 101 is to make the code warrior segment as simple as possible. Show them how we are making classes, where we are using them and where it is advantageous to use them. Were you able to come up with something for that?
Lou: Sure. Yeah, so the example I’m going to give is a little more exaggerated than normal because we wanted to kind of prove a point that if you break it, you separate your concerns and your applications, using classes, like Snubs and you have said, it’s always easier to maintain it after the fact. And so that’s the example. And the example that I’m going to show, too, I’m going to kind of give you practical sense. I think what we chose was doing exchange conversions, so if you’re going from Euros to US Dollars, something like that. We’re going to show a way to build that, and then maybe we’ll build upon it later to give people more information for live exchange rates and stuff like that, later on down the road. But this is just a primer to that. So if you want to show my screen I can give you the beginning part of that.
Shannon: Let’s do it!
Lou: Right, let’s do it! So the first part is, this is just the main program, I have basically collapsed everything so that we can see what’s going on here. So I built a class over here to the right, called “currency,” it’s a very simple class, let me zoom I n here for you guys.
Shannon: There is a bunch of classes in there.
Lou: Yeah, I’ve built a bunch of classes, and like I said, I’ve kind of over exaggerated a little bit because I kind of wanted to prove a point. So this specific one, called “currency;” and it has a currency code, and the currency code is just another class, basically it’s just a list of codes. So you would have “D” for Dollar and “EUR” for Euro, so this is just a property saying, “A currency object is going to have a code with it.” And it is also going to have a symbol. So for instance, an example would be like, Dollar sign is an example. So that would be currency symbol and I also have this other little thing down here, it’s an array of currency rate pairs. “Rate” is another class that I’ll show you, all it is, is a rate to another currency. So for instance, for every Euro it’s a Dollar twenty nine. So you would be able to put in here, you know, if this was the Euro currency, you’d be able to put inhere “Dollar twenty nine,” and then the US Dollar as a pair, and then they would be able to convert it. That’s the simple class for currency.
Fr. Robert: So each of these is going to do something specific. In this particular case, we want to know what kind of currency it is, we want to know what the symbol of that currency is, and then you have an array that will allow us to easily change any currency to any other currency.
Lou: That’s right. So each currency, think of it like this: if I’m a currency, let’s say, I can actually know how to convert myself to another currency. So basically, each currency itself is aware of another currency and its rate. That’s’ what that currency pair is, to say if I’m a Euro, I have a list of other currencies, like the US Dollar or the Canadian Dollar, and how to convert that. So it’s making that class aware of how to do other things.
Fr. Robert: Okay, so I can imagine out audience saying, “But Lou, why don’t I put all of that in one class, like I did when I was writing the programs for module one? Why do I need separate classes for currency, and for currency rate pairs, why go through all that trouble; why not put it in one lump program and know where everything is?”
Lou: This specific example is a more simple example, but just think of it like this: currency is not just three properties. It’s more than this; I just used three properties to kind of describe what it is. But there are more things in here, like what culture codes it belongs to, potentially what countries use this currency, you know, other things you can add to this specific class that are not in here. And sometimes it just gets way too complex, and it’s really hard to kind of maintain that. For instance, if I wanted to maintain a big list of countries and their currency types, I don’t necessarily want to put it inside a currency, it doesn’t make any sense. That’s why breaking it apart is really important, because it’s really what they call “separation of concerns.” That’s just saying, “I’m only concerned with three things, and that’s it.” And that’s how I want to kind of build m y objects.
Fr. Robert: And if you could actually go back to your program, this is something that I think people need to see. This is his program.
Shannon: It’s so tiny!
Fr. Robert: It’s so tiny; if you write it correctly, and if you separate out the concerns, you have all your classes doing individual things. Your program is not actually coding, your program is saying, “I need to calculate this problem, and then I need to calculate this problem, I need to calculate this problem.” And that’s what you get if you use classes, if you use a right at the correct hierarchy.
Lou: I kind of cheated a little bit because it looks tiny because I used what they call “regions,” to be able to kind of collapse it.
Shannon: But it’s still tiny.
Lou: It’s still tiny; I think it’s only a total of sixty lines, because of all the console stuff I put in here, to basically allow the user to enter the currency. But let me just show you real quick: the reason why; I have a base type currency, that’s these three properties; but then, this is even tinier; so I have an example of a US Dollar currency. And you’ll notice something: it’s real tiny, there is nothing in it. And that’s because, like we showed before last week is, everything that I need is really in that currency type. So what I could have done in here is, we don’t want to get into this now but, there’s things called constructors and I can add everything into that constructor and set all the properties and that would also go in here. But I did that, instead, inside the program, and we’ll show you that, what that looks like later. And it’s basically to initialize everything. But then we have a Euro version; again, nothing in there, other than being inherited from currency. And then again, I could put a whole bunch of stuff in here, if I really wanted to, but I decided not to do that just to kind of prove a point. And then we have these currency rate pairs and again all it is is a currency pair meaning you know what currency is this and what’s the rate. So the currency is USD and the rate is Dollar twenty nine. So that’s just the currency rate pair class.
Fr. Robert: And if you could go back to one of the currencies, the cool thing here is he’s using inheritance, though he’s making a brand new class for each type of currency. You’ve got the Euro currency, you’ve got Dollar currency, you could have, you know, Brazilian currency. But because you are inheriting from the currency class, you get the advantages of everything he has already written for that class.
Shannon: You don’t have to rewrite it, it’s already done for you. You know it’s not going to break because it’s already there.
Fr. Robert: Exactly. And as he said, he kind of, he made this very small so that he could give a better example. But he could have included so many methods and pieces of data for the currency, he could have had, hat’s the current inflation rate, he could have, well, what is its current stability, just look up the currency market on Yahoo Finance, and find all the different bits of data that you can get about any individual currency, that could all go in here. And then when you inherit it to make a particular class for the Dollar or the Euro or the Rihal, it will inherit all that information it knows. Oh, I need to use this to make it available for the program.
Shannon: Makes sense.
Lou: So I built that, and then I also built this other little class, real simple class that will basically convert the exchange rate for you. Now like I said, you could probably, some of your users are probably saying, “Ah, I could do that ten different ways, probably even make it simpler than this.” True, again I just wanted to kind of prove a point. This just added a method in here that takes the amount and the rate and then returns the amount times the rate. And that’s it. So if we go back to the program, here’s an example of creating an instance of that class, so we create a class, we “new” it up, “new US Dollar currency,” we initialize by setting the currency code and the symbol, and that’s it. We have a US Dollar one, we are ready to go. And then I also want to do that for Euro, too. So I set the Euro, and I set the Euro symbol properties, and then I want to be able to convert form Euro to US Dollars, and so I create this pair, “new” that up, and say, okay, what I actually want to go to is Dollars, and so I’m going to set that as a property value, and this is the rate. So really simple, just setting properties, very simple code, nothing, no calculations or anything. And then, this is the code down here, I spin up a new instance of the provider, or the rate converter, and then in the code, this is all the console code, very simple code that we had all the way back to like episode one or two, but then again all we do is say, okay, does it use the number of Eros you want, write it out, and then we try to read that in, and if we read it in successfully, we calculate it and then we write out the values. So very simple, so if we run this…
Shannon: This is so handy. I’m so going to steal your code and use it for my trip to Tahiti.
Lou: Okay, so if I put in that twenty Euros is twenty five dollars and eight cents in US Dollars, it puts the symbol in there and it puts the code for it too. So fairly simple code and very useful, like you said. And like I said, these are all static, so it’s probably a little different now, if you go to Yahoo Finance right now it’s probably a dollar twenty nine and a half, or something, you know? It changes all the time.
Fr. Robert: But you could have constructed the class to actually reach out to an open API for currency information, and pulled some real time currency information.
Lou: That’s right. This is what this is for. So I didn’t put any code in here but, now I put this as code for another day, but basically we could go out and get all the exchange rates for a specific currency type, and then we could return that as a pair, as an array, and then store that store that, let’s say, inside the Euro. We could store that inside the Euro collection of rates. So very simple and again, it seems simpler because we have broken it apart, now if you, if I could have done this in one long program, yeah, we could have done it just like all the other programs we showed you all the way up to episode eight, but, would it have been cleaner, this easy to follow? Probably not. So that’s the key, is this going to make it any easier? And as you go on and get more advanced, programs like this actually get easier to test, too. So that’s one thing that we’re not doing right now but it actually gets easier to test.
Fr. Robert: And that’s one of the things that I’ve always know, with object orientated groups programming, it is rather than procedural programming, you can test individual pieces. So rather than saying, “Oh, the program doesn’t work,” it could tell you, “I’m not getting the right returns from module Dollar currency or Euro translation, whatever you’ve created. And it makes it a lot easier to trouble shoot. It’s one of those things that if you are writing a tiny little program, you may not notice. But even with something like this, which as deliberately been made small, you should be able to see the advantages of having everything in modules. As Lou said, I think the challenge that we could give to the audience would be to take these modules and expand upon them. He has included three or four different pieces of data; why not see how many more you could include in them? And then I bet you will see the usefulness of using a class.
Shannon: I love it. This makes it so much easier to understand when you actually see it broken up like that. It’s so organized and it’s so clean, and I think that’s the biggest point of it.
Fr. Robert: And we’re all about problem solving, that’s what we want, and this is how you problem solve. You don’t look at the entire picture and say, “xyz,” you say, “Alright, lets break it down into these little, easy to digest pieces, and then we can code them.”
Shannon: Love it!
Fr. Robert: Now Lou, let me ask you this: would it be useful to our audience to take something like this? Because towards the end of module one, we did start looking at more advanced interfaces than just the console window. To take this programming, to take these classes, and to show them how to actually turn it into some sort of app, do you think we are far enough along that we could actually show that?
Lou: Yeah, definitely. You know, like I said, the reason why you are breaking it up into smaller pieces is so that you can go plug it in anywhere. Like you said, I have it plugged into a console app, but I could go plug it into any type of user interface I want. In fact, this specific code is so simple that we could compile it down and even use it on (Unintelligible) Studio on Android or on iOS device, or something like that. I mean, it’s so simple that we could plug it into any of those UIs.
Fr. Robert: Right, right. And actually Dallas in the chat room wants to know if we have a real program that we could share these ideas, use these ideas. This actually is a real program. We are going to make this code available; the question is, will you take the code that we give you and expand upon it? That’s the open invitation. We’ve given you some very simple classes; we’ve given you some very simple code that uses those classes, so expand. As we’ve said, we made it very small on purpose so that people can understand what’s going on. It’s your job to figure out how much more functionality you can get out of that code. Lou, thank you very, very much. Can you give any parting wisdom to someone who may still be having a mini freak out on using classes, abstract classes, and interfaces?
Lou: It’s one of those things, when you build a class, the whole idea is, kinda like you said, you’re problem solving, you’re breaking it down to its basic components, and then you’re constructing it back up again. It’s kind of like building Legos. You know, you select the correct blocks to build the entire whole. So those blocks are made up of all different shapes and sizes. To me those are all different types of objects that you’re building up to another bigger, more sophisticated object. And the reason why they do that is because they have molds for each block and specific size and that’s exactly what a class is, is a mold for a specific thing, and then it can construct and build other things. And so when you are thinking about objects and building classes, that’s really what it should be, is basically how to construct and build bigger things out of smaller things. And then it’s not so daunting when you think about it like that.
Fr. Robert: There you go, folks, straight from…
Shannon: Classes make it easier to make everything awesome.
Fr. Robert: They make everything awesome and they make everything moldy, evidently. Lou Maresca, thank you so much for being out code warrior again. I can’ wait for next week because we are going to take this one step further. We have heard your criticism and we have heard your critique, but we want to make this easy for you to understand, but remember, it is feeling kind of abstract right now because this is a Coding 102 module. You’ve already covered C# and the basics; we’re now trying to give you something a bit more to become a better programmer. Lou, can you tell the folks where they can find you when you are not here on Coding 101?
Lou: Sure, Lou MM on Twitter, and you can find out about me, Lou MM, and also all my work is on CRM dot dynamics dot com.
Fr. Robert: Fantastic.
Shannon: Thank you!
Fr. Robert: Lou Maresca, our code warrior, we salute you.
Shannon: So module one to me feels so much more like, this is the syntax, this is how you write code, and module two is so much more theory, and idea.
Fr. Robert: And that’s what it should be.
Shannon: It’s design.
Fr. Robert: It’s design, right. We’re talking about design, now. Because remember when we did module one, there was so much of it that we had to say, “Just leave this here. Trust us, it has to be here and concentrate on the code. We were getting them to understand the basic constructs of the computer code. This is what a loop looks like, this is what a variable looks like, this is what a function or a method looks like. Now we’re saying, forget that. You obviously have a grasp on what those pieces are, this si how the pieces come together into something that actually becomes useful.
Shannon: Yea! I’m enjoying it.
Fr. Robert: It’s different, but it’s good.
Shannon: It’s confusing.
Fr. Robert: Now folks, we know that this was a lot of information, we’re going to give you all the code. Shannon’s code, Lou’s code, will all be on GitHub. Where can they find the GitHub?
Shannon: TWiT dot TV slash code.
Fr. Robert: Exactly. Go there; you’re going to find the show notes, which will give you the direct link to the GitHub, which will also give you the direct link to all the different modules. Now I know some people were complaining that we only had module one that just means that you have clicked on the wrong module. All four modules are in there. So you have to click on module four to get to the right code examples. You can also find us on our Coding 101 Google Plus group. It’s a good place to be, because it is filled with experts and beginners. In other words, if you have a question, if you have answers, if you have a way to help people who are learning how to code, please, please join our Google Plus group. And they can find us at where?
Shannon: Bit dot LY slash coding one zero one.
Fr. Robert: Woot! Now it’s not just Google Plus, we are also on the Twitters.
Shannon: Yes, we are. So any time you want to get a hold of us, if you are on Twitter, I’m at Snubs. Right there.
Fr. Robert: And I’m at Padre SJ. Twitter dot com slash Padre SJ. Follow us and you’re going to find out what we do when we are not here on Coding 101 extreme. It’s a lot of fun and we would really enjoy a conversation with you. Don’t forget we are live, like right now. Every Thursday, one PM Pacific time, you’re going to find us live dot TWiT dot TV. If you join us, you’ll get to see the preshow, the post show and all the bloopers in between, it’s kind of a nice way to integrate yourself to the TWiT army. And as long as they are watching live…
Shannon: Live dot TWiT dot TV and we also have the chat room, which is where we pull questions during the live show. So if you jump in there and you have a big question about something, just say, “Hey Snubs, Father Robert, what does this do?” And we will hopefully get to it during the live show. That IRC chat room is IRC dot TWiT dot TV.
Fr. Robert: Woot. Until next time, I’m Father Robert Ballecer.
Shannon: I‘m Snubs! Shannon Morse.
Fr. Robert: End of line!