کلاس، آبجکت و Data Class؛ ساخت آدمکهای کدی
وقتی داده و رفتار باید با هم زندگی کنن، کلاس میسازیم؛ نه اینکه همهچی پخشوپلا باشه.
کلاس ساده
کلاس قالب ساخت آبجکته. مثل قالب شیرینی؛ هر آبجکت یه شیرینی جداست، فقط امیدواریم نسوزه.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
class User(val name: String, var age: Int) {
fun introduce() {
println("من $name هستم و $age سالمه")
}
}
fun main() {
val user = User("آراد", 24)
user.introduce()
}
من آراد هستم و 24 سالمه
Data class برای مدل داده
وقتی کلاس فقط برای نگهداری دادهست، `data class` بزن. خودش `toString`, `equals`, `copy` و چندتا چیز خوشگل دیگه رو میسازه. یعنی کاتلین میگه تو بشین چایی بخور، این کارهای تکراری با من.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
data class Product(
val id: Int,
val title: String,
val price: Int
)
fun main() {
val keyboard = Product(1, "Keyboard", 200)
val cheaper = keyboard.copy(price = 150)
println(cheaper)
}
Product(id=1, title=Keyboard, price=150)
object برای Singleton
اگر فقط یک نمونه از چیزی لازم داری، `object` عالیه؛ مثلاً تنظیمات برنامه یا Logger. البته همهچی رو singleton نکن؛ دنیا به اندازه کافی شلوغه.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
object AppConfig {
const val appName = "DiCode"
}
fun main() {
println(AppConfig.appName)
}
DiCode
نتیجه این درس 🎯
کلاسها مدل ذهنی برنامهات را میسازند. data class برای داده عالی است، object برای singleton تمیز است، و کلاس معمولی برای رفتار و وضعیت کنار هم.
تمرین! 🧠
یک data class برای Article بساز که title، category و views داشته باشد، بعد یک نمونه بساز و چاپ کن.
data class Article(
val title: String,
val category: String,
val views: Int
)
fun main() {
val article = Article("آموزش Kotlin", "برنامهنویسی", 1200)
println(article)
}
Article(title=آموزش Kotlin, category=برنامهنویسی, views=1200)