🗒 Задача¶
Скопируй класс User из первой задачи и назови User2. Добавь к классу новое необязательное свойство bio и несколько методов:
-
вывод информации о пользователе в консоль;
-
считывание из консоли текста и запись в поле bio;
-
изменение пароля — сначала запросить текущий пароль, и, если он введен верно, запросить новый. Записать его в поле и сообщить, что пароль изменен;
Далее создай объект, заполни информацию “о себе” и замени пароль. В конце выведи обновленную информацию о пользователе.
❌ Ошибки¶
-
свойство bio не имеет значения по умолчанию — предлагать инициализировать или пустой строкой, или null (который будем проходить позже)
-
метод отправки сообщения не принимает строку
✏️ Комментарии¶
Обрати внимание в ТЗ био - необязательное для заполнения свойство. Как сделать так, чтобы не нужно было его заполнять при создании объекта?
Лучше избежать использования lateinit по возможности. Вот тут Кирилл наглядно объясняет почему https://youtu.be/0nXXUzMyF8c
Ты уже указал в классе значение по умолчанию для этого свойства. При создании объекта не нужно задавать его еще раз.
Напоминаю прожимать автоформатирование как минимум перед коммитом. Это устранит мелкие недочеты по форматированию, улучшит читаемость и отношение к себе со стороны коллег ))
🧾 Решение¶
class User2(
val id: Int,
val login: String,
var password: String,
val email: String,
var bio: String? = null,
) {
fun outputInUserInformation() {
println("Данные пользователя N $id")
println("Логин: $login")
println("Пароль: $password")
println("Электронная почта: $email")
println("Новые данные: ${bio ?: "Нет данных"}")
}
fun changePassword() {
println("Введите старый пароль")
val checkPassword = readln()
if (checkPassword == password) {
println("Введите новый пароль")
}
val passwordNew = readln()
password = passwordNew
println("Пароль изменен, новый пароль $passwordNew!")
}
fun setBio() {
val newBio = readln()
bio = newBio
println("Данные обновлены")
}
}
fun main() {
val user = User2(
id = 1,
login = "qwerty72",
password = "kat72",
email = "qwerty72@mail.com"
)
user.outputInUserInformation()
println("Хотите изменить пароль?")
val answer = readln()
if (answer.equals("да", ignoreCase = true)) {
user.changePassword()
}
user.outputInUserInformation()
println("Хотите добавить данные?")
val answer2 = readln()
if (answer2.equals("да", ignoreCase = true)) {
user.setBio()
}
user.outputInUserInformation()
}
class User2(val id: Int, val login: String, private var password: String, val email: String, var bio: String? = null) {
fun displayUserInfo() {
println("ID: $id, Login: $login, Email: $email, Bio: ${bio ?: "No bio available"}")
}
fun updateBio() {
print("Enter new bio: ")
val newBio = readLine()
bio = newBio
println("Bio updated.")
}
fun changePassword() {
print("Enter current password: ")
val currentPassword = readLine()
if (currentPassword == password) {
print("Enter new password: ")
val newPassword = readLine()
password = newPassword ?: password
println("Password updated.")
} else {
println("Incorrect password. Password not updated.")
}
}
}
fun main() {
val user = User2(1, "user1", "password1", "user1@example.com")
user.updateBio()
user.changePassword()
user.displayUserInfo()
}