The Card Class: Kollector's Edition6:36 with Ben Deitch
In this video we'll create our Card class using Kotlin!
We've just finished creating our Card class but we did it in Java. 0:00 Now let's do it in Kotlin. 0:05 Lucky for 0:07 us the nice folks over at IntelliJ couldn't have made this any easier. 0:07 Just select the Code tab and choose Convert Java File to Kotlin File 0:13 then hit OK and yeah Kotlin is awesome. 0:20 Not only did we just condense 27 lines of Java and to one line of Kotlin but 0:25 we did it automatically and it wasn't something special about the code we wrote, 0:31 you can convert pretty much any Java file to Kotlin by using that same method. 0:36 So if you ever get stuck, remember you can always write your code in Java and 0:42 then convert it to see how it's done in Kotlin. 0:47 Nice, but as awesome as that was, 0:50 we did skip just a few steps by having it convert automatically. 0:52 Let's undo that, and this time we'll take things a little bit slower. 0:56 But first let's use Cmd+Shift+Plus on Mac or 1:02 Ctrl+Shift+Plus on Windows to expand the collapsed code sections. 1:06 Now, the first thing we need to talk about in transitioning this Card class from Java 1:11 to Kotlin is the difference between a field and a property. 1:16 We already know what a field is. 1:21 We've got three of them up here, value, suit and faceUp. 1:23 But what's a property? 1:28 Well a property is just getters and setters. 1:30 Here we have the Value property, the Suit property And the FaceUp property. 1:34 Now looking at these examples, 1:39 you might be thinking that a property always needs a field to back it up. 1:41 But that's not always the case. 1:46 For example, what if we want to add a property called class name. 1:48 And we could do it something like this. 1:53 [SOUND] getClassName and 1:55 inside this function we could return 1:59 this.getClass.getSimpleName. 2:04 Now we have a class name property without having a class name field. 2:10 Okay so sometimes we can have a property without a field to support it. 2:15 Now that we know that let's get rid of our class name property. 2:20 [SOUND]. 2:23 And that's enough about properties for now you ready for the big reveal? 2:26 All right here we go, in Kotlin we can only declare properties. 2:30 Anytime we create a variable in Kotlin it's a property. 2:36 Let's investigate this a bit more by rewriting our card class in Kotlin. 2:40 Let's rename this class to JavaCard. 2:44 And then create a new Kotlin class named Card. 2:54 And pick Class. 3:01 Then let's split JavaCard vertically, to get it on the right. 3:04 And our new card class on the left. 3:08 Now give us a little more room over here too. 3:15 And actually, let's just hide the project name for now. 3:17 All right. 3:21 We can see that classes in Kotlin look pretty much the same as classes in Java. 3:22 Let's start this party by creating our value property. 3:27 In Kotlin, we start each property declaration with either val or 3:31 var, depending on if the property can change. 3:35 We use var for mutable properties. 3:39 And if it's an immutable property, we use val. 3:42 Since the value of a card is immutable, let's start with the val keyword and 3:45 then add the name of our property, value, then let's add a colon and 3:50 after that, let's type Int with a capital I. 3:55 Kotlin doesn't have primitives, so we have to use the Int class but 3:59 we're still getting an error, Property must be Initialized or be abstract. 4:04 Another thing about Kotlin is that there aren't any default values. 4:09 And if a property doesn't have a value it's an error, so on the next line let's 4:13 hit Tab and then type get,and pick the option with the curly braces. 4:18 Then inside the curly braces, let's type return 0, and that's it. 4:25 You've just created your first Kotlin property. 4:32 And note that we didn't add a semi colon. 4:36 You can add semicolons if you like, but Kotlin does just fine without them. 4:39 Okay, on the next line let's hit Tab, and 4:44 type set and, again, pick the curly braces option. 4:48 And here we see exactly what immutability means to Kotlin. 4:53 Since we declare this property as immutable by using the val keyword, 4:56 Kotlin is not okay with us adding a setter. 5:02 So, let's delete that. 5:05 Now another cool thing about Kotlin is that if a function contains only 5:08 one expression, like this one does, 5:13 then we can rewrite it with an equal sign like this. 5:15 However, an even cooler thing is that we almost never need to specify the getters 5:26 and setters in this fashion. 5:30 We can just use the = 0 part and Kotlin will fill in the rest. 5:32 All right, that takes care of our value property. 5:37 Now let's handle or suit property. 5:40 And since the suit of a card is also immutable, 5:42 we should start this property with right, val. 5:45 So, val, suit and it's a String 5:49 and since we're required to give it a value let's just use an empty string. 5:55 Nice. 6:00 Lastly, let's handle the face up property. 6:01 A card can change from face up to face down, 6:04 meaning we'll start this property with var. 6:07 Next comes the name of the property, faceUp, followed by a colon, 6:11 and then the data type which in this case is Boolean. 6:16 Finally, let's set it equal to false, because each card should start face down. 6:21 Great. 6:27 We've got our card class, and we've got our three properties. 6:27 In the next video, 6:30 we'll see how we can properly populate these properties by adding a constructor. 6:32
You need to sign up for Treehouse in order to download course files.Sign up