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

Smalltalk main.st
"=== student.st — Pharo Playground ==="
Object subclass: #Student
    instanceVariableNames: 'name grades'
    classVariableNames: 'PassingScore'
    package: 'OOPPractice' !

Student class >> initialize [
    PassingScore := 60
]

Student class >> newName: aName [
    ^ self basicNew
        name: aName;
        grades: OrderedCollection new;
        yourself
]

Student >> name: aString [ name := aString ]
Student >> grades: aCollection [ grades := aCollection ]

Student >> addGrade: grade [
    grades add: grade.
    Transcript show: 'Оценка ', grade printString, ' добавлена для ', name; cr
]

Student >> averageScore [
    grades isEmpty ifTrue: [ ^ 0 ].
    ^ (grades sum) / grades size
]

Student >> isPassing [
    ^ self averageScore >= PassingScore
]

Student >> info [
    Transcript show: 'Студент: ', name; cr.
    Transcript show: 'Оценки: ', grades printString; cr.
    Transcript show: 'Средний балл: ', (self averageScore printShowingDecimalPlaces: 1); cr.
    Transcript show: (self isPassing ifTrue: ['Зачёт получен'] ifFalse: ['Зачёт не получен']); cr
]

"--- Demo ---"
| student |
student := Student newName: 'Анна'.
student addGrade: 70.
student addGrade: 85.
student addGrade: 55.
student info.
"=== student.st — Pharo Playground ==="
Object subclass: #Student
    instanceVariableNames: 'name grades'
    classVariableNames: 'PassingScore'
    package: 'OOPPractice' !

Student class >> initialize [
    PassingScore := 60
]

Student class >> newName: aName [
    ^ self basicNew
        name: aName;
        grades: OrderedCollection new;
        yourself
]

Student >> name: aString [ name := aString ]
Student >> grades: aCollection [ grades := aCollection ]

Student >> addGrade: grade [
    grades add: grade.
    Transcript show: 'Оценка ', grade printString, ' добавлена для ', name; cr
]

Student >> averageScore [
    grades isEmpty ifTrue: [ ^ 0 ].
    ^ (grades sum) / grades size
]

Student >> isPassing [
    ^ self averageScore >= PassingScore
]

Student >> info [
    Transcript show: 'Студент: ', name; cr.
    Transcript show: 'Оценки: ', grades printString; cr.
    Transcript show: 'Средний балл: ', (self averageScore printShowingDecimalPlaces: 1); cr.
    Transcript show: (self isPassing ifTrue: ['Зачёт получен'] ifFalse: ['Зачёт не получен']); cr
]

"--- Demo ---"
| student |
student := Student newName: 'Анна'.
student addGrade: 70.
student addGrade: 85.
student addGrade: 55.
student info.