Перейти к содержанию

🗒 Задача

Скопируй класс 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()
}