Classes em Kotlin
Классы в Kotlin: data class, sealed class и companion object
Kotlin делает ООП удобным и лаконичным. Data class генерирует boilerplate автоматически, sealed class идеален для состояний, companion object — для статических методов. Изучим всё!
Обычный класс
class Person(val name: String, var age: Int) {
val isAdult: Boolean get() = age >= 18
fun greet() = println("Привет, я $name, мне $age лет")
init {
require(age >= 0) { "Возраст не может быть отрицательным" }
}
}
val person = Person("Саша", 25)
person.greet()
println(person.isAdult) // true
data class
data class Student(val name: String, val grade: Int, val subject: String = "Математика")
val s1 = Student("Саша", 5)
val s2 = Student("Саша", 5)
val s3 = s1.copy(grade = 4)
println(s1) // Student(name=Саша, grade=5, subject=Математика)
println(s1 == s2) // true!
println(s1 === s2) // false
println(s3) // Student(name=Саша, grade=4, subject=Математика)
val (name, grade) = s1 // Деструктуризация
sealed class
sealed class NetworkResult{ data class Success (val data: T) : NetworkResult () data class Error(val message: String, val code: Int) : NetworkResult () object Loading : NetworkResult () } fun handle(result: NetworkResult ) { when (result) { is NetworkResult.Success -> println("Данные: ${result.data}") is NetworkResult.Error -> println("Ошибка ${result.code}: ${result.message}") NetworkResult.Loading -> println("Загрузка...") // else не нужен! } } handle(NetworkResult.Loading) handle(NetworkResult.Success("Пользователи загружены")) handle(NetworkResult.Error("Нет сети", 503))
object — синглтон
object AppConfig {
val appName = "МоёПриложение"
val version = "1.0.0"
var isDebug = false
fun getFullVersion() = "$appName v$version"
}
println(AppConfig.appName)
println(AppConfig.getFullVersion())
companion object
class DatabaseHelper private constructor(val name: String) {
companion object {
private var instance: DatabaseHelper? = null
fun getInstance(name: String): DatabaseHelper =
instance ?: DatabaseHelper(name).also { instance = it }
fun isValidName(name: String) = name.isNotBlank()
}
}
val db1 = DatabaseHelper.getInstance("mydb")
val db2 = DatabaseHelper.getInstance("mydb")
println(db1 === db2) // true!
println(DatabaseHelper.isValidName("test")) // true
Interface и abstract
interface Drawable {
fun draw()
fun getColor(): String = "Black" // Default!
}
abstract class Shape(val color: String) : Drawable {
abstract fun area(): Double
}
class Circle(val radius: Double, color: String) : Shape(color) {
override fun draw() = println("Круг радиуса $radius")
override fun area() = Math.PI * radius * radius
}
val c = Circle(5.0, "Red")
c.draw()
println("%.2f".format(c.area()))
Итоги урока
- class — обычный класс; init блок для инициализации
- data class — автоматический equals/hashCode/toString/copy
- sealed class — закрытая иерархия для состояний
- object — синглтон (один экземпляр)
- companion object — "статические" методы и фабрики
- interface с default реализациями
- abstract class — для базовой реализации
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!
💪 Дополнительные упражнения
Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!
- Напиши программу, которая считает количество гласных в строке
- Создай функцию, которая проверяет является ли число простым
- Реализуй простую игру "угадай число" с подсказками
- Напиши калькулятор с четырьмя операциями
- Создай программу-органайзер задач (TODO list)
📋 Лучшие практики
Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:
- DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
- KISS (Keep It Simple, Stupid) — пиши простой и понятный код
- Именование — переменные должны отражать смысл:
userAgeлучше чемx - Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
- Маленькие функции — каждая функция должна делать одно дело
📚 Полезные ресурсы для дальнейшего изучения
- Официальная документация — лучший источник правды
- Stack Overflow — ответы на вопросы программистов
- GitHub — смотри на реальные проекты с открытым кодом
- YouTube — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!