Upload
sirinat-sansom
View
56
Download
0
Embed Size (px)
Citation preview
คลาสและการเขยนโปรแกรมเชงวตถเบองตน
ความหมายของโอโอพ
ความหมายของโอโอพOOP เปนคายอของ Object-Oriented Programming หมายถงการเขยนโปรแกรมเชงวตถหรอเขยนโปรแกรมแบบออบเจกต การเขยนโปแกรมในลกษณะนจะแตกตางจากการ เขยนโปรแกรมทประมวลผลเชงคาสงทมการทางานทละคาสง
ดงทเคยศกษามา แตจะเปนการสรางขอมลเปนวตถหรอ ออบเจกต แลวเขยนโปแกรมประมวลกบออบเจกตนนๆ
ใหทางานตามตองการ นอกจากนนยงเขยนโปรแกรมประมวลผลกบออบเจกตได
ความหมายของโอโอพ ซงออบเจกตจะมลกษณะ 3 ประการดงตอไปน
-state เปนคณลกษณะของออบเจกตนนๆ ทบอกวาออบเจกตนน
เปนอะไรบาง หรอเรยกอกอยางหนงวาเปนคณลกษณะประ จา โดยคณสมบตขนกบมมมองของแตละคน ในการเขยน
โปรแกรมเชงวตถ คณลกษณะประจานมกจะเปนขอมล หรอตวแปรตางๆ ของออบเจกตนน
-Behavior หมายถง พฤตกรรมของออบเจกต-Identity เปนคณลกษณะททาใหออบเจกตแตละออบเจกตตางกน
ความหมายของโอโอพ ในการเขยนโปรแกรมนนออบเจกตมไดหลายตว
โดยออบเจกตแตละตวจะเปนอสระ ไมขนตอกนแตละออบเจกตสามารถทจะสอสารหรอโตตอบกนได
โดยวธสงเมสเสจ ถงกน
คลาสและออบเจกต
คลาสและออบเจกต การมองทกอยางของปญหาเปนวตถหรอออบเจกตนน ถาหากวตถใด
มลกษณะ คลายกนกจะรวมทงหมดใหเปนคลาส ถาหากมตวแปรหรอสรางขอมล
ขนมา ขอมลนนกจะถกใชในออบเจกตนนๆ การกระทากบออบเจกตจะกระทา
ผานเมธอดของคลาสนนๆ
สวนสาคญสองสวนของออบเจกตคอ คณลกษณะซงเปนขอมลประจา ตวของออบเจกตและพฤตกรรมหรอเมธอด ซงบอกวาออบเจกตกาลง
ทาสงใดอยถาหากมการสรางออบเจกตขนมาและโปรแกรมตองการจดการกบขอมลทเปนคณลกษณะของออบเจกตกจะกระทาผานเมธอด
คลาสและออบเจกต สาหรบคลาสจะเปนทรวบรวมของออบเจกตหลายๆ ออบเจกตท
มลกษณะเดยวกน แตอาจมขอมลประจาตวหรอคณลกษณะตางๆ
ดงนนในการเขยนโปรแกรมเชงวตถนนจะตองรจกการนยาม คลาส
จากทกลาวมาแลวจะพบวาคลาสเปนการจดกลมของ ออบเจกต ทมคณลกษณะและพฤตกรรมอยางเหมอนกน เปรยบเสมอน
เปนพมพเขยวของออบเจกต หรอเปนแมแบบสาหรบออบเจกต
คลาสและออบเจกต ในการเขยนโปรแกรมเชงวตถนนจะไมมการใชงานคลาสตรงๆ แตจะใช
คลาสเปนพมพเขยวเพอสรางออบเจกตตางๆขนมาออบเจกตทถกสรางจาก
คลาสจะเรยกวา อนสแตนซ ของคลาสนนโดยทคลาสใดคลาสหนงสามารถสรางออบเจกตออกมาไดหลายตวแตละตวจะมชอแตกตางกนไป
สาหรบการเขยนโปรแกรมเชงวตถดวยภาษตางๆนน จะมคลาส มาตรฐานใหผเขยนโปรแกรมใชงาน และผเขยนโปรแกรมกตองเขาใจ
วธการสรางคลาสขนมาเองดวย ดงนนในการเขยนโปรแกรมเชงวตถจะตองพยายามจาแนกวาวตถทเราสนใจนนตองมตวแปรใดทสามารถ
แยกแยะวตถแตละตวได และวตถดงกลาวมพฤตกรรมอยางไร จา กนนนามารวมเปนคลาส และสรางคลาสนนขนมา
การนยามคลาสในภาษาจาวาสามารถนยามคลาสหรอประกาศคลาสขนมาโดยมรปแบบดงน[AccessSpecifier] Class Name{Members}AccessSpecifier… เปนความสามารถในการเขาถงคลาสนนๆclass …เปนคยเวรดในภาษาจาวาทใชในการประกาศคลาสName… เปนชอคลาสมประกาศขนMembers…เป นคณลกษณะหรอเมธอดตางๆ ของคลาสทนยามขน
การนยามคลาส การสรางออบเจกต หลงจากนยามคลาสขนมาแลว ถา
หากโปรแกรมตองการใชงานจะตองสรางออบเจกตขน มา เพอบอกวาออบเจกตเปนของคลาสใด โดยจะตอง
ประกาศออบเจกตขนมากอนซงมรปแบบดงนClassName ObjectName;การประกาศออบเจกตนจะทาใหคอมไพเลอรรบทราบวาม
ตวแปร ObjectName แตจะยงไมมหนวยความจาสาห รบขอมลของออบเจกตทประกาศขน ซงจะตองสราง
ออบเจกตขนมากอนโดยใชคาวา new ซงมรปแบบดงนobjecyName = new ClassName([arguments])
การนยามคลาส เมอมการสรางออบเจกตขนมาแลว สมาชกของอ
อบเจกตคอสมาชกของคลาสนน ซงไดแก คณลกษณะหรอตวแปรและเมธอดตางๆ
ออบเจกตจะสามารถเขาถงขอมลทเปนคณลกษณะหรอเรยกใชเมธอดไดไมขนกบaccessSpecifier ทถกประกาศไวตอน
นยามคลาส โดยการเรยกใชสมาชกจะทาโดยใช เครองหมายจด แลวตามดวยสมาชกทตองการ
เรยกใช
Static
Static ในจาวามคลาสตางๆใหใชงานมากมาย การสราง
คลาสขนมาใหมนทาใหเราสามารถสรางเมธอด ใหมๆ ขนมาใชงานแลวรวมกนเปนคลาสได และท
ผานมาในบทนจะเหนวาถาหากมการประกาศออบเจกตตองการใชงานสรางออบเจกตดวยคาสงnewเชน
Static จากโปรแกรมนจะเปนวาเมธอดในคลาส
Scanner ทใชรบขอมลจะไมเปนแบบสแตตก ซง จะตองสรางออบเจกตขนมา แตเมธอดชอmax
ในคลาส TestMax ทสรางขนเปนแบบสแตตกจงเรยกชอคลาสและตามดวยเมธอดมาใชงานไดทนทโดยไมตองสรางออบเจกต
Constructors
Constructorsเปนฟงกชนในคลาสทจะถกเรยกอตโนมตเมอเรา
สรางออบเจคใหกบคลาสนน ๆ ดวยคาสงnew ซงมนจะเปนฟงกชน Constructors
ไดกตอเมอชอของมนเหมอนชอคลาส ถาภายใน คลาสไมม constructor ดงนนมนจะทาการ
เรยก constructure ของ base class (ถามนม) เชน
Constructors/ ในกรณทไมสงคาพารามเตอรใหกบConstructor function $default_cart = new Constructor_Cart;// ในกรณนฟงกชน Constructor ของConstructor_Cart นนไดกาหนดคา default
ใหกบพารามเตอรอยแลว // ดงนนเรากไมจาเปน ตองสงคาพารามเตอรกได ไมเกด error
// กรณทสงคา parameter ไปดวย$different_cart = new Constructor_Cart(“20”, 17); ?>
การสงออบเจกตไปยงเมธอด
การสงออบเจกตไปยงเมธอดในการเขยนโปรแกรมทมการสรางคลาสขนมาหลายๆคลาสนนออบเจกตของคลาสหนงสามารถใชเปนอารกวเมนตเพอสงผานไปยงเมธอดของคลาสอกคลาสหนงไดเชนโปรแกรมStudent.Java เปนโปรแกรมคลาส
สาหรบเกบขอมลนกเรยน ไดแก ชอและอเมลโดยมเมธอดสาหรบกาหนดและเรยกดชอและอเมลสาหรบใชงาน
ตวอยางการประยกตการเขยนโปรแกรมเชงวตถ
ตวอยางการประยกตการเขยนโปรแกรมเชงวตถ
จะเปนแบบการออกแบบคลาสแลวนามาเขยน โปรแกรมประยกตสาหรบใชงานจรง โดยอธบาย
ขนตอนสาคญในการทางานแตละขนตอนโดยมโปรแกรมตวอยางการเขยนโปรแกรมสาหรบเขารหสขอมลโดยสงขอมลผานเขาไปในเครอขายคอมพวเตอรเพอ
ความปลอดภยไดนาเทคโนโลยการเขารหสมาใช ทาโดยการเลอนขอมล แตถาเปนตวอกขระตว
สดทายของภาษาองกฤษการเลอนขอมลจะกลบมาเรมตนทตวแรกใหม
ตวอยางการประยกตการเขยนโปรแกรมเชงวตถ
– ถาหากเปน 2-shift ขอมลจะแทนไดดงนA แทนดวย CB แทนดวย D………………..Y แทนดวย AZ แทนดวย B
“ถาขอมลตนฉบบเปน DIZZY” แลวเขารหสแบบ 2- shift ขอมลท
“เขารหสแลวจะเปน FKBBA”
ตวอยางการประยกตการเขยนโปรแกรมเชงวตถ
อธบายการทางานของโปรแกรม- ถาหากพมพคาวา Teerawut ลงไป จะทาใหตวแปร message ชไป
“ยงออบเจกตสตรง Teerawut”- ตอมาถาหากกดคยตวเลข 5 ลงไป จะทาใหตวแปร shift มคาเปน 5- เมอโปรแกรมเรยกใชเมธอด encrypt จะทาให msg ซงเปนพารามเตอรของ
เมธอดชไปยงออบเจกตเดยวกบ message และพารามเตอร shift มคาเปน 5 เชนกน
- เมอเมธอด encrypt ทางาน ทาใหตวแปร encryptedMessage ชไปยงหนวยความจาออบเจกตสตรงทสรางขนมาใหม- จากนนะทาใหตวแปร msg ชไปยงสตรงชดใหมทผานการเขารหสแลว- หลงจากนนจะให encryptedMessage มคาสตรงทเขารหสแลว
ผจดทา
นางสาวณฐวด ทวสข ชนม.6/1 เลขท19
นางสาวกตตธรา หลอศลาทอง ชนม.6/1 เลขท22
นางสาวศศวมล แตงโต ชนม.6/1 เลขท23
นางสาวสทธพร ป นหลวง ชนม.6/1 เลขท24
นางสาวองคณา หนวฒนา ชนม.6/1 เลขท26
นางสาวศรณฐ สรรสม ชนม.6/1 เลขท36
นางสาวอาชานย วเศษสงห ชนม.6/1 เลขท38