/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
scripts/oop-practice-sources/smalltalk/car.st
49 строк
1 KB
Spirzen
OOP
09 июн 2026, 20:58
09 июн 2026, 20:58
1dca232
Код
Авторство
О чём код?
"=== car.st — Pharo Playground ===" Object subclass: #Car instanceVariableNames: 'brand fuel mileage' classVariableNames: 'ServiceInterval FuelPerKm' package: 'OOPPractice' ! Car class >> initialize [ ServiceInterval := 15000. FuelPerKm := 0.1 ] Car class >> newBrand: aBrand [ ^ self basicNew brand: aBrand; fuel: 40.0; mileage: 0; yourself ] Car >> brand: aString [ brand := aString ] Car >> fuel: aFloat [ fuel := aFloat ] Car >> mileage: anInteger [ mileage := anInteger ] Car >> refuel: liters [ fuel := fuel + liters. Transcript show: 'Заправка: +', liters printString, ' л. Топливо: ', (fuel printShowingDecimalPlaces: 1), ' л'; cr ] Car >> drive: km [ | needed | needed := km * FuelPerKm. needed > fuel ifTrue: [ Transcript show: 'Ошибка: недостаточно топлива'; cr. ^ self ]. fuel := fuel - needed. mileage := mileage + km. Transcript show: 'Проехали ', km printString, ' км. Топливо: ', (fuel printShowingDecimalPlaces: 1), ' л. Пробег: ', mileage printString, ' км'; cr. mileage >= ServiceInterval ifTrue: [ Transcript show: '⚠️ ВНИМАНИЕ: требуется техобслуживание!'; cr ] ] "--- Demo ---" | car | car := Car newBrand: 'Lada'. car refuel: 10. car drive: 5000. car drive: 11000.