Программная реализация

Руководствуясь объектной моделью, полученной ранее, была произведена программная реализация. Для этого в среде 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,' дней; '.

 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >