Á͘ ˙Œ ˙‚Ý…‹Ÿ‹ ˙Á̓ ̓͂— ԃÁÍ ĹŠ‚‹
ÜßÁ ś‹–

Allen Holub ŕ…Œßœ
JavaWorld
͕Îß͟„ ΂œžŒ :݇ͅ›

:ŕšŠ
áÍ՜ ̓͂— ԃÁÍ ŕ‚˜ËŸË ÎÁ Á͘˙Œ ˙‰ÁÍÔ ŕŸÍ՜ ͂…Š‚‹ ÍŸÎ ŕƒ ŕ™‚–› ޟÁ ÍË
ŋŸˆ Ăߊ ŗ‡ƒŔ ڟ ŕ— ÝŸË˙› ɟŽß… ٟ–Ë ÍßÔ ŕƒ ŕ™‚–› ޟÁ ÍË .ݟÎÁËéœÁ˙›
˙‚ÍÁ΃Á Á͈ ŕ— ŕ͂ƒ ޟÁÍË ŢŸœˆ› .˜— ͂…•Í ݅‹Ÿ‹ ܗ ÍË ËéŸ‚éƒ ŕœß˜ˆ ß
ÍË Visual Cafe ŹVisual BJ++ ͟՜ RAD ‘ŸÍ‹ áË̓͂— ŕ›‚œÍƒ ÚéŸ ŕéé‹ßé…
Á͘˙éŒ ˙‹Ÿßœ ŕ›‚éœÍéƒ ÚÍË .ݟÎÁË̈́˙› Ɖƒ ŕƒ Ëœ…‹Ÿœ ˟•› ÁÍé˜˙éŒ Ô韉›
.ŋÁ ˟•› ̓ ͂— ԃÁÍ ˙‚Í‚—ŕÁÍ ÚÍË ˙ÁÍéƒ

á΂ééé‹ ŕ˂éééŸééé„ Ăßéééˆ Í‚éééžéééˆ ‚ééé›éŸé–é…é‹é› ŕ陂é–é› ŢéŸÁ ÍË
ŢŔ ÎÁ ŃéŸé„ ‚é›Á .ݝË˙› ɟŽß… ÁÍ OOUI (Object Oriented User Interface)
ŕéƒ Ë韂ƒ ŹËœÍÁË ÁÍ ˙‚Š ˙‚Î‚Ÿœ áË̓͂— ˙‚ŕ›‚œÍƒ ޟœˆ Á͈ ŕ—œŸÁ ˟‚ƒ
.Ëߌ ŕËÁË ÉŸŽß… ŕĎŸß ÍßÔ

ŹVisual J++ ŹJbuilder) ˙é™éé• ˙‚ÍÁ΃Á ÎÁ ڟˆŸ Á͈ ŕ— ŕ͂ƒ ޟÁ ÍË Ţ›
ŹËéœé…‹Ÿœ ˂œ› Á͘˙Œ ݅‹Ÿ‹ ڟ ˙‰ÁÍÔ ˙Á̓ RAD (Visual Cafe ŹVisual Age
.ËÁË ÝÁߊ ɟŽß…

ÉéŸéŽßé… ÁÍ ÁÍé‡Á ނ›Î ÍË ‚Ĺ—‡ƒŔ ޟƒ Ԃƒ…ÍÁ ŕ߉œ ß Ĺ—‡ƒŔ ŕ™‚–› ޟÁ ÍË
˙é‰ÁÍéÔ ˙‚á˜›Î‚Ÿœ Á͘˙Œ ˙‚Ý…‹Ÿ‹ ŕ— Ëߛœ ˟Áߊ གŒ› ޟœˆ› .ݝË˙›
ނé‹éŸßéœ ŕ雂éœÍéƒ Á̙ .ŋŸœ procedural ˙‚Ý…‹Ÿ‹ ˙˜Ë‚‹ ŕƒ ŕ— ËœÍÁË UI
.˜ߌ˙› ŕ‡Áߛ ܗŒ› ‚ƒ Á͘˙Œ ˙‚Ý…‹Ÿ‹ á΂‹ ŕ˂Ÿ„ ˙Á̓ procedural



Á͘˙Œ ˙‰ÁÍÔ á˟™— ݟ‚•› !ŋÁ ŕ‚ƒ…ŒÁ ˟œÁË˙› ‚›Œ ŕˆœŔ

Ţ韌‚› ŢßÍË ÍË (‚ ŗ‡ƒŔ) ˜›Œß łœÁߟ‰ á͋ ڟ ˜œ‚› ÁÍ Á͘ ˙Œ ݅‹Ÿ‹
ŢéŸÁ .Ëéœéœé—˙é› Ĺƒ‰ ͘ŸË—Ÿ ‚ƒ ݂Ÿ„ ŢË͗ Ü˃ ß ËÍ ‚ƒ ŕ— ËŸœ— Íߍ… Ëߊ
ŕËÍ ËœœÁ߅˙› ŹËœŒ‚ƒ ŕ…ŒÁË ÚͅŒ› łŸßŠ ŕ—Ÿ…ÍߍÍË Ź‚ ŗ‡ƒŔ ‚Ÿ łœÁߟ‰
ÁÍ ˙鞃‚Œ› ˙‚Ý‚Ÿ„ К— ڟ ˙‚Ĺ—‡ƒŔ ͟‚‹ ˜œ‚› ˜œÁ߅ƒ ͘Á) .˜ߌ ᘃ
‘é–Áß ÍË .К— ŕœ ËŸÍÁË Ĺ—‡ƒŔ ˙ß͘ ŹÁ͇Á ނ›Î ÍË ‚›Á (˜͟˜ƒ ͂Ÿ…ŠÁ ÍË
ÎÁ ˙Áŕéßé›é‡é› .Ĺ鋂Ĺ—‡ƒŔ ÎÁ ˙‹š— ŹÝŸ›‚œ˙› К— ނ‹Ÿßœ ŕ›‚œÍƒ ‚› ŕˆœŔ
˙é‰ÁÍéÔ ‚é› .ËéœÍŸ˜˙› ÍÁ͖ К— ڟ ÍË ŹËœÍÁË ÚͅŒ› łŸßŠ ŕ— ˙Ÿ‚Ĺ—‡ƒŔ
.К— ̓ ˙œ…ƒ› ˙‰ÁÍÔ ŕœ ÝŸË˙› ݂‡œÁ Á͘˙Œ

.˜…‹ ˙•Š› łšÔÁ ŕ› .ŋ‚ŕËÁË Ë͇… ŹÁ͘˙Œ ˙‰ÁÍÔ ŃŠƒ ޟͅ˙™Á


żĹ‹Á áψ ŕˆ ‚–Ÿ–Ë ŗ‡ƒŔ ڟ Є

ÎÁ ˙Áŕß›‡› ŕÁ͛ ŕƒ ˙ÁŕËÁË Í‚…Š‚‹ ŗ‡ƒŔ ŕ— ËŸŒ‚ƒ ŕ˜Áߊ ˙ƒ‚…— ÍË ËŸ‚Œ
˙éœééŸ .Ë霗˙› á͂—…‹Ë ÁÍ ˙ÁŕËÁË Í‚…Š‚‹ ŢŔ ŕ— Ĺ‹Á ˅› ݂œ ŕƒ ‚Ë͗™›
ŹËéË ݂é‡éœÁ ËéœÁ߅˙› ŕ— ŕˆœŔ ‚ƒ ŗ‡ƒŔ .ŋ‚ĹŸ™ƒ‚– ÎÁ ˙Áŕß›‡› ŗ‡ƒŔ
Ź˙é…Í‚éƒé ŕéƒ .ŋÁ ݂‡œÁ ŕ߉œ ÎÁ ˙ŒŠƒ ŕËÁË ß Ý‚‡œÁ ŕ߉œ .˜ߌ˙› ؟͐…
ŢéŸÁ ŕé— ˙韂éËé…é› ß Ëœ— ŕ‚ŸÍË ß Ü‚‹ÍÁ ˜Á߅˙› ŕ— ˙Ÿ‚Ý‚Ÿ„ ‚ƒ ŗ‡ƒŔ
̓ ˟‚ƒ .Ëߌ˙› ؟͐… ŹËœœ—˙› ŕÍÁËÁ Ç͂Š ˙‚ŸœË ‚ƒ ŕÍ߂‰› ˙Á̓ ÁÍ ‚Ý‚Ÿ„
ŕßé‰éœ ŕœ ŢŔ ˙‚ĹŸ™ƒ‚– ˙œŸ .Ëߛœ ˟—‚… ËË Ý‚‡œÁ ˜Á߅˙› ҃Ŕ ŕ— ŕˆœŔ
ÁÍ ËßéŠ Ĺé–ß ‚éŕ…• Á͘˙Œ ނ‹Ÿßœ ŕ›‚œÍƒ ͆—Á .‚ĹŸ™ƒ‚– ޟÁ á΂‹ ŕ˂Ÿ„
.ËéœéŒéŸË霟ƒ ŗ‡ƒŔ ˙ÁŕËÁË Î‡ ŕ͂ƒÍË ˙…‰ ŕ—œŔ ÎÁ џ„ .˜œ—˙› ˙‰ÁÍÔ Ř͍
.ݟÍÁË Î‚Ÿœ ‚ŕËÁË ÎÁ ˙ސƒ ŕƒ ‚Ĺ—‡ƒŔ ͆—Á á΂‹ŕ˂Ÿ„ ˙Á̓ ŕ…ƒ™Á



:˟̓ƒ ͂— ŕƒ Á͘˙Œ ݅‹Ÿ‹ ڟ ޅŠ‚œŒ ˙Á̓ ÁÍ Á͟ΠޟœÁߖ
ŕéƒ áÎ‚é‹ ŕ˂韄 łŸŸÎ‡ ŕ› ˙Á̓ Ţߜ‚– ޟÁ) .˜…‹ ˙ßŠ ‚ŕËÁË ŕ› -ą
.(‚ŕËÁË Ô–• ŕœ ËßÍ˙› ͂—
ŕƒ ‚ŕËÁË á΂‹ ˙›ß› ˙Á̓ Ԗ• ‚žœŔ) ŋÁ ŕ‚ƒ…ŒÁ ‘ƒÁ߅ ŕ‚ŸÍË ß Ü‚‹ÍÁ -˛
(˜ßÍ˙› ͂—
ŋÁߊÍË ËË Ý‚‡œÁ ÁÍ á͂— ˟Áߊ˙› ŕ— ˙…‚šÔÁ ˙Á̓ ÁÍ ˙…—‡ƒŔ ŕ‚˜ˆŸ -ł
ނ…ŸÁ̓ ÁÍ á͂— ŕ— Ĺ‹Á łšÔÁ ˙߂‰ ŕ— ËŸŸ‚›œ ŋÁߊ ÍË ÁÍ ˙…—‡ƒŔ .˟œ—œ
.˝Ë˙› ݂‡œÁ
.ˌ‚ƒ ͋Ÿ› ˟‚ƒ ŗ‡ƒŔ á΂‹ ŕ˂Ÿ„ ͟Ÿ“… -´
.˜ÍßŔ ݝÁ͕ ÁÍ Ëߊ ŕƒ Í‰œ› UI ˟‚ƒ ‚Ĺ—‡ƒŔ ŕ› -ľ

ÍéŸé’ ˙‚éÝé…鋟‹ .ŋŸœ Á͘˙Œ ˜— ˙›œ şƒ… Íߗ̛ ޟœÁߖ ÎÁ ˙›…‹Ÿ‹ ͘Á
Íé˜Á .ËÍÁË Ëßé‡ß ÎéŸéœ procedural ĂßéŠ Í‚Ÿ‹ƒ ˙‚Ý…‹Ÿ‹ .˜…‹Ÿœ ˃ Á͘˙Œ
.ŋŸœÁ͘˙Œ ŹËœ— Җœ ÁÍ ˙ŸÁ͘˙Œ ÜߍÁ ˙›…‹Ÿ‹



˙™› ќÁË Üƒ‚–› ÍË ÚŸ›Ë‚—Ŕ ќÁË

ɚéÁ ÁÍ Ëé— ß ÝËÍé˜˙› ΂ƒ ֏ ŕƒ ŹÝ‹Í˙› ŋƒ ރ ŕƒ ÝŸ‚Í‚—ÍË ŕ— Ĺ–ß Í
ŕéƒ ĹŒ˜Î‚ƒ ‚ƒ ˟‚ƒ ß Ë߃ ŕ‚ƒ…ŒÁ ÝË߃ ŕËÁË Ý‚‡œÁ ŕ— ŕˆœŔ ͝ ˙œŸ .ݜ—˙›
.ŋÁ ͟˜…–ß ͂Ÿ‹ƒ á͂— ޟœˆ .ݜ— ɚÁ ÁÍ ŢŔ ֏

‚éŸ ËéœßéŒ˙é› ŕéŽÍé Ĺ闇ƒŔ ̓ ˙œ…ƒ› ŢÁߜ ‚ƒ ŕ— ˙…šß‰› !˟œ—œ ŕ‚ƒ…ŒÁ
‘é–Áß ÍË ËÍÁË Ëßé‡ß ŗ‡ƒŔ ؟͐… ˙Á̓ áËː…› ˙‚ŕÁÍ ŕ— Ĺ‹Á ˙Ë› ŕ˜Œß͕
.ËéŸéœé—˙é›éœ ŕé‡ß… ŕ™ě‹› ޟÁ ŕƒ Ţ‚…ÍŸË› ß ‚›Œ ݅‰ÍßÔ ŕƒ .˜…‹Ÿœ Á͘˙Œ
Ĺé‹Á Ńé™ß‰› Ԋ ‚ƒ ˂œ…› ŕ— ŕËߛœ ؟͐… ˙Áŕœß˜ ŕƒ ÁÍ Á͘˙Œ ŕ‚‹ß͗Ÿ‚›
Śßéé‰é› ÎÁ ڟˆŸ .ŋŸœ Á͘˙Œ ˙›— ÍÁ˖› · ŕƒ ÚŸ‹Ÿƒ ÜÁßĎŸß ŕœß›œ ˙Á̓
.˜…‹Ÿœ Á͘˙Œ ŢŔ ˙‚ËÁ ؚŠÍƒ ŗ͌ ޟÁ

.ˌ‚ƒ ނžœ„ ˟‚ƒ ŗ‡ƒŔ ڟ ˙œßÍË ĹŸŽß .˜…‹ ŕ…—œ ڟ ͘œ‚Ÿƒ Ůߕ ޟœÁߖ
ËéŸ‚éƒ ‚›…‰ ŕ— ) UI ˌ‚ƒ ܂‰› ŗ‡ƒŔ ˙œßÍË ĹŸŽß ŕƒ ˙ƒ‚Ÿ…‹Ë ͘Á ‘–Áß ÍË
ŕËÁË Ţ‚éŒœ ŢŔ şŽß ŕ— ˙…—‡ƒŔ ‚ƒ ˟‚ƒ (˜— Á˟„ ˙‹Í…‹Ë şŽß łšÔÁ ŕƒ
.Ëߌ ŕ…Š‚‹ Ëߌ˙›


Á͘˙Œ ˙‚Ý…‹Ÿ‹ ܃‚–› ÍË procedural ˙‚Ý…‹Ÿ‹

ÁÍ ˙鋟ߜ ˗ Íߗ̛ ޟœÁߖ ŕ— Ĺ‹Á ޟÁ ޟŒŸ„ ъƒ ޟœÁߖ ނŸƒ ܟšË ÎÁ ˙—Ÿ
˙é˜ĎéŸß ÚéŸ ŢËßÎé•Á ‚Ÿ ܗŒ› ‘•Í ˙Á̓ ŕ— ˙…Á͟Ÿ“… ŕ› Á͟Π.Ë΂‹˙› ނ‹Ŕ
˙˜ËŸˆŸ„ Ýˏ ‚ƒ ÁÍ Ĺ™ßž‹ ŕ…ƒ™Á .Ëߌ˙› Η͛…› ނ—› ڟ ÍË ŹË͟˜ ĹÍߍ ˟‚ƒ
procedural ˙‚éÝé…鋟‹ ÎÁ ͅŕ˟ˆŸ„ Á͘˙Œ ˙‚Ý…‹Ÿ‹ šß›› .˟͟˜œ ŕ‚ƒ…ŒÁ
ÍË ˙é˜ËéŸéˆéŸé„ ‚éžé›é…鋟‹ ޟÁ ÍË .ŋÁ ͅœ‚‹Ŕ ‚žœŔ áÍÁ˞˜œ ‚›Á .˜…‹
áÍé›Á ÁÍ ˙˜ËŸˆŸ„ Ř̉ Á͘˙Œ ނ‰ÁÍÔ .Ëߌ˙› ˙Ëœ‚›Î‚‹ áͅߟ„›‚— ˙‚ŕ›‚œÍƒ
܃‚– ŕ— Ëœœ—˙› ˙Ëœ‚›Î‚‹ ˙Áŕœß˜ ŕƒ ÁÍ Ý…‹Ÿ‹ ˙˜ËŸˆŸ„ ‚žœŔ .˜œÁË˙› ܂‰›
˙‚éÝé…é‹éŸé‹ ÎÁ Íé…ŕËéŸéˆéŸ„ Á͘˙Œ ˙‚Ý…‹Ÿ‹ ŕ—œŸÁ ݒ͟™ .ˌ‚ƒ ş͟˛
ß Ëߌ˙› ˙Ëœ‚›Î‚‹ ͅžƒ ŕ›‚œÍƒ ‚ž›…‹Ÿ‹ ŕœß˜œŸÁ ÍË ‚›Á ŹËœ…‹ procedural
.ŋÁ ͅœ‚‹Ŕ ŢŔ áÍÁ˞˜œ Á̙


܂†› ڟ Ĺ߂•… ß ŕ‹Ÿ‚–›
˟Áߊƒ ˟‚Œ .˜—˙› ŕ‚ŸÍË ÁÍ ŢÁ̓͂— ˙›‚‹Á ŕ— ËŸÍŸ˜ƒ Í՜ ÍË ÁÍ ˙›…‹Ÿ‹
ÉéŸé‰é áË̓͂— ŕ›‚œÍƒ ڟ ÍË ‚›Á ˟œ— ŕ˂•…‹Á (Text_Field) ޅ› ˙Ÿ• ÎÁ
ÍéƒÍ‚é— Íé˜Á żËË˙› ˙ßÍ ŕˆ Ëߌ Á͇Á ޟˆ ÍË Ý…‹Ÿ‹ ͘Á .ŋŸœ ŋÍË Í‚—œŸÁ
Ĺßé ŇéŸéŠŒ… ‚Ÿ ݙ– ÎÁ ˟™— ŕ‰• ˙‚‡ ŕƒ Ëߊ ݂œ ŢËߛœ ËÍÁß ˙Á̓ ˝Áߊƒ
áÎ‚é‹ ŕÍéŸéŠĚ ˙ÁÍéƒ ŕé— ÁÍ ˙ÁŕËÁË ŕ‚˜Ÿ‚„ ͘Á żËË˙› ˙ßÍ ŕˆ Ëœ— ŕ˂•…‹Á
Íé˜Á żËéË˙› ˙ßÍ ŕˆ ËŸ‚›œ ŕ͟ŠĚ ÁÍ Unicode ˜Á߅œ ŹËŸÍƒ˙› ͂— ŕƒ ˙›‚‹Á
˙韂鋂éœéŒ ŕ͂é›éŒ ˟Œ‚ƒ ܟ‚› ß ËŸË͟Ÿ“… ÁÍ ŕ›‚œÍƒ ːƒ ܂‹—Ÿ ˟Áߊƒ
Ęé‹‚é„ Ţ…•‚Ÿ procedural ݅‹Ÿ‹ ÍË żËË˙› ˙ßÍ ŕˆ ËŸ‚›œ ŕ•‚ŽÁ ÁÍ ŢÁ˜›Í‚—
ŕéƒ ÔßéƒÍ› Ś—Œ› ޟÁ ‚›™‹› ŕ— ËÍßŔ˙› ˟˄ ÁÍ áÍÁ˞˜œ Ś—Œ› Ůߕ ˙‚žŒ‹Í„
ŢéŸéœˆ ڈߗ Ś—Œ› ‘•Í ˙Á̓ ˙…‰ ‚Ÿ ŕ˂‹ ܉ ŕÁÍ .ŋ‚Ý…‹Ÿ‹ ŕœß˜œŸÁ ş‚›
.Ë͟˜ ĹÍߍ ˟‚ƒ á˂ŸÎ њ… ͟Ÿ“… ޟͅ—ˆß— ˙Á̓ ß ËÍÁ˜ Ëß‡ß ˙Ÿ‚ž›…‹Ÿ‹

Ë韂雜 ܛ ˙Áŕœß˜ ŕƒ ËÍÁߛ ޟÁ ŢËߛœ Íߍ‰› ‚ƒ ˜—˙› ˙‹ Á͘˙Œ ͂— ŕÁÍ
܂†› ˙Á̓ .ËÍÁ̘œ ͟†‚… ŢŔ ˙‚žŒŠƒ ͟‚‹ ̓ ŕ›‚œÍƒ ÎÁ ъƒ ڟ ÍË ÍŸŸ“… ŕ—
˜œÁ߅ƒ ŕ— ˙Ÿ‚Ĺ—‡ƒŔ .ËÍÁË Î‚Ÿœ Name К— ڟ ܗŒ› ޟÁ ˙Á̓ Á͘˙Œ ܉ ŕÁÍ
‚éŸ Graphics ŗ‡ƒŔ ‚ƒ ÁÍ Ý‚œ ‚›Œ .˜Ÿ‚›œ ˙Ë ÍÁ˖› ß ŕËÁË ŃŸ‚›œ ÁÍ Ëߊ
.˟Ë˙› џ‚›œ Container š‚›…‰Á

.ËéŸéœé—˙› ŕ˂•…‹Á Name ˙™‚Š ŗ‡ƒŔ ڟ ÎÁ ݂œ ˙Á̓ UI Ŋ‚‹ Íß՜› ŕƒ ‚›Œ
ŕéƒ ‚雌 .Ë̓ƒ ͂— ŕƒ Íß՜› ޟÁ ˙Á̓ ÁÍ Text Field ŋÁ ޗ›› Name ŗ‡ƒŔ
.˟œ—˙›œ ŕ‡ß… ݂œ ˙Ë ÍÁ˖› ŕ߉œ ŕƒ ŹĐŸßœ ŕ›‚œÍƒ ŢÁߜ



controller Model-View :ą-ą Á͘˙Œ ͟’ ŕߟŒ

ŹJ Builder ÍéŸéŐéœ ˙é›é…‹Ÿ‹) Ëߌ ŕ…Š‚‹ ˙–ŸÍÔ Í ŕƒ UI ͘Á Ůߕ ܂†› ÍË
ÁÍ ‚éŕËÁË Ë韂ƒ Frame К— .˜—˙› ͂— (Visual Cafe ‚Ÿ ŹJ++ ŹVisual Age
‚éĹ—‡ƒŔ ŕƒ ÁÍ ‚žœŔ Є‹ ß Ëœ— ÇÁ͊…‹Á ‚Java_Bean Ź‚Üͅœ— ‚widget ÎÁ
‚éŸ MVC á͂é›éé› ŢéŸÁ .Ë韂é›éœ ܂é‹ÍÁ ŹË霝Ë˙› ܟ—Œ… ÁÍ ˙–Ôœ› ܲ ŕ—
Controller ŹView ŹFrame ނ雝 ‚Widget .ËÍÁË Ý‚œ Model-View-Controller
‚ŕ›˜Ë ˜œ‚› ڈߗ ˙‚ÎŸˆ á΂‹ ŕ˂Ÿ„ ˙Á̓ MVC .ŋÁ ܲ ˙Ÿ‚œƒÍŸÎ ݅‹Ÿ‹ ß
.ËßÍ Í‚— ŕƒ áË̓͂— ŕ›‚œÍƒ Éԋ á͂›› ŢÁߜ ŕƒ ËœÁ߅˙›œ ‚›Á ŋÁ ˂œ›

Ë韌‚ƒ ŕ…ŒÁË ˙‚˜Ŕ ܲ Éԋ ˙‚Ĺ—‡ƒŔ á΂‹ ŕ˂Ÿ„ ŕ͂ƒÍË ËŸ‚ƒ Ůߕ ŕߟŒ ÍË
ÍË Ýé…é‹éŸé‹ ÍË á˂éŸÎ ˙‚ŕËÁË ŕ—™ƒ ŋŸœ Á͘˙Œ ŕߟŒ ޟÁ ̓ ˙œ…ƒ› ݅‹Ÿ‹
ŕ雂œÍƒ ÍË MVC á͂›› ÎÁ ނ‹Ÿßœ ŕ›‚œÍƒ ÎÁ á͂Ÿ‹ƒ ŕœ‚•‹‚…› .˜…‹ ނŸÍ‡
.˜œ—˙› ŕ˂•…‹Á Ëߊ



áË̓͂— ŕ›‚œÍƒ ‘ŸÍ‹ ŕ‹ß… ą-˛ Á͘˙Œ ͟’ ŕߟŒ

MVC á͂é›éé› ÎÁ ŕ˂镅‹Á ݂˜œ ÍË ÁÍ áÍÁ˞˜œ Ś—Œ› ÎÁ ˙ސƒ ˟Ë ŕ΂‡Á
ŕéƒ Ë霛͂— ˙Ÿ‚‹‚œŒ ŕ͂›Œ ŢËßΕÁ ‚ƒ ‚›Œ Ůߕ ŕ˂‹ ܂†› ÍË .ݟŸ‚›œ ˙‹Í̓
͝ ˟‚ƒ RAD ‚Ÿ ˛ ŕߟŒ á͂›› ÍË .˟ÍÁË Í‚— ß͋ ͘ŒŸ‚›œ ÍË Ë߇ߛ ݋Á ͝
ŕ͂é›éŒ) ID ËéŸË‡ ˙Ÿ• ŕƒ ÁÍ ‚Widget ß ŕËߛœ ɚÁ ˙…‹Ë ÁÍ ˙›‚‹Á ÎÁ ڟ
Employee Đšé— ‚é… ËéŸÍßŔ ݝÁ͕ ˙…‚œ‚—›Á ˟‚ƒ ޟœˆ› .˟ŸÁşƒ (˙Ÿ‚‹‚œŒ
ËÍßé› Ë霗˙› ŕ˂•…‹Á Employee ÎÁ ŕ— ÁÍ ˙‹š—͝ ß Ëœ— ݟ՜… ÁÍ ID ˜Á߅ƒ
˙é‹ÍÍéƒ ˙ÁÍéƒ Employee ŗ‡ƒŔ ßË ŕ‹Ÿ‚–› ÍË ŕœß›œ ˙Á̓ .˟Ë ÍÁ͖ џ‚›ÎŔ
ÍéŸéŸé“é… ÁÍ ŕéÔ߃͛ ˙‚Ë— ŕ› ˟‚ƒ Á̙ .˟œ— ŕ˂•…‹Á ID ÎÁ ˟‚ƒ ˙߂‹…
ËéŸËÍé—˙é› (encapsulate) Íß鍉› Name К— ÍË ÁÍ ˙Ÿ‚‹‚œŒ ŕ͂›Œ ͘Á .˟Ë
ÁÍ ËßéŠ ˙˜Ë‚‹ ŕƒ Ëœ…‹œÁ߅˙› Name ˙‚Ĺ—‡ƒŔ .ŌÁ˜ ĹÍß͎ Ůߕ ܂›Á ݂‡œÁ
ID ł鏚éÔÁ Ú雗 ‚ƒ ÁÍ Ëߊ Name ŗ‡ƒŔ ßË ÚœŸÁ .˜Ë ނŒœ ˟ˇ şŽß ‚ƒ
ŢßËéƒ Î韜 ËÍÁË Ý‚œ Fred equals ‚Ÿ Fred Compare ‚›Œ ˗ ß Ëœœ—˙› ŕ‹Ÿ‚–›
.˜‚›˙› ˙–‚ƒ ͟Ÿ“…

WYSIWYG ÁÍéŸÎ ˟΂‹ ͂—Ëߊ ÁÍ Ë— ˙œ‚‹Í ÎßÍ ŕƒ ËœŸÁ͕ ˟œÁ߅˙›œ ˙…‰ ‚›Œ
ŕËéŒ Ë韙߅ ˗ ͟Ÿ“… ‚… Ë΂‹˙› ˙•Š› ÁÍ Ë— ˟™ß… ˜ŸÁ͕ áË͗™› Ղ‰™ ÎÁ
ŕËéŒ Ë韙߅ ˗ ͂—Ëߊ ÍßÔ ŕƒ Í˜Á .˜‚›ƒ ޛÁ ˗ ߅ͅ ޟ˃ ß ËŒ‚ƒœ ͋Ÿ›
Visual ÍÁÎéƒÁ áËééƒ áÍ韘͂— ŕƒ ÎÁ ‘œ‚› ͟Ÿ“… ޟÁ ˟Ë ͟Ÿ“… ÁÍ ŢŸŒ‚›
Á͟ΠËÍÁË ÍԊ ˗ ͟Ÿ“… ˟œ—œ ŕ˂•…‹Á ÍÁ΃Á ޟÁ ÎÁ Áˡ› ͘Á ˙…‰ .Ëߌ˙›
Ëéƒ‚éŸ ÍŸŸ“… ˗ ͂…Š‚‹ ͘Á ß ËœÍÁË ŕ‡ß… ˗ ͂…Š‚‹ ŕƒ RAD ˙‚ÍÁ΃Á ͆—Á
ÎÁ ŕËéŒ ËéŸé™ßé… Ëé— ŕߚ鐃 .˜Ë ݂‡œÁ ˙ƒßŠ ŕƒ ÁÍ Ëߊ ŕ•ŸŐß ËœœÁ߅˙›œ
.˜— ˙› ˙ß͟„ Ţ˜Áߊ ş™ƒ‚– ß ˙ŸŔ͂— ˙˜Ë͌• ˜œ‚› ޟœÁߖ

ÜßËé‡ Widget ÚéŸ .Ĺé‹Á date-bound grid control RAD á͂é›é› ˙™Á ş‚›
Í韟“… ˙ÁŕËÁË ŕ›‚œ˜œÍ• ŕ—Ÿ›‚˜œ .˜—˙› Íߍ‰› ÁÍ Í՜ ËÍߛ SQL ˗ ˜œ‚›
‚é… Ëßéƒ ËŸÁߊ Í߃‡› ‚›Œ .ˌ ˝Áߊ ˙œ› ˙ƒ SQL ŕ› żËË˙› ˙ßÍ ŕˆ Ëƒ‚Ÿ
ÍÁÎéƒÁ Úé›é— ‚éƒ ÁÍ ŢŔ ß ŕË͗ Á˟„ ËÍÁË data-bound Üͅœ— ŕ— ÁÍ ŕ‰• ͝
SQL ŕ— ˙ÁŕŸš ‚ƒ UI ŕŸš ŢŔ ÍË ŕ— three-tier ݅‹Ÿ‹ ÍË .˟Ë ͟Ÿ“… visual
‚éƒ ĂéŸé…Íé… Ţ韛 ŕƒ ÎŸœ SQL ŕƒ Ô߃͛ ŕŸš ß Ëœ—˙› щ ŕËߛœ Íߍ‰› ÁÍ
.Ëéœé—˙é› Í…Ëƒ ÁÍ Ü—Œ› ‚›Á .˝Ë˙›œ ݂‡œÁ á͂— ˜—˙› щ ‚ŕËÁË ŕ‚˜Ÿ‚„
middle tier ͘Á .ŋÁ ŕˌ ‘ŸÎ߅ ܉› ˜ˆ ÍË ËŸŸ‚›œ ɚÁ ˟‚ƒ ŕ— á˗ Á͟Î
.ŋÁ ÍÁßŒË ŢŔ áÍÁ˞˜œ ˌ‚ƒ ŕˌ ŕ…Š‚‹ ޟŒ‚› á˟™ß… ˗ ÎÁ

á˂éŸÎ ނé›Î ß Ĺé‹Á ÍÁßŒË Í‚Ÿ‹ƒ ޛ ˙Á̓ ˙…‹Ë ÍßÔ ŕƒ ˙…‚‰šÁ ޟœˆ ݂‡œÁ
.˜—˙› ڛ— ɚÁ ނ›Î ÍË ˙Ÿß‡ ŕ•͍ ŕƒ RAD ÍÁ΃Á .Ë̓˙›

ÚéŸ Úé›é— ŕéƒ ‚œŒŔ‚œ Á͘˙Œ ނƒÎ ڟ ‚ƒ ‚… ˜œ—˙› ڛ— ‚›Œ ŕƒ ‚Ý…‹Ÿ‹ ޟÁ
˙‚éĹéŸé™ƒ‚– ÎÁ ˟œÁ߅˙› ߅ͅ ޟ˃ ß ËŸœ— ˙‹Ÿßœ ŕ›‚œÍƒ ‚œŒŔ procedure
‚Ÿ Á߂‡ ÎÁ ËÍÁ˜ ˙›ßΙ ŕ— Ý˖…› ޛ .˟̓ƒ ŕ͞ƒ áÍÁ˞˜œ ÍË Á͘˙Œ ݅‹Ÿ‹
á˂éŸÎ Ś—Œ› C++ .˟Ë ݂‡œÁ Á͘˙Œ ˙‰ÁÍÔ ÚŸ ŕ—œŸÁ ͘› ˟œ— ŕ˂•…‹Á C++
ŢÁ ÎÁ Ĺé‹Á Íé…éžéƒ ËéŸßŒ ˜›ŕ͞ƒ ŢŔ ˙‚˙Ÿ‚œÁ߅ ÎÁ ˟Áߊ˙›œ ͘Á ß ËÍÁË
͘Á .ŋÁ ނ‹Ŕ C++ ‚ƒ ŕ‹Ÿ‚–› ÍË Ô–• ß Ĺ‹Ÿœ ŕ˂‹ Ϝ Á߂‡ .˟œ—œ ŕ˂•…‹Á
.˟œ— ŕ˂•…‹Á C ÎÁ ŋÁ ͅžƒ ˟‹Ÿßœƒ procedural ˙‚Ý…‹Ÿ‹ ˟Áߊ˙›

˙ÁÍéƒ ŕËéŒ ˙é‰ÁÍéÔ Ţ‚éƒÎ ÚéŸ ŹËŸË˙› ݂‡œÁ Á͘˙Œ ˙‰ÁÍÔ Í˜Á ͘ŸË ˙ߋ ÎÁ
ÎÁ á͂韋ƒ .˜— ނ‹Ŕ ÁÍ á΂‹ ŕ˂Ÿ„ ˜Á߅˙› (Á߂‡ ˜œ‚›) Á͘˙Œ ˙‚ž›…‹Ÿ‹
ÍË ŹËéœË͗˙› ˙‹Ÿßœ ŕ›‚œÍƒ C ÍË ŕ— ŕœß˜œ‚› .˜œ—˙› ˙‹ C ނ‹Ÿßœ ŕ›‚œÍƒ
Ňé™‚éŠ ÁÍé˜˙éŒ Ţ‚ƒÎ ڟ Á߂‡ .ŋŸœ ˙‰Ÿ‰ ͂—œŸÁ .˜œ— ˙‹Ÿßœ ŕ›‚œÍƒ Á߂‡
.ŋÁ


Ăߊ ˙Á͘˙Œ ݅‹Ÿ‹ ڟ

ŕ΂é‡Á ŹĹ‹Á ˙‹‚‹Á ß ‚œŒŔ‚œ ‚ÎŸˆ ŕƒ ŢË͗ ŕ‚˜œ ÍË Á͘˙Œ ŃßÍ ŕ—œŸÁ ܟ™Ëƒ
Ţ韌‚› ܂†› ޟÁ ˙Á̓ .ݟœ— ŕ‚˜œ ݅‹Ÿ‹ ŕƒ Á͘˙Œ ˙‰ÁÍÔ ÚŸ ŕ‚˜ËŸË ÎÁ ˟Ë
ÁÍé˜˙éŒ ß Client/Server á͂雐› ßË Í ÍË ATM Á͟Π.ÝËߛœ Š…œÁ ÁÍ ATM
Ĺ闇ƒŔ ڟ ÁÍ ATM ß Íß͋ ŗ‡ƒŔ ڟ ÁÍ Úœ‚ƒ áΗ͛ ͅߟ„›‚— .ŋÁ ЂŸ– ܃‚–
.ݟ͟˜˙› Í՜ ÍË Client



procedural ͂—ÁÍ

ÁÍ client ß ‚éŕËÁË ÎÁ ˙éœÎŠ› ÁÍ Íß͋ ‚ŕËÁË ŕ‚˜Ÿ‚„ ނ‹Ÿßœ ŕ›‚œÍƒ ͆—Á
ATM łԂƒ…ÍÁ ܗŒ› ˙‹Ÿßœ ŕ›‚œÍƒ ޟœˆ ˟‚Œ .˜œÁË˙› ‚ŕËÁË ŕ˜œ— ŋÁߊÍË
:Ë͟˜ƒ ̓ ÍË ÍŸÎ ĹÍߍƒ ÁÍ

Ëߌ˙› Ȝ‚„ ˙ß PIN ß Ëœ—˙› ޟŒ‚› ËÍÁß ÁÍ Ëߊ Ĺ͂— ̓͂— -ą

Üßé›Íé• "ÁÍ ŕ˃ ޛ ŕƒ ÁÍ Ĺ͂— ޟÁ ŕƒ Ô߃͛ PIN" (query) ŋÁߊÍË ATM -˛
‚é… Ëéœé—˙é› ˙韂‹‚œŒ ß Ë…‹Í•˙› ‚ŕËÁË ŕ‚˜Ÿ‚„ ŕƒ ÁÍ query ß ŕËߛœ ᘃ
ĹÍßé ŕéƒ ÁÍ PIN ŹATM .Ë錂ƒ ˙—Ÿ ̓͂— ˙…‹ÁߊÍË ÍÁ˖› ‚ƒ ˙…Œ˜Î‚ƒ ÍÁ˖›
ËËé ĹÍßé ŕƒ ˙…Œ˜Î‚ƒ Ëˏ ‚›Á ŹË…‹Í•˙› Íß͋ ŕƒ SQL_query ÎÁ ˙ŒŠƒ -ŕ…ŒÍ
.ËË͘ ͅނ‹Ŕ ŕ‹Ÿ‚–› ‚… Ëߌ˙› ŕ͟ŠĚ ˙…Ÿƒ ąś ÉŸ‰

.˜—˙› ŋÁߊÍË ÁÍ ĹŒÁË̓ ”™ƒ› ̓͂— -ł

”陃› ß Ëœ—˙› ᘃ Üߛ͕ "ÁÍ ŕ˃ ޛ ŕƒ ÁÍ Ă‚‹‰ áË߇ߛ" ŋÁߊÍË ŹATM -´
.˜—˙› ŕ͟ŠĚ ˙…Ÿƒ ł˛ á͂ŒÁ Ëˏ ĹÍߍ ŕƒ ÁÍ ˙…Œ˜Î‚ƒ

ŢéŸÁ ˙ÁÍéƒ ÁÍ áË߇ߛ" query ޟŒ‚› ŹËŒ‚ƒ ˂ŸÎ ˙•‚— Í˖ ŕƒ áË߇ߛ ͘Á -ľ
.˅‹Í•˙› Íß͋ ŕƒ ÁÍ "ނ‹Íƒ ÎßÍ ŕƒ ÁÍ ÍƒÍ‚—

ÖßÍéŒ ˙é…éŒé˜Î‚éƒ ”™ƒ› ‚ƒ ˟Ë ŕ΂‡Á żËÍÁË Ëß‡ß ˙‚ƒ…ŒÁ ŕˆ Ü‚†› ޟÁ ÍË
ß ŕËßé›éœ ɂ酅•Á ‹‰ ڟ ß ËŸ‚Ÿƒ ‚› ڜ‚ƒ ŕƒ ËÁߊƒ ΅Ÿ˜ ܟƒ ͘Á .ݟœ—
ݟÁߊ˙›œ ‚› ŕ…ƒ™Á żËË ˙› ˙ßÍ ŕˆ Ëœ— ΟÍÁß Ă‚‹‰ ޟÁ ÍË ÁÍ Ëߊ Ü߄ ŕ›
ËËé ŕé— ˙é™‚é‰ ÍË .ŋÁ ‚˜Ÿ˜ ¸ˇ/š´ ΅Ÿ˜ ܟƒ Ü߄ ŃÎÍÁ .ݟœ— Ţß͟ƒ ÁÍ ßÁ
˙Á̓ ŕ— ˙…Ÿƒ ąś ÉŸ‰ Ëˏ ÍßԜŸ› .ËÍÁË ‚‡ ‚˜› ˛° Ԗ• ‚› ˙…Ÿƒ ł˛ á͂ŒÁ
Çéœé„ ÎÁ ËéÁߊƒ ܟƒ ͘Á .˜—˙› ŕ͟ŠĚ ÁÍ Ü‚›Ÿ‹Ë Ý–Í ´ ËßÍ˙› ͂— ŕƒ PIN
ATM Ôé‹ßé… SQL ˙‚équery żËË˙› ˙ßÍ ŕˆ ŹËœ— ŕ˂•…‹Á PIN ˙Á̓ GATES ݖÍ
Í‚é— ‚équery ŢéŸÁ ŹËƒ‚Ÿ ͟Ÿ“… ˙ÁŕËÁË ŕ›‚œ˜œÍ• ͘Á .˜ߌ˙› ᘃ Üߛ͕
.Ë͗ ˜Áߊœ

˃‚Ÿ ͟Ÿ“… ATM ͝ ÍË ‚ROM ŕ— Ĺ‹Á ޟÁ Ůߕ Ś—Œ› ˙Á̓ procedural ͂—ÁÍ
‚PIN .Ëߌ ŕ˂•…‹Á ˙…Ÿƒ ł˛ á͂ŒÁ Ëˏ ˙‚‡ ŕƒ Ř‚Ž› Ĺ–Ë ‚ƒ ˙…Ÿƒ ś´ ÎÁ ß
.ËÍßŔ˙› ˟˄ ÁÍ áÍÁ˞˜œ ܗŒ› Ϝ ř‚‰ ޟÁ ŕ…ƒ™Á .˜ƒ‚Ÿ ͟Ÿ“… şƒ ł˛ ŕƒ

ŕé‡Ë߃ ÍË Ýž› ËÍÁߛ ÎÁ ˙—Ÿ ÍÁΕÁÝ͜ ͜ ŕœŸÎ .ݟË͘΂ƒ ˙–Áß ˙‚ŸœË ŕƒ
‚éŢßéŸé™Ÿ› ŕœ‚Ÿ™‚‹ ‚… Ëߌ˙› Ë ͜ ŕœŸÎ Ř̉ ‚ƒ Á߂‡ ‚›Á .ŋÁ IT ъƒ
ÎÁ ŕ— ˙Ÿ‚žœŔ ˙…‰ procedural ˙‚ŕ›‚œÍƒ áÍÁ˞˜œ ÍË .˟Ÿ‚›œ ˙Ÿß‡ ŕ•͍ ͚Ë
ÍéŸéŸé“é… .ËéŒ ËŸÁߊ ŕ‡Áߛ ˙…š—Œ›‚ƒ Ϝ ˜œ—˙›œ ŕ˂•…‹Á ‚ŕËÁË ŕ‚˜Ÿ‚„
͝ ß (‚ŕËÁË ŕ›‚œ˜œÍ•) á͋Á͋ ˙‚ÍŸŸ“…› ‚Ÿ áΗ͛ ˙‚ŕËÁË ÖÁߜÁ ؟͂…
ޟÁ ‚… ŋÁ ÍÁß˟›Á Á͘˙Œ ˙‰ÁÍÔ .Ëߌ ˙‹Ÿßœ ΂ƒ ˟‚ƒ ŕ›‚œÍƒ ÍË ŢŸ…ßÍ Ă‚‹
.˟‚›œ ‘•Í ÁÍ Ĺš—Œ›



Á͘˙Œ ͂—ÁÍ

ÍÁÍé– ŕéé™‚Ô› ËÍߛ Á͘˙Œ ŃßÍ ‚ƒ ÁÍ Ůߕ ܂†› Á͘˙Œ ͂— ŕÁÍ ˙‹Í̓ ˙Á̓
ÁÍÁË ÁÍ ˙鍂Š ˙‚ĹŸ™ƒ‚– ŕ— ‚Ĺ—‡ƒŔ ÎÁ ˙Áŕß›‡› ĹÍߍƒ ÁÍ Ý…‹Ÿ‹ ß ÝŸË˙›
ŋÁ ŕ™ě‹› ᘃ Üߛ͕ Á͘˙Œ ˙‰ÁÍÔ Í ÍË Ý‚˜ ޟ™ßÁ .ݟ͟˜˙› Í՜ ÍË Ëœ…‹
ŕé™éěé‹é› ŕ霛ÁË ŕ— ÝŸœ— ܉ ÁÍ ŢŔ ݟÍÁË ˙‹ ŕ— Ĺ‹Á ˙Áŕ™ě‹› ͘œ‚Ÿ‚›œ ŕ—
:ŋÁ áÍÁ˗œ‚ƒ ŕ™ě‹› ŕœ›ÁË Ůߕ ܂†› ÍË .Ëߌ˙› ŕ˟›‚œ


˟Ŕ ˙› ڜ‚ƒ ŕƒ áͅŒ›

ŹË霗 ܉ ÁÍ Ůߕ ŕ™ě‹› ˜Á߅˙› Á͘˙Œ ŕ‚˜ËŸË ŕœß˜ˆ ŕ— ÝŸƒ‚ŸÍË ŕ—œŸÁ ˙Á̓
˙Áŕéß雇› ˙߂‰ ˙›…‹Ÿ‹ ĹÍߍƒ ß Á͘˙Œ ŕ‚˜ËŸË ÎÁ ͂ƒ ޟÁ ˙™ß ŕ͂ƒßË Á͜Ŕ
ŹËéœÍÁË ˙éß鍊ƒ ˙‚žŸě‚œÁ߅ ڟ ͝ ß Ëœœ—˙› á͂—› ͘ŸË—Ÿ ‚ƒ ŕ— ‚ŸŒÁ ÎÁ
Ĺé‹Á ŕ™ě‹› ĹÍߍ ᘃ Üߛ͕ ŹÁ͘˙Œ ˙‰ÁÍÔ Í ÍË Ý‚˜ ޟ…‹Šœ .ݟœ—˙› ˙‹Í̓
܂†› ÍË .ËË͘ ݝÁ͕ ŢŔ ܛ‚— ܉ ނ—›Á ß ŕˌ ҊŒ› ÁÍ ŢŔ ŕœ›ÁË ŕ— ˙߉œ ŕƒ
Ë霗˙› ÉÍԛ ÁÍ Ü—Œ› ڟ Źŕ™ě‹› ĹÍߍ .ŋÁ ˙—œ‚ƒ ş™‚• ŕ™ě‹› ŕœ›ÁË Ź˙™•
:ݜ—˙› ˙Ÿß˜Î‚ƒ ͟ΠĹÍߍ ŕƒ ÁÍ ˙™• ŕ™ě‹› .ÁÍ áͅߟ„›‚— ŕ›‚œÍƒ ڟ ŕœ

ÁÍ Ý͕ ß Źŕ…•͘ ŕ‡ß ËÁËͅ‹Á Ý͕ ÍÁ˖ߘ ÎÁ ŹËߌ˙› ˙—œ‚ƒ ËÍÁß áͅŒ› ڟ
ĹËßé ÍÁËé–ßËéœé ŕéƒ ÁÍ Ý͕ ß ÝšÁ ÁÍ Ëߊ şߝ áͅŒ› Є‹ .˜—˙› ܟ›—…
.Ëéœé—˙é› ËŸě‚… ÁÍ áͅŒ› şߝ ŹÚœ‚ƒ كÁߋ ŕƒ ŕ‡Á͛ ‚ƒ ÍÁ˖ߘ .˝Ë˙›
.˟‚›œ˙› ŊÁË̈́ ˙ß ŕƒ ÁÍ áͅŒ› ŕ‡ß ŹÎ߇› ˗ ÎÁ Є ÍÁ˖ߘ Є‹

˙韂鋂éœéŒ ÁÍ ‚éžœŔ łŸ™› ß ˙™Á ˙‚ž‹š— ݟœÁ߅ ˙› ŕ˂‹ ŕ™ě‹› ޟÁ ‚ƒ
.Ë͗ ݝÁߊ ŕ˂•…‹Á CRC-Card ś͕ ÎÁ ř‚‰ ޟÁ ÍË Ţ› .ݟŸ‚›œ


Class Responsibility Collaborates with
Bank records Creates withdrawal slips; verifies that customers are who they say they are Teller: requests empty withdrawal slip
Bank officer Authorizes withdrawals Teller: requests authorization
Withdrawal slip Records the amount of money requested by the teller Bank records: creates it
Bank officer: authorizes the withdrawal
Teller: presents it to customer
Teller Gets withdrawal slips from the bank records and routes the withdrawal slip to the bank officer for authorization Bank records: creates withdrawal slips
Bank officer: authorizes transactions

.Ë錂éƒ˙é› Ĺ‚éԂƒ…ÍÁ ˙‹Í̓ ˙ß ˙™Á іœ ŕ— Ĺ‹Á ڜ‚ƒ ПŸÍ Íß͋ ܲ ޟÁÍË
˙é…é‹ÁßéŠÍË ‘–Áߛ ˙Á̓ ÁÍ ˙™‚Š ŕË̈́‹ ŹĹ‹Á Server-side ŗ‡ƒŔ ڟ ŕ— Úœ‚ƒ
ŢŔ ß ŕé…é•͘ ڜ‚ƒ ÎÁ ÁÍ ŕË̈́‹ ŕ— Ĺ‹Á Client-side tellerŹ Ĺ—‡ƒŔ .Ë΂‹˙›
ÜËé› ÍË ÁÍ ŢŔ ÁĚé™ .Ëߌ˙› Ăߋ‰› ˙‡Í‚Š ŹÝ…‹Ÿ‹ ˙Á̓ áͅŒ› .˝Ë˙› Í߃ ÁÍ
ŹĹé‹éŸéœ Ú霂ƒ ŕ áͅŒ› ‚›Á ˜ÍÁË áͅŒ› ‚ž—œ‚ƒ ݅‰ ÍßÔ ŕƒ) .ݟÍßŔ˙›œ
.(ˌ‚ƒ˙› ŕ áͅŒ› ‹‰ ŕ—™ƒ


.˜—˙› á΂‹ ܲ ÁÍ ˙™ƒ– ŕ™ě‹› Ԗ• Á͘˙Œ ATM ݅‹Ÿ‹

‚é… ËéË˙é› Ý酋Ÿ‹ ŕƒ ÁÍ PIN ß Ĺ͂— ß ŕËߛœ ŕ‡Á͛ ATM ݅‹Ÿ‹ ŕƒ ÜŸƒ -ą
.˜— ŌÁË̓ ÁÍ ˙“™ƒ›

ŢéŸÁ ‚ŸŔ ˋ̈́˙› server-side ř‚‰ Bank-records ŗ‡ƒŔ ÎÁ teller ŗ‡ƒŔ -˛
żĹ‹Á ΂‡› ŕÔ߃͛ Ĺ͂— ß PIN ‚ƒ Ë͕

.˝Ë˙› ͟Š ‚Ÿ ŕ™ƒ ʋ‚„ Bank-records ŗ‡ƒŔ -ł

ŢéŸÁ) .Ëéœé—˙é› Ĺé‹ÁߊÍË ÁÍ withdrawal-slip ŹBank-records ÎÁ teller -´
˜—˙› á΂‹ ŕ˂Ÿ„ ÁÍ withdrawal-slip ԃÁÍ ŕ— Ĺ‹Á ˙‹š— ÎÁ ˙Áŕœß›œ ŗ‡ƒŔ
teller .Ĺé‹Á Ý鞛 ŕ…—œ ޟÁ .ËßÍ˙› teller ŕƒ Bank-records ÎÁ ÍÁ˖› ‚ƒ ß
ŕé— ˙韂Ý‚Ÿ„ ŃÎÁË̈́ ŕ߉œ ß ËÍÁË ÖšÔÁ ˜—˙› á΂‹ ŕ˂Ÿ„ ŕ— ˙ԃÁÍ ÎÁ Ԗ•
ނé—é›Á ‚› ŕƒ Á͟ΠŋÁ Ăߊ Ë͇… ޟÁ .˜—˙›œ ޟŸ… ÁÍ Ëߌ˙› ܂‹ÍÁ ŢŔ ŕƒ
͟Ÿ“… teller ؟͐… ͟Ÿ“… Ţß˃ ÁÍ Withdrawal-slip ŗ‡ƒŔ Ë͗™› ‚… ˝Ë˙›
.ݟË

џ‚›œ ÁÍ ÍƒÍ‚— ԃÁÍ ŕ— ËŸß˜˙› Withdrawal-slip ŗ‡ƒŔ ŕƒ teller ŗ‡ƒŔ -ľ
.(˝Ë˙› ݂‡œÁ ÁÍ Í‚— ޟÁ ATM ͘ŒŸ‚›œ ˙ßÍ Íƒ UI ܂‹ÍÁ ‚ƒ ŗ‡ƒŔ) ˝Ë

.Ë͟˜˙› ÍÁ͖ ‹‰ ÎÁ ŌÁË̓ ъƒ ÍË ÜŸƒ -ś

‚éƒ š‚é›…‰Á) ŕˌ ܟ›—… ˙Ë ÍÁ˖› łŸ™› ŕ— Ëߌ˙› ŕ‡ß…› teller ŗ‡ƒŔ -ˇ
̓ bank_officer ŗ‡ƒŔ ŕƒ ÁÍ Withdrawal-slip ŕˌ ܟ›—… ŗ‡ƒŔ ß (OK ˟™—
”é™éƒ› ޟÁ ݅‹ ΂‡› ޛ ‚ŸŔ ݂Ÿ„ ŕƒ Ţ‚›ß˜ÍŔ ŢÁߜ ŕƒ) ˅‹Í•˙› Íß͋ ˙ßÍ
(żÝœ— ŌÁË̓ ÁÍ
.˝Ë˙› ʋ‚„ ͟Š ‚Ÿ ŕ™ƒ ‚ƒ bank-officer ŗ‡ƒŔ -¸
.˜—˙› ŊÁË̈́ ÁÍ ”™ƒ› ATM ŹËŒ‚ƒ ŕ™ƒ ʋ‚„ ͘Á -š

.ŋŸœ ͂— ŕÁÍ ‚žœ… ޟÁ ŕ…ƒ™Á

̂Š…Á PIN ‚Ÿ áË߇ߛ ŕ͟ŠĚ ŕ߉œ ŕƒ Ô߃͛ łšÔÁ ŕ› ŕ— ËŸŸ‚›œ ŕ‡ß… ˟‚ƒ
˙é•éŠé› ŗ‡ƒŔ ˜ˆ ŢßÍË ... ß ”™ƒ› ŊÁË̈́ Ýˏ ‚Ÿ ŊÁË̈́ ˙Á̓ Íß͋ ݟ›…
.ËÍÁË Îß釛 Íßˍ ş™ƒ‚– ŕ— Ĺ‹Á ˙…—‡ƒŔ Íß͋ Á͟ΠŋÁ ͋Ÿ› ř‚‰ ޟÁ .ŋÁ
ŢéŸÁ Bank officer Ĺé—釃Ŕ .ݟË ÍÁ͖ ŕ‡ß… ËÍߛ Ϝ ÁÍ Ĺ‚Ô‚ƒ…ÍÁ ˟‚ƒ ‚›
݂é˜éœé ÍË ÁĚé™ .ËßéŒ˙雜 ܖ…œ› ATM ŕƒ ˙ÁŕËÁË ČŸ .˝Ë˙› ݂‡œÁ ÁÍ Í‚—
ŢËéŒ ŇŠŒ› ŕ߉œ ÎÁ teller ŗ‡ƒŔ .ŋŸœ ATM ͟Ÿ“… ŕƒ Î‚Ÿœ Íß͋ ˗ ĹÁ͟Ÿ“…
.ËßéŒ˙é› Íߍ‰› Withdrawal-slip ŗ‡ƒŔ ÍË ĹŒÁË̓ ŋÁߊÍË .ËÍÁ˜ ֚ÔÁ Ü߄
.ŋÁ ͂—ŒŔ 𛂗 Íß͋ ˙ßÍ Íƒ teller ͟Ÿ“… ŕ‡Ÿ…œ ÍË

‚éƒ ßÍßéŸ ŕéƒ ŢŔ ͟‹•… ŹËœŒ‚ƒ ŕˌ ŕ…Œßœ ٟÍÔ ŢŸËƒ ‚„ßÍÁ ˙‚ATM Ԗ• ͘Á
.Ë͟˜˙› ĹÍߍ ˙˜Ë‚‹ ŕƒ server side ÍË Withdrawal-slip К— ؟͐… ͟Ÿ“…



˙…†ÁÍß ˙‚ž›…‹Ÿ‹ ‚ƒ ͂—

˙‚éÝ…‹Ÿ‹ ޟƒ á͂Ÿ‹ƒ Ĺ߂•… .ŋÁ ˙…†ÁÍß Ý…‹Ÿ‹ á΂‹ ŗ‡ƒŔ ͘ŸË ݞ› ŕ™ě‹›
ÍéŸÎ ŕéƒ ËéœÁßé…éƒ procedural ݅‹Ÿ‹ ͘Á .ËÍÁË Ëß‡ß ˙…†ÁÍß ß procedural
ŹËéœÎ‚é‹˙é› ÍÁÍé–Íéƒ Ô‚ƒ…ÍÁ ͘ŸË—Ÿ ‚ƒ Ăߊ ԃÁÍ ÚŸ ٟÍÔ ÎÁ ŕ— ˙Ÿ‚Ý…‹Ÿ‹
ÍßéÔ ŕéƒ ŢÁ߅˙› ÁÍ ‚Ý…‹Ÿ‹ ͟ΠޟÁ ÎÁ ڟ ͝ .ŋÁ Ăߊ ͂Ÿ‹ƒ ŹËߌ ͚߇‚›
˙éƒßéŠ ŕéƒ ˙é…é†ÁÍß ˙‚ž›…‹Ÿ‹ ͆—Á .Ëߛœ á΂‹ ŕ˂Ÿ„ Á͘˙Œ ĹÍߍ ŕƒ Ü–…‹›
˙é‰ÁÍéÔ Á˅ƒÁ ÎÁ ÁÍ ËŸË‡ ݅‹Ÿ‹ ŋÁ ͅžƒ ޟÁ Ëß‡ß ‚ƒ .˜ߌ˙›œ ˙Ëœ‚›Î‚‹
.ËÍé— ÉšéÁ ËéŸËé‡ Ý酋Ÿ‹ ‚ƒ ˂œ…› ނ—›Á ˉ ‚… ÁÍ Ë߇ߛ ˗ Є‹ ß Ëߛœ
.Ĺé‹Á ܂‰› Á͘˙Œ ܛ‚— ˙‰ÁÍÔ Ţß˃ Á͘˙Œ ݅‹Ÿ‹ ŕƒ procedural ݅‹Ÿ‹ ܟ˃…
ŘéŸÍéé… ÜéŸËéƒé… ÍË ˙˜ˆÍ‚„—Ÿ Ýˏ ܟ˃… ޟÁ ݂˜œ ÍË ÇŸÁÍ Ĺš—Œ› ÎÁ ˙—Ÿ
˙‹Ÿßœ ŕ›‚œÍƒ ޟÁ .ŋÁ ˙Ÿ• ͝ ˙Á̓ Ë͗™› ݟ՜… ß Đš— ŕƒ Ë߇ߛ struct
ŕé…éŒÁË ÍԂŠ ŕƒ .ŋÁ ˙Ÿ• ŕƒ ˙ƒ‚Ÿ…‹Ë ˙Á̓ ŕ˟ˆŸ„ ˙ŒßÍ ŕ—™ƒ .ŋŸœ Á͘˙Œ
ÎÁ ˙Áŕéßé›é‡é› struct .ËÍÁË Ĺ߂é•é… ݝ ‚ƒ К— ß struct ˙‰ÁÍÔ ŕ— ËŸŒ‚ƒ
.ŋ‚ĹŸ™ƒ‚– ÎÁ ˙Áŕß›‡› К— ß ‚ŕËÁË



˙…†ÁÍß Ý…‹Ÿ‹ ͟‹•… ÍË ĹŸ–•ß› Ýˏ

ÍË Ţ‚‹Ÿßœ ŕ›‚œÍƒ ŕ— ˙œ‚‹œÁ ‘ƒ‚œ› ŕ…‹ƒ :ËÍÁË Ëß‡ß ŕ͂ƒ ޟÁ ÍË ˙ƒßŠ ܂†›
ÁÍ Ëßé‡ßé› Ëœ›Í‚— ËÍß—Í ‚žœŔ .˜Ÿ‚›œ ͟‹•… Á͘˙Œ ŕƒ ÁÍ ŢŔ ‚… ˜Ë߃ њ…
‚éƒ ÁÍ Í‚é— ŢŸÁ ß Ëœœ— ܟ˃… Employee К— ŕƒ ÁÍ ŢŔ ˜Ëߛœ ˙‹ ß ŕ…•Í˜
Ëé™éŸ• ͝ ˙Á̓ get() ß set() ˙‚Ë…› ÎÁ ŕ˂•…‹Áß private ˙‚Ë™Ÿ• ˂‡ŸÁ
ŕ霂•‹‚…› ß ĹŒÁË Salary ŕ Employee К— ŕ— Ë߃ ޟÁ ŕ™ě‹› .˜ËÁË Ý‚‡œÁ
Ĺé•é .Ĺ鋟œ ̓Á̓ ˙Ÿ• ‚ƒ ŕ .ŌÁË Salary ˙Ÿ• Ϝ ˙™ßÁ ˜›Í‚— ËÍߗÍ
Salary ŢßËéƒ .Ë霗˙› Áˇ Ëߊ ÎÁ ÁÍ Ëœ›Í‚— Salary .ŋÁ ŗ‡ƒŔ ˙˜ĎŸß ޟƒ›
ŕéƒ Đšé— ÍË ‚é›ßΙ ŕ ŕߚƒ .˜ÍÁ˜ ͘ŸË—Ÿ ‚ƒ ˙…ß‚•… ȟ Ë͕ ß Ëœ›Í‚—
.ËßéŒ ŕÍéŸéŠĚ ˙é‡Í‚éŠ ˙‚ŕËÁË ŕ‚˜Ÿ‚„ ÍË ËŸ‚ƒ Salary .Ëߌ˙›œ Ō‚˜œ ˙Ÿ•
Íé˜Á .Ëéœé—˙é› ŕÍéŸéŠĚ ÁÍ Ĺé•é ˙ƒ‚ŸÎ‚ƒ ˙Á̓ áÍß͎ łšÔÁ Ԗ• Employee
Ĺé–Ë ĹÍßééƒ ÁÍ ŢŔ ŋÁ ޗ›› ŹËœ— ŕ͟ŠĚ ˙™ŠÁË ĹÍߍƒ ÁÍ Salary ŹEmployee
‘ƒ‚… ĹÍߍ ŢŔ ÍË .ËÍÁ˝‚˜œ ŕ…ŒÍ ‚Ÿ ˙ËË ˗ - ˙ŸßËßË ŕŸÁÍÁ á͂ŒÁ ؏‚Ž›
ÁÎé‡Á ɚéÁ Ë韂ƒ Á͘˙Œ ˙‰ÁÍÔ ÍË .˜ÁË͘˙› ΂ƒ ÁÍ áψ ŕˆ get_Salary()
.ËéŒ‚éƒ ÍéŸĚé„ Ţ‚—›Á ËÍÁ̘ƒ ͟†‚… К— ŢÁ̓͂— ̓ ŕ—œŔ Ţß˃ К— private
˙é–‚éƒ ĹÍßé Ţ‚é› ŕƒ ŕ— ËÍÁ˜ Ëß‡ß ˙œŸ›Ž… ‚›Á ˌ‚ƒ á͂ŒÁ ˟‚ƒ Salary
͂é…銂‹ ͘Á ‚›Á ˜ÁË͘ ΂ƒ ÁÍ á͂ŒÁ Ëˏ ˟‚ƒ get_Salary() ˅› .˜‚›ƒ
Íé Íéƒ ‘郂… ˙…Œ˜Î‚ƒ ÍÁ˖› ŢËÁË ÍŸŸ“… żËË˙› ˙ßÍ ŕˆ ŹËƒ‚Ÿ ͟Ÿ“… ˙™ŠÁË
.ËÍÁ̘˙› ͆Á ˜— Áˍ ÁÍ ‘ƒ‚… ŢŔ ŕ— ˙œŸ…ßÍ Ă‚‹


ŕ‚˜ˆŸ ‚›Œ .˜Ë˙› Employee ŗ‡ƒŔ ŕƒ ÁÍ ˙Ÿ‚ĹŸ™ƒ‚– Á͘˙Œ ނ‹Ÿßœ ŕ›‚œÍƒ
á͂— ŕ ڛ— ‚ƒ ‚… ˟Áߊ˙› ŗ‡ƒŔ ÎÁ ŕ—™ƒ ˟ÍÁ˜ ˙‹Í…‹Ë ŕ ŕƒ ‚›Ÿ–…‹›
ŕ˃ ޛ ŕƒ ÁÍ Ůߖ‰ Ý͕ ŕƒ ˙›‚Ÿ„ Employee ŗ‡ƒŔ ÍË .ËË Ý‚‡œÁ ނ…ŸÁ̓ ÁÍ
Ĺ闇ƒŔ ÎÁ ŢŔ ˙ßÍ Íƒ á͂— ݂‡œÁ Íß՜› ŕƒ ÁÍ Ĺ• ˟‚ƒœ ‚›Œ .ŌÁË ËŸÁߊœ
˙Á̓ .˟œ— ÇÁ͊…‹Á ŗ‡ƒŔ ÎÁ ÁÍ Ĺ• ŕ— Ĺ‹Á ÝΚ ł–ßÁ ˙‚˜ .˟œ— ÇÁ͊…‹Á
΂éŸéœ Úéˆ ÍßËé ˙ÁÍéƒ ÁÍ salary Źpayroll-department К— ٟÍÔ ÎÁ ŕœß›œ
ŢéŸÁ ͂é—éÁÍ ŢŸÍ…žƒ .ËÍÁË Ëß‡ß Ü—Œ› ޟÁ ˙Á̓ áËː…› ˙‚Í‚— ŕÁÍ .˟ÍÁË
.Ëéœé— Ĺé‹ÁßéŠÍË ÁÍ salary ŹEmployee ÎÁ Payroll-department Đšé— ŕ— Ĺ‹Á
ËéŸ‚éƒ salary Ĺ闇ƒŔ ß .Ëߌ Íߍ‰› Salary ‚Ÿ Money ŗ‡ƒŔ ÍË ËŸ‚ƒ Salary
Ń韂雜 ߅ͅ ޟ˃ .˜— á΂‹ ŕ˂Ÿ„ ÁÍ Úˆ ŕƒ‹‚‰› ˙Á̓ ÝΚ ˙‚ĹŸ™ƒ‚– ŕ›
‚›Œ .ŋÁ т† salary ˙…Œ˜Î‚ƒ ŗ‡ƒŔ ŕ…ƒ™Á .˜‚›˙› ˙–‚ƒ ˙•Š› Îߜ salary
.ËË ÍŸŸ“… ÁÍ salary ŹPayroll-department ŕ— ËŸÁߊ˙›œ

˙‚éÎéŸéˆ ˙Á̓ ˙…‰ ËßÍ˙› ͂— ŕƒ Ý…‹Ÿ‹ ÎÁ Éßԋ ͝ ÍË á΂‹ Íߍ‰› Öߜ ޟÁ
˙é™éŠÁË áÎ‚é‹ ŕÍéŸéŠĚ ŕéƒ ÔßéƒÍ› łšÔÁ String К— .‚ŕ…ŒÍ ˜œ‚› ˙‹‚‹Á
ŕ‚ƒ…ŒÁ String ÍË getBytes() ˅› Íߎ‰ Á߂‡ ÍË .˝Ë˙›œ ނŒœ ÁÍ ‚Í…—Á͂—
Đšé— ÎÁ ˙韂éËé…é› ĹÍߍ ‚ƒ ˟ÍÁË Î‚Ÿœ ‚ŕ…ŒÍ ˙Á̓ ŕ— ˙…‚Ÿ™› ŕ› .ŋÁ
ÍË ËéœéœÁßé…˙› ‚Í…—Á͂— .˜…‹ Áˇ ŹËœÎ‚‹˙› ŕ͟ŠĚ ÁÍ ‚Í…—Á͂— string
Ëé— ˙ސƒ ÎÁ ŕ˂•…‹Á ‚ƒ ß ˙œßÍË ÁÍ Ëߊ string ‚›Á ˜ߌ ŕ͟ŠĚ char ŕŸÁÍŔ
.˝Ë˙› ނŒœ ... ß ÍŸß‚… ÎÁ ˙ƒŸ…Í… ˙…Ÿ‚ƒ ˜ˆ áÍÁ̘

ŕé— ËÍÁËéœ Ëßé‡ß Ýé…é‹éŸé‹ ÍË ˙ƒ‚… ŕ— Ĺ‹Á ޟÁ ͘œ‚Ÿƒ ͂…Š‚‹ ޟÁ ŕ…ƒ™Á
.Ë͟˜ƒ ÁÍ char[] ˙…‰ ‚Ÿ byte[] ˙‚žœ‚›ß˜ÍŔ

˙‚éÝé…é‹éŸ‹ ÎÁ á͘ŸË ŕƒœ‡ ޟÁ ß ËœŒ‚ƒ String ˙‚Ĺ—‡ƒŔ ˟‚ƒ ‚ŕ…ŒÍ ŕ›
String Ĺé—é‡éƒŔ ˟‚ƒ áψ ͝ .˜…‹ ψ ȟ ‚Ÿ ψ ŕ› ‚žœŔ :ŋÁ Á͘˙Œ
ޟ› ŕƒ ß Ë͗ ÔߙŠ› char ˙‚ŕŸÁÍŔ ‚ƒ ÁÍ String ˙‚Ĺ—‡ƒŔ ŢÁ߅˙›œ ß ËŒ‚ƒ
.ŋÁ ÍÁßŒË Á͘˙Œ ˙‚Ý…‹Ÿ‹ ŕƒ ˙…†ÁÍß ˙‚Ý…‹Ÿ‹ ͟‹•… ŕ— Ĺ‹Á ܟ™Ë

ÁÍ ÍéŸÎ ݂Ÿ„ ˟œÁ߅˙› ‚›Œ .ËÍÁË Ëß‡ß ŃßÍ ßË GUI ÍË ŕ…ŒÍ ˙Ë ÍÁ˖› ˙Á̓
˙éË ÍÁËé–é› ŕÍé‡éœé„ ޟÁ ÎÁ ŕ˂•…‹Á ‚ƒ ‚Ÿß„ ÍßÔ ŕƒ ÁÍ Ëߊ" :˟Ë Í߃
ŕËߛœ ˂‡ŸÁ ÁÍ Íß՜› ŢŔ ˙Á̓ ΂Ÿœ ËÍߛ J_Text_Field ŹString Є‹ ."˟œ—
˙‚éĹé—釃Ŕ ÎÁ ˙ސƒ :˟Ÿß˜ƒ ˟œÁ߅˙› ŕ—œŸÁ ‚Ÿ .Ë΂‹˙› ŕ͇œ„ ÍË ÁÍ ŢŔ ß
Íé—é• Ţé› .ŢÁËÍé˜Î‚ƒ ޛ ŕƒ ËßÍ˙› ͂— ŕƒ ˙Ë ÍÁ˖› ˙Á̓ ŕ— ÁÍ component
˙‚Ë™Ÿ• ÎÁ ˙ސƒ ˙Á̓ Visual Proxy ڟ ŢÁߜ ŕƒ component ŗ‡ƒŔ ŕ— Ýœ—˙›
ŕÎÁËéœÁ ŹÝœ— ‚‡ ŕƒ ‚‡ ͘ŒŸ‚›œ ˙ßÍ Íƒ ÁÍ ŢŔ ݜÁ߅˙› ޛ .ŋÁ string ˙•Š›
̓͂— ŕ— ÁÍ ˙Ÿ‚Í…—Á͂— .Ý΂‹ ܂• ͟’ ‚Ÿ ܂• ÁÍ ŢŔ ß ÝË ÍŸŸ“… ÁÍ ŢŔ
proxy ŕé— ˙Frame .ËßÍ˙é› String ŗ‡ƒŔ ŕƒ "‚›Ÿ–…‹› ŹËœ—˙› ğ‚… proxy ÍË
.ËÍÁ˜ ˙šÔÁ ŋÁ ŕËÁË ˙ßÍ ŕ— ˙Ÿ‚ĹŸ™‚• ÎÁ ËÍÁË˙› ŕ‚˜œ ÁÍ


ŹËÍÁĚé˜ Í韆‚… á͘ŸË ˗ ̓ ŕ—œŔ Ţß˃ ÁÍ Ĺ—‡ƒŔ ͂…Š‚‹ ˟œÁ߅˙› ‚›Œ ڜŸÁ
ÚéŸ ÍË Ü鍂‰ ĹÁ͟Ÿ“… .ŋÁ͘˙Œ ŕߟŒ ˙‚á˜›œÁ߅ ÎÁ ˙—Ÿ ޟÁ ß ËŸË ͟Ÿ“…
Ëé— Ţé…éŒßéœ ß ˙ƒ‚Ÿ‚ÔŠ ß áÍÁ˞˜œ ߅ͅ ޟ˃ ß Ĺ‹Á ˙™‰› ܛ‚— ÍßÔ ŕƒ Ü‰›
.ŋÁ ͅœ‚‹Ŕ



˙žŸËƒ ˙‚˙Œ

ŗ‡ƒŔ ÍË ˙—Ÿ•Á͘ Ë͗™›

˙‚éŕ雂éœÍéƒ .Ĺé‹Á UI ŕéé‹ßé… Ëߌ˙› Á͘˙Œ ŕߟŒ ŕƒ ŕ—Ÿ…Á˂–…œÁ ÎÁ ˙—Ÿ
˙‚éŃéŠéƒ ÎÁ ÁÍ ˙韂霃 ͟Π˙—Ÿ•Á͘ ݅‹Ÿ‹ ŕ— ËœÍÁË ˙‹ ˙…œ‹ procedural
ŕƒ ŕ…‹ƒÁß Ë— ŢËߛœ Η͛…› ‚ƒ ÁÍ Í‚— ޟÁ ß ËœÎ‚‹ Áˇ (ܲ) ŕ›‚œÍƒ ˙–Ôœ›
ÍéŸÎ Úé›é— ‚éƒ ŢÁß酃 ŕ— Ĺ‹Á ޟÁ Ř˝ .˜Ë ݂‡œÁ ݅‹Ÿ‹ ͟Πڟ ŕƒ Ý…‹Ÿ‹
Ĺé‹é—Œ ‚ƒ procedural ˙‚ŸœË ÍË ŃßÍ ŢŸÁ .ËÁË ÍŸŸ“… ÁÍ ˙—Ÿ•Á͘ ԟ‰› ݅‹Ÿ‹
ÎÁ ß Ĺé‹Á Η͛…› DLL ‚Ÿ ˙—ÁͅŒÁ ŕœ‚Šƒ‚…— ڟ ÍË GUI ˙…Í‚ƒ ŕƒ .ˌ ß̓ßÍ
.З ̓ ß Ëœ—˙› ͟Ÿ“… UI ŹËƒ‚Ÿ ͟Ÿ’… ܲ ŕ‚˜ ͝ .ŋŸœ Áˇ ݅‹Ÿ‹ ŕŸ–ƒ

ŕßéŸéŒ ŢŔ ŹÝéŸË ˙› ݂‡œÁ ˙‚Š ŕߟŒ ŕƒ ÁÍ ‚Í‚— ‚› ŕ— ÜŸ™Ë ޟÁ ŕƒ ‚žœ…
˙韂éœéƒ ͟Π݅‹Ÿ‹ ÎÁ ݅‹ ŢŔ ÍÁ˕ÍÔ Ţ› ŕ— ˙Á á͂›› .ŋŸœ ŕߟŒ ޟͅžƒ
AWT ÍË ŕé—é™éƒ ËéŸéœ—˙›œ ˙‹Ÿßœ ŕ›‚œÍƒ ܛ‚ ݅‹Ÿ‹ ÍË ‚›Ÿ–…‹› ‚›Œ .ŋÁˇ
ß ËéŸé‹éŸßœ˙› ŕ›‚œÍƒ Ź˙Á΅œÁ ŕŸš ÍË ˙œŸ (Abstract Windowing Toolkit)
ŕ› .˟Ë ͟Ÿ“… ÁÍ ˙—Ÿ•Á͘ ԟ‰› ͘Á .˟œ—˙› Áˇ ˙—Ÿ•Á͘ ԟ‰› ÎÁ ÁÍ Ëߊ
.ŕ͘ ˝Áߊ ĹÍߍ AWT ˙œŸ ‚‡—Ÿ ÍË ĹÁ͟Ÿ“…



ŗ‡ƒŔ ڟ ÎÁ ؙ…Š› ˙‚ŕ‚˜ËŸË

͘ŸË ˙‚‡ ÍË ß Ĺ͂ˆ ĹÍߍ ŕƒ ‚‡—Ÿ ÍË ÁÍ ‚ŕËÁË ŢŸÁ ˟ÍÁË Ë– ŕ— ËŸœ— Ó͕
.˟Ë˙› ݂‡œÁ ÁÍ Í‚—œŸÁ ŗ‡ƒŔ ‚ƒ ŕœß˜ˆ żËŸË ނŒœ grid ĹÍߍ ŕƒ

ŕé…éŒÁË Î‚Ÿœ ˙›‚‡ ŕ›‚œÍƒ ޛ ͘Á żËŸßŒ˙› ŕ‡Áߛ ˙™—Œ› ޟœˆ ‚ƒ ˙–Áߛ ŕˆ
.ÝÍéŠéƒ Üé‹é—Á ÎÁ ˙鄗 ڟ ŋÁ ͅžƒ ˌ‚ƒ ŕ…ŒÁ˜ ‚ŕËÁË ÎÁ á˂›œ ŕ— ÝŒ‚ƒ
˜Á߅˙› ˙…—‡ƒŔ ͝ .˜…‹Ÿœ ËÁˏÁ ÎÁ ˙Áŕß›‡› Ԗ• ß Ëœ…‹ ‚œ› ‚ƒ ‚ŕËÁË
Ň閜 ÁÍ integrity ş›‚›… Ţߜ‚– ŕ—œŸÁ Ţß˃ ËË Ţ‚Œœ ؙ…Š› ŮÍÔ ŕƒ ÁÍ Ëߊ
.˜—

˙é•é™é…éŠé› ˙‚é‚é‡ ÍË ‘ƒÁ߅ ÎÁ ‚žœŔ żÍßԈ Java Beans :ŋœŸÁ áːƒ ӹ́
ŢŔ ˙é‰ÁÍéÔ ÍÁÎéƒÁ ß bean ޟƒ ˙ԃÁÍ set ß get ‘ƒÁ߅ ޟÁ .˜œ—˙› ŕ˂•…‹Á
Ëé— ÎÁ ÁÍ get ß set ‘éƒÁ߅ ޟÁ ÎÁ ˙—Ÿ ŕ‚˜ˆŸ ‚›Œ Á͘˙Œ ݅‹Ÿ‹ ÍË .˜…‹
ŕé— ËÍÁË bean ˙郂éŸé…‹Ë ނ—›Á ŹÁ߂‡ ŹÜÁŕ˟Á ˙‚ŸœË ÍË .˟œ—˙›œ ŢÁߊÁ͕
˙Ďé…Áͅ‹Á ޟÁ .ËË͘˙› ͋Ÿ› ‚ž‹š— ٟÍÔ ÎÁ ˙ƒ‚Ÿ…‹Ë ‚›Á .ŋÁ private ŕŸƒŒ
ނé‹éŸßœ ŕ›‚œÍƒ ˙Á̓ ŕĎŸß ŕƒ ß Ëœ—˙› ނ‹Ŕ ÁÍ bean ˙‹Ÿßœ ŕ›‚œÍƒ get/set
ŕééŠéŒé› ŕ霂é…éŠéƒŒßŠ .ŋÁ ˂œ› ˜ÁŕË͗œ ͂— Á͘˙Œ ‚ƒ ŕ— procedural
ÝéÁÍé• design-time ÍÁÎéƒÁ ‚éƒ ŕÍ߂é‰é› ˙ÁÍéƒ Á͘˙Œ ÝϜ‚—› Java Beans
ËßéŠ" ŋÁߊÍË ŕƒ Ę‹‚„ ÍË Ü›‚— UI ڟ ÍÁ΃Á ޟÁ ŹBean Customizer :ËÍßÁ˙›
beans ËéŸé…‹ ᡠÁ͘˙Œ ˙‹Ÿßœ ŕ›‚œÍƒ ÍË Í˜Á .Ë΂‹˙› "˟œ— ˙Ë ÍÁ˖› ÁÍ
get/set ˙Ďé…ÁÍé…é‹Á ÎÁ ˟‚ƒœ šÁ ß Ëߌ ˙Ë ÍÁ˖› ‚ customizer ‚ƒ ˟‚ƒ
.˟Ÿ‚›œ ŕ˂•…‹Á



˜Ë˙›œ ŏ͋ ‚Í‚— ŕƒ RAD ˙‚ÍÁ΃Á ͆—Á

.ÝÎÁËÍé„˙é› Ć鉃 ŕƒ áË̓͂— ˙‚ŕ›‚œÍƒ ‘ŸÍ‹ ŕ‹ß… ˙‚ÍÁ΃Á ŕ͂ƒ ÍË ÚœŸÁ
Ĺ銂‹ ˙‰ÁÍÔ ‚žœŔ ŹËœË߃œ ˙ƒ‹‚œ› áÍÁΕÁÝ͜ ˙‚ŕ›‚œÍƒ RAD ŕŸ™ßÁ ˙‚Ý…‹Ÿ‹
‚éƒ RAD ŃÎÁËÍé„ ˙é™éÁ ˙‚éË‚雜 ˙Á̓ ނ˜ËœË ŕ‹ß… ͆—Á .˜…ŒÁË ŕ…•‚Ÿ
.ËÍÁË ˙霚ßéÔ ˙é‰ÁÍéÔ ËéœéŸÁÍé• ˙鐖Áß RAD .˜œ—˙› ͂— ‚ÍÁ΃Á ŕœß˜œŸÁ
ÁÍéŸÎ ŹËéœÁŕ…Š‚‹ ޗ›› ͟’ ÁÍ ˙‰ÁÍÔ ˙–Áß Í‚— ݂‡œÁ áÎß͛Á RAD ˙‚ÍÁ΃Á
ÁÍ ˙é™é›‚é— ˙é‰ÁÍéÔ Í˜Á ˙…‰ .˜œ—˙› ŕ‚˜œ UI ڟ ŢÁߜ ŕƒ Ý…‹Ÿ‹ ŕƒ ‚žœŔ
.˜Ë˙›œ ŕěÁÍÁ ݅‹Ÿ‹ ÎÁ ˙–Ÿ–Ë ͟ߍ… ŹRAD ˙‚ÍÁ΃Á ͆—Á ŹËŸË ݂‡œÁ

‚žœŔ Á͟ΠżËœÍÁ˜ Ë̓͂— Á͘˙Œ ̓͂— ˙‚ÔƒÁÍ ËŸ™ß… ÍË RAD ˙‚Ý…‹Ÿ‹ Á͈
ŕ˂é•é…‹Á "̓ƒ ͂— ŕƒ ˙Ÿ‚‡ ͝ ÍË ÁÍ ‚žœŔ ß Ţ— ÇÁ͊…‹Á ÁÍ ŕËÁË" ŕߟŒ ÎÁ
.݂Ÿ„ Í߃ ŕœ Ĺ‹Á ‚ŕËÁË Ţ‚ŸÍ‡ ̓ ‚žœŔ ˙‰ÁÍÔ .˜œ—˙›

ß Ëéœéœ‚éŒßé„éƒ Ü雏 ŕƒ ‚‡ Ëߊ ˞… ŕƒ ËœœÁ߅˙›œ RAD ˙‚ÍÁ΃Á ŕ‡Ÿ…œ ÍË
Íé˜Á ˙é…é‰ ŢéŸÁÍ郂œƒ .ŋÁ ÍÁßŒË Í‚Ÿ‹ƒ áË̓͂— ˙‚ ŕ›‚œÍƒ ޟœˆ áÍÁ˞˜œ
Ëé— ËéÍË ą°° ˙霐Ÿ ËÁË Ý‚‡œÁ ނ…ŸÁ̓ ͗•… ÎÁ ͟’ ŕƒ ÁÍ á͂— ͝ áÍÁ΃Á
áÍßŕÍéžéƒ ËéÍË ł° ËÍé— ŃŸ‚›ÎŔ ˍÍË ą°° ß Ë͗ á΂‹ ˜…‹› ˍÍË ą°° Ōߜ
.˟Ë ͟Ÿ“… ÁÍ Ëߊ ͗•… ˟‚ƒ ˙ŸŔ͂— ͆—Áˉ ŕƒ Ţ˟‹Í ˙Á̓ .ŌÁË ËÁߊ



á͟˜ ŕ‡Ÿ…œ
ŹÁÍé˜˙éŒ ÜßéÁ ŕ͂éƒÍË Ćé‰éƒ Íéƒ ŕߚ ‚› .˟Ë ͟Ÿ“… ÁÍ Ëߊ ͗• ÎÍÔ Đ„
Íéƒ ˙œ…ƒ› O/I ŕ…‹ƒ .Ŋ‚‹ ݟÁߊ ÜߍÁ ޟÁ ÎÁ ŕ˂•…‹Á ‚ƒ ÁÍ ˙UI ˙‚ÍÁ΃Á
model-side ˙‚éĹ—‡ƒŔ á΂‹ŕ˂Ÿ„ ŕ— Ëœ—˙› ݟ՜… ÁÍ ‚ÎŸˆ ˙Áŕœß˜ ŕƒ ‚ž›Í•
ÁÍ ËßéŠ ˙‚éÝÍé• Ë韜Á߅˙› ٟÍÔ ŢŸËƒ .ŋÁ ˙•Š› џ‚›œ ˗ ÎÁ ܛ‚— ÍßÔ ŕƒ
Ößéœ ŢéŸÁ .ËéŒ‚éƒ ŕ酌ÁË ÍŸ†‚… ‚Ý͕ ˟™ß… ˗ ̓ ŕ—œŸÁ Ţß˃ ˟Ë ͟Ÿ“…
.˜—˙› ނ‹Ŕ ÁÍ áÍÁ˞˜œ á΂‹ ͚߇‚›

Resources
The Bill Gates Personal Wealth Clock. Find out what Bill's really worth: http://www.webho.com/WealthClock

"No Sliver Bullet," The Mythical Man Month, Anniversary Edition, Frederick Brooks (Addison-Wesley, 1995):
http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0201835959

The CRC Card Book, David Bellin and Susan Suchman Simone (Addison-Wesley, 1997): http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=0201895358

C++ in Hypertext, Curtis Solohub. This online CS-1 textbook offers a pretty good description of object-oriented-design techniques in general (and CRC cards in particular): http://cs.nmhu.edu/personal/curtis/cs1htmlfiles/Cs1text.htm


˙‡œ‹Í՜
ޟÁ ËÍߛ ÍË ÁÍ Ëߊ Í՜
:˟Ÿß˜ƒ ‚› ŕƒ Ă™Ô›

ŃÎÍÁ ‚ƒ ˙™ŸŠ -
ŃÎÍÁ ‚ƒ -
ŃÎÍÁ˙ƒ -

˙œ šßÔ ˙™ŸŠ -
˂œ› -
ŕ‚…ß— -

˙Š… ˙™ŸŠ -
Ăߙԛ -
ŋŸœ ˙Š… ˙•‚— ŕÎÁ˜Á ŕƒ -


:݂œ

:ڟœßͅ—™Á ŋ„

: ŗ͌ ݂œ








Copyright 2001, IT World/ JavaWorld / International Data Group Inc. / PC WORLD Iran. All rights reserved.