📖 Scenario: You are creating a simple app to store information about books in a library. Each book has a title, an author, and a year of publication.
🎯 Goal: Build a Kotlin program that uses a data class to hold book information, creates a list of books, and prints their details.
📋 What You'll Learn
Create a data class called Book with properties title, author, and year
Create a list called library containing three Book objects with exact values
Use a for loop with variables book to iterate over library
Print each book's details in the format: Title: [title], Author: [author], Year: [year]
💡 Why This Matters
🌍 Real World
Data classes help organize related information clearly, like storing book details in a library app.
💼 Career
Understanding data classes is essential for Kotlin developers to write clean, maintainable code that models real-world data.
Progress0 / 4 steps
1
Create the data class Book
Create a Kotlin data class called Book with three properties: title of type String, author of type String, and year of type Int.
Kotlin
Hint
Use the data class keyword followed by the class name and properties inside parentheses.
2
Create a list of books called library
Create a list called library containing three Book objects with these exact values: 1. Title: "1984", Author: "George Orwell", Year: 1949 2. Title: "To Kill a Mockingbird", Author: "Harper Lee", Year: 1960 3. Title: "The Great Gatsby", Author: "F. Scott Fitzgerald", Year: 1925
Kotlin
Hint
Use listOf() to create the list and call the Book constructor for each item.
3
Loop through library to access each book
Use a for loop with variable book to iterate over the library list.
Kotlin
Hint
Use for (book in library) to loop through the list.
4
Print each book's details
Inside the for loop, write a println statement to print each book's details in this exact format: Title: [title], Author: [author], Year: [year] Use the book variable's properties.
Kotlin
Hint
Use println with string templates like "${book.title}" to insert values.
Practice
(1/5)
1. What is the main purpose of a data class in Kotlin?
easy
A. To manage database connections
B. To create a user interface layout
C. To hold data with automatically generated functions like toString() and equals()
D. To perform complex mathematical calculations
Solution
Step 1: Understand the role of data classes
Data classes are designed to hold data and automatically provide useful functions like toString(), equals(), and hashCode().
Step 2: Compare options with data class purpose
Options A, B, and D describe unrelated tasks. Only To hold data with automatically generated functions like toString() and equals() matches the purpose of data classes.
Final Answer:
To hold data with automatically generated functions like toString() and equals() -> Option C
Quick Check:
Data class purpose = hold data simply [OK]
Hint: Data classes are for simple data holders with auto functions [OK]
Common Mistakes:
Confusing data classes with UI or database classes
Thinking data classes perform calculations
Ignoring the automatic function generation feature
2. Which of the following is the correct syntax to declare a Kotlin data class named Person with properties name (String) and age (Int)?
easy
A. data class Person(val name: String, val age: Int)
B. class Person(val name: String, val age: Int)
C. data Person(val name: String, val age: Int)
D. class data Person(name: String, age: Int)
Solution
Step 1: Recall data class syntax
In Kotlin, a data class is declared with the keyword data class followed by the class name and primary constructor with properties.
Step 2: Check each option
class Person(val name: String, val age: Int) misses the data keyword. data Person(val name: String, val age: Int) uses data without class. class data Person(name: String, age: Int) incorrectly orders keywords. Only data class Person(val name: String, val age: Int) is correct.
Final Answer:
data class Person(val name: String, val age: Int) -> Option A
Quick Check:
Correct syntax = data class + name + properties [OK]
Hint: Start with 'data class' keyword for data classes [OK]
Common Mistakes:
Omitting the 'data' keyword
Swapping 'data' and 'class' keywords
Not using 'val' or 'var' for properties
3. What will be the output of this Kotlin code?
data class Point(val x: Int, val y: Int)
fun main() {
val p1 = Point(3, 4)
val p2 = Point(3, 4)
println(p1 == p2)
println(p1)
}
medium
A. false
Point(x=3, y=4)
B. true
Point(x=3, y=4)
C. true
Point(3, 4)
D. false
Point(3, 4)
Solution
Step 1: Understand equality in data classes
Data classes automatically generate equals() that compares property values, so p1 == p2 is true because both have same x and y.
Step 2: Understand toString() output
Data classes generate toString() that prints property names and values like Point(x=3, y=4).
Final Answer:
true
Point(x=3, y=4) -> Option B
Quick Check:
Data class equality and toString() = true and Point(x=3, y=4) [OK]
Hint: Data classes compare by value and print with property names [OK]
Common Mistakes:
Assuming == compares references, not values
Expecting default toString() without property names
Confusing output format of toString()
4. Identify the error in this Kotlin data class declaration:
data class User(name: String, age: Int)
medium
A. Data classes cannot have more than one property
B. The class name should be lowercase
C. The keyword data should be after class
D. Missing val or var before properties in the constructor
Solution
Step 1: Check primary constructor properties
In data classes, properties in the primary constructor must be marked with val or var to become class properties.
Step 2: Analyze the given code
The code lacks val or var before name and age, so they are just parameters, not properties.
Final Answer:
Missing val or var before properties in the constructor -> Option D
Quick Check:
Constructor properties need val/var [OK]
Hint: Always add val or var before constructor properties [OK]
Common Mistakes:
Forgetting val/var in data class constructor
Thinking data keyword position is wrong
Assuming class names can be lowercase
5. You want to create a data class Book with properties title (String), author (String), and year (Int). You also want to create a copy of a Book instance but change only the year. Which Kotlin feature helps you do this easily?
hard
A. The copy() function automatically generated for data classes
B. Manually creating a new instance with all properties copied
C. Using inheritance to override the year property
D. Using a mutable list to store book properties
Solution
Step 1: Recall data class features
Data classes automatically generate a copy() function that creates a new instance copying all properties, allowing selective changes.
Step 2: Match the feature to the problem
The copy() function automatically generated for data classes describes the copy() function which fits the need to copy and change only year. Other options are less efficient or unrelated.
Final Answer:
The copy() function automatically generated for data classes -> Option A
Quick Check:
Use copy() to clone and modify data class instances [OK]
Hint: Use copy() to clone and change data class properties [OK]
Common Mistakes:
Not knowing about the copy() function
Trying to manually copy all properties
Confusing inheritance with copying
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.