Программная реализация
Руководствуясь объектной моделью, полученной ранее, была произведена программная реализация. Для этого в среде VisualAge Smalltalk были заведены классы, показанные на рис. 7. Всего потребовалось создать два обычных Smalltalk-класса, один класс, являющийся невизуальным компонентом, пять классов, обладающих визуальным пользовательским интерфейсом. Кроме того, один класс был создан средой программирования автоматически и служит внутренним целям среды. Далее последовательно опишем содержание пользовательских классов.

Рис. 7
Класс «HotelBDUser»

Рис. 8
Object subclass: #HotelBDUser
instanceVariableNames: 'user FName SName sex haveRooms '
classVariableNames: ''
poolDictionaries: ''
FName
^FName
FName: anObject
FName := anObject.
self signalEvent: #name with: anObject
SName
^SName
SName: anObject
SName := anObject.
self signalEvent: #name with: anObject
sex
^sex
sex: anObject
sex := anObject.
self signalEvent: #sex with: anObject
addRoom:room
haveRooms isNil ifTrue:[haveRooms:=OrderedCollection new].
haveRooms add:room.
haveRoom: RoomType
|flag|
flag:=false.
haveRooms isNil
ifFalse:[
haveRooms do:[:room| (room type = RoomType)
ifTrue:[flag:=true]]].
^flag
printString
|str|
str:=FName,' ',SName,' пол = ',sex,'; номер: '.
haveRooms isNil ifTrue:[str:=str,'Нет'];
ifFalse:[
haveRooms do:[:an|str:=str,an printString]].
3.2 Класс «HotelBDRoom»
Рис.9
Object subclass: #HotelBDRoom
instanceVariableNames: 'number type days '
classVariableNames: ''
poolDictionaries: ''
days
^days
days: anObject
days := anObject.
self signalEvent: #days with: anObject
number
^number
number: anObject
number := anObject.
self signalEvent: #number with: anObject
type
^type
type: anObject
type:= anObject.
self signalEvent: #type with: anObject
printString
^'номер ',number,' типа ',type,' на ',days,' дней; '.