📖 Scenario: Imagine you are creating a simple program to represent a car. Each car has some details like its color and speed, and it can perform actions like accelerating or braking.
🎯 Goal: You will build a Kotlin class called Car that holds the car's color and speed (state) and has functions to change the speed (behavior). This will show how classes combine state and behavior.
📋 What You'll Learn
Create a class named Car with two properties: color (String) and speed (Int).
Add a function accelerate() that increases speed by 10.
Add a function brake() that decreases speed by 10 but not below 0.
Create an instance of Car with color "Red" and speed 0.
Call accelerate() twice and brake() once on the instance.
Print the final speed of the car.
💡 Why This Matters
🌍 Real World
Classes help programmers create objects that represent things in real life, like cars, users, or products, with their details and actions.
💼 Career
Understanding how classes combine state and behavior is fundamental for software development jobs, especially in object-oriented programming languages like Kotlin.
Progress0 / 4 steps
1
Create the Car class with properties
Create a Kotlin class called Car with two properties: color of type String and speed of type Int. Initialize speed to 0.
Kotlin
Hint
Use class Car(val color: String, var speed: Int = 0) to define the class with properties.
2
Add accelerate and brake functions
Inside the Car class, add a function accelerate() that increases speed by 10, and a function brake() that decreases speed by 10 but does not allow speed to go below 0.
Kotlin
Hint
Define fun accelerate() to add 10 to speed. Define fun brake() to subtract 10 but keep speed at least 0.
3
Create a Car instance and change speed
Create a variable myCar as an instance of Car with color "Red" and speed 0. Then call accelerate() twice and brake() once on myCar.
Kotlin
Hint
Create myCar with Car("Red"). Call accelerate() twice and brake() once on it.
4
Print the final speed of the car
Write a println statement to display the final speed of myCar using myCar.speed.
Kotlin
Hint
Use println(myCar.speed) to show the current speed.
Practice
(1/5)
1. Why do classes in Kotlin combine both state and behavior?
easy
A. To avoid using functions
B. To make the program run faster
C. To model real-world objects clearly by grouping data and actions
D. To store data only without any actions
Solution
Step 1: Understand what state and behavior mean
State means data stored in the class, and behavior means actions or functions the class can perform.
Step 2: Why combine them in a class?
Combining state and behavior helps represent real-world objects clearly, making code organized and easier to understand.
Final Answer:
To model real-world objects clearly by grouping data and actions -> Option C
Quick Check:
Classes = State + Behavior [OK]
Hint: Classes group data and actions to model real things [OK]
Common Mistakes:
Thinking classes only store data
Believing classes only contain functions
Confusing classes with simple variables
2. Which of the following is the correct way to define a class with a property and a function in Kotlin?
easy
A. class Car(val color: String) drive() { println("Driving") }
B. class Car(val color: String) { fun drive() { println("Driving") } }
C. class Car { val color: String = drive() println("Driving") }
D. fun Car(val color: String) { drive() println("Driving") }
Solution
Step 1: Check class syntax
In Kotlin, a class is defined with the keyword 'class', properties inside parentheses, and functions inside curly braces.
Step 2: Validate each option
class Car(val color: String) { fun drive() { println("Driving") } } correctly defines a class with a property and a function. Others have syntax errors or misplaced code.
Final Answer:
class Car(val color: String) { fun drive() { println("Driving") } } -> Option B
Quick Check:
Correct class syntax = class Car(val color: String) { fun drive() { println("Driving") } } [OK]
Hint: Class syntax: class Name(props) { functions } [OK]
Common Mistakes:
Using 'fun' instead of 'class' to define a class
Placing function outside class braces
Missing curly braces for class body
3. What will be the output of this Kotlin code?
class LightSwitch(var isOn: Boolean) {
fun toggle() {
isOn = !isOn
}
}
fun main() {
val switch = LightSwitch(false)
switch.toggle()
println(switch.isOn)
}
medium
A. true
B. false
C. null
D. Compilation error
Solution
Step 1: Understand initial state
The LightSwitch object is created with isOn = false.
Step 2: What does toggle() do?
toggle() changes isOn to its opposite. So false becomes true.
Step 3: Print the value
After toggle(), isOn is true, so println prints true.
Final Answer:
true -> Option A
Quick Check:
Toggle false = true [OK]
Hint: Toggle flips Boolean state true/false [OK]
Common Mistakes:
Assuming toggle does not change the state
Confusing initial value with output
Expecting null or error instead of Boolean
4. Identify the error in this Kotlin class and fix it:
class Counter {
var count = 0
fun increment {
count += 1
}
}
medium
A. Missing parentheses after increment function name
B. count should be val instead of var
C. Class name should be lowercase
D. No error, code is correct
Solution
Step 1: Check function syntax
In Kotlin, functions must have parentheses even if no parameters are present.
Step 2: Identify the error
increment function is missing parentheses after its name, causing a syntax error.
Step 3: Fix the error
Add parentheses: fun increment() { count += 1 }
Final Answer:
Missing parentheses after increment function name -> Option A
Quick Check:
Functions need () after name [OK]
Hint: Functions always need () even if empty [OK]
Common Mistakes:
Omitting parentheses in function declaration
Thinking var should be val for counters
Believing class names must be lowercase
5. You want to create a Kotlin class BankAccount that stores a balance and allows deposits and withdrawals. Which design best shows how classes define behavior and state?
hard
A. class BankAccount { fun deposit(amount: Double) { var balance = amount } fun withdraw(amount: Double) { var balance = 0 } }
B. class BankAccount { var balance = 0 fun deposit(amount: Double) { println(amount) } fun withdraw(amount: Double) { println(amount) } }
C. class BankAccount(balance: Double) { fun deposit() { balance += 10 } fun withdraw() { balance -= 10 } }
D. class BankAccount(var balance: Double) { fun deposit(amount: Double) { balance += amount } fun withdraw(amount: Double) { if (balance >= amount) balance -= amount } }
Solution
Step 1: Check if state is stored properly
class BankAccount(var balance: Double) { fun deposit(amount: Double) { balance += amount } fun withdraw(amount: Double) { if (balance >= amount) balance -= amount } } stores balance as a variable property, allowing updates. Others either don't store balance correctly or reset it inside functions.
Step 2: Check behavior methods
class BankAccount(var balance: Double) { fun deposit(amount: Double) { balance += amount } fun withdraw(amount: Double) { if (balance >= amount) balance -= amount } }'s deposit and withdraw update balance correctly and check for sufficient funds before withdrawal.
Final Answer:
class BankAccount(var balance: Double) { fun deposit(amount: Double) { balance += amount } fun withdraw(amount: Double) { if (balance >= amount) balance -= amount } } -> Option D
Quick Check:
State + behavior correctly combined = class BankAccount(var balance: Double) { fun deposit(amount: Double) { balance += amount } fun withdraw(amount: Double) { if (balance >= amount) balance -= amount } } [OK]
Hint: Store state as var, update in functions with checks [OK]
Common Mistakes:
Not storing balance as a class property
Resetting balance inside methods
Ignoring withdrawal conditions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.