Код IT Загрузка примера кода…

Smalltalk main.st
"=== user-auth.st — Pharo Playground ==="
Object subclass: #User
    instanceVariableNames: 'username password loggedIn'
    classVariableNames: ''
    package: 'OOPPractice' !

User class >> newUsername: aUser password: aPassword [
    ^ self basicNew
        username: aUser;
        password: aPassword;
        loggedIn: false;
        yourself
]

User >> username: aString [ username := aString ]
User >> password: aString [ password := aString ]
User >> loggedIn: aBoolean [ loggedIn := aBoolean ]

User >> login: aPassword [
    aPassword = password
        ifTrue: [
            loggedIn := true.
            Transcript show: 'Добро пожаловать, ', username, '!'; cr ]
        ifFalse: [
            Transcript show: 'Ошибка: неверный пароль'; cr ]
]

User >> logout [
    loggedIn := false.
    Transcript show: username, ' вышел из системы'; cr
]

User >> postMessage: text [
    loggedIn ifFalse: [
        Transcript show: 'Сначала войдите в систему'; cr.
        ^ self ].
    Transcript show: 'Сообщение опубликовано: ', text; cr
]

"--- Demo ---"
| user |
user := User newUsername: 'alex' password: 'secret123'.
user postMessage: 'Привет!'.
user login: 'wrong'.
user login: 'secret123'.
user postMessage: 'Привет, мир!'.
user logout.
user postMessage: 'Ещё одно сообщение'.
"=== user-auth.st — Pharo Playground ==="
Object subclass: #User
    instanceVariableNames: 'username password loggedIn'
    classVariableNames: ''
    package: 'OOPPractice' !

User class >> newUsername: aUser password: aPassword [
    ^ self basicNew
        username: aUser;
        password: aPassword;
        loggedIn: false;
        yourself
]

User >> username: aString [ username := aString ]
User >> password: aString [ password := aString ]
User >> loggedIn: aBoolean [ loggedIn := aBoolean ]

User >> login: aPassword [
    aPassword = password
        ifTrue: [
            loggedIn := true.
            Transcript show: 'Добро пожаловать, ', username, '!'; cr ]
        ifFalse: [
            Transcript show: 'Ошибка: неверный пароль'; cr ]
]

User >> logout [
    loggedIn := false.
    Transcript show: username, ' вышел из системы'; cr
]

User >> postMessage: text [
    loggedIn ifFalse: [
        Transcript show: 'Сначала войдите в систему'; cr.
        ^ self ].
    Transcript show: 'Сообщение опубликовано: ', text; cr
]

"--- Demo ---"
| user |
user := User newUsername: 'alex' password: 'secret123'.
user postMessage: 'Привет!'.
user login: 'wrong'.
user login: 'secret123'.
user postMessage: 'Привет, мир!'.
user logout.
user postMessage: 'Ещё одно сообщение'.