คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น...
TRANSCRIPT
ความหมายของโอโอพ โอโอพ หร OOP เปนคายอของ Object-Oriented Programming
หมายถงการเขยนโปรแกรมเชงวตถ หรอเขยนโปรแกรมแบบออบเจกต การเขยนโปแกรมในลกษณะนจะแตกตางจากการเขยนโปรแกรมทประมวลผลเชงคาสงทมการทางานทละตาสงดงทเคยศกษามา แตจะเปนการสรางขอมลเปนวตถหรอออบเจกต แลวเขยนโปแกรมประมวลกบออบเจกตนนๆ ใหทางานตามตองการ นอกจากนนยงเขยนโปรแกรมประมวลผลกบออบเจกตได ซงออบเจกตจะมลกษณะ 3 ประการดงตอไปน
state เปนคณลกษณะของออบเจกตนนๆ ทบอกวาออบเจกตนนเปนอะไรบาง หรอเรยกอกอยางหนงวาเปนคณลกษณะประจา โดยคณสมบตขนกบมมมองของแตละคน ในการเขยนโปรแกรมเชงวตถ คณลกษณะประจานมกจะเปนขอมล หรอตวแปรตางๆ ของออบเจกตนน
Behavior หมายถง พฤตกรรมของออบเจกต I dentity เปนคณลกษณะททาใหออบเจกตแตละออบเจกตตางกน
ในการเขยนโปรแกรมนนออบเจกตมไดหลายตว โดยออบเจกตแตละตวจะเปนอสระ ไมขนตอกนแตละออบเจกตสามารถทจะสอสารหรอโตตอบกนไดโดยวธสงเมสเสจ ถงกน
คลาสและออบเจกต การมองทกอยางของปญหาเปนวตถหรออบเจกตนน ถาหากวตถใดมลกษณะคลายกนกจะรวมทงหมดใหเปนคลาส ถาหากมตวแปรหรอสรางขอมลขนมา ขอมลนนกจะถกใชในออบเจกตนนๆ การกระทากบออบเจกตจะกระทาผานเมธอดของคลาสนนๆ
สวนสาคญสองสวนของออบเจกตคอ คณลกษณะซงเปนขอมลประจาตวของออบเจกตและพฤตกรรมหรอเมธอด ซงบอกวาออบเจกตกาลงทาสงใดอยถาหากมการสรางออบเจกตขนมาและโปรแกรมตองการจดการกบขอมลทเปนคณลกษณะของออบเจกตกจะกระทาผานเมธอด
สาหรบคลาสจะเปนทรวบรวมของออบเจกตหลายๆ ออบเจกตทมลกษณะเดยวกน แตอาจมขอมลประจาตวหรอคณลกษณะตางๆ
ดงนนในการเขยนโปรแกรมเชงวตถนนจะตองรจกการนยาม คลาส จากทกลาวมาแลวจะพบวาคลาสเปนการจดกลมของออบเจกตทมคณลกษณะและพฤตกรรมอยางเหมอนกน เปรยบเสมอนเปนพมพเขยวของออบเจกต หรอเปนแมแบบสาหรบออบเจกต
ในการเขยนโปรแกรมเชงวตถนนจะไมมการใชงานคลาสตรงๆ แตจะใชคลาสเปนพมพเขยวเพอสรางออบเจกตตางๆขนมา ออบเจกตทถกสรางจากคลาสจะเรยนกวา อนสแตนซ ของคลาสนนโดยทคลาสใดคลาสหนงสามารถสรางออบเจกตออกมาไดหลายตวแตละตวจะมชอแตกตางกนไป
สาหรบการเขยนโปรแกรมเชงวตถดวยภาษตางๆนน จะมคลาสมาตรฐานใหผเขยนโปรแกรมใชงาน และผเขยนโปรแกรมกตองเขาใจวธการสรางคลาสขนมาเองดวย ดงนนในการเขยนโปรแกรมเชงวตถจะตองพยายามจาแนกวาวตถทเราสนใจนนตองมตวแปรใดทสามารถแยกแยะวตถแตละตวได และวตถดงกลาวมพฤตกรรมอยางไร จากนนนามารวมเปนคลาส และสรางคลาสนนขนมา
การนยามคลาส
ในภาษาจาวาสามารถนยามคลาสหรอประกาศคลาสขนมาโดยมรปแบบดงน
AccessSpecifier เปนความสามารถในการเขาถงคลาสนนๆclass เปนคยเวรดในภาษาจาวาเพทอใชในการประกาศคลาสName เปนชอคลาสมประกาศขนMembers เปนคณลกษณะหรอเมธอดตางๆ ของคลาสทนยามขน การสรางออบเจกต หลงจากนยามคลาสขนมาแลว ถาหากโปรแกรมตองการใชงานจะตองสรางออบเจกตขนมา เพอบอกวาออบเจกตเปนของคลาสใด โดยจะตองประกาศออบเจกตขนมากอนซงมรปแบบดงน
ClassName ObjectName;
การประกาศออบเจกตนจะทาใหคอมไพเลอรรบทราบวามตวแปร ObjectName แตจะยงไมมหนวยความจาสาหรบขอมลของออบเจกตทประกาศขน ซงจะตองสรางออบเจกตขนมากอนโดยใชคาวา new ซงมรปแบบดงน
objecyName = new ClassName([arguments])
เมอมการสรางออบเจกตขนมาแลว สมาชกของออบเจกตคอสมาชกของคลาสนน ซงไดแกคณลกษณะหรอตวแปรและเมธอดตางๆ ออบเจกตจะสามารถเขาถงขอมลทเปนคณลกษณะหรอเรยกใชเมธอดไดไมขนกบaccessSpecifier ทถกประกาศไวตอนนยามคลาส โดยการเรยกใชสมาชกจะทาโดยใชเครองหมายจด แลวตามดวยสมาชกทตองการเรยกใช
[AccessSpecifier] Class Name
{Members
}
สแตตก(static) ในจาวามคลาสตางๆใหใชงานมากมาย การสรางคลาสขนมาใหมนทาใหเราสามารถสรางเมธอดใหมๆ ขนมาใชงานแลวรวมกนเปนคลาสได และทผานมาในบทนจะเหนวาถาหากมการประกาศออบเจกตตองการใชงานสรางออบเจกตดวยคาสง new เชน
จากโปรแกรมนจะเปนวาเมธอดในคลาส Scanner ทใชรบขอมลจะไมเปนแบบสแตตก ซงจะตองสรางออบเจกตขนมา แตเมธอดชอmax ในคลาส TestMax ทสรางขนปนแบบสแตตก จงเรยกชอคลาสและตามดวยเมธอดมาใชงานไดทนทโดยไมตองสรางออบเจกต
import java.util.Scanner;public class Cal_Max {
public static void main(String args[]){
int num1,num2;Scanner stdin = new Scanner(System.in);System.out.print("Input Number 1 : ");
num1 = stdin.nextInt();System.out.print("Input Number 2 : ");
num2 = stdin.nextInt();int larger = TestMax.max(num1,num2);
System.out.println("Max Data is "+larger);}}
class TestMax{
static int max(int num1, int num2){
if(num1 > num2)return num1;
elsereturn num2;
}}
Constructors เปนฟงกชนในคลาสทจะถกเรยกอตโนมตเมอเราสรางออบเจคใหกบคลาสนน ๆ ดวยคาสง new ซงมนจะเปนฟงกชน Constructors ไดกตอเมอชอของมนเหมอนชอคลาส ถาภายในคลาสไมม constructor ดงนนมนจะทาการเรยก constructure ของ base class (ถามนม) เชน
// ในกรณทไมสงคาพารามเตอรใหกบ Constructor function $default_cart = new Constructor_Cart; // ในกรณนฟงกชน Constructor ของ Constructor_Cart นนไดกาหนดคา default ใหกบพารามเตอรอยแลว // ดงนนเรากไมจาเปนตองสงคาพารามเตอรกได ไมเกด error// กรณทสงคา parameter ไปดวย $different_cart = new Constructor_Cart("20", 17); ?>
<?phpclass Auto_Cart extends Cart
{ function Auto_Cart() {
$this->add_item("10", 1);} }
?> Constructors function นนสามารถรบคาพารามเตอรไดเชนกน ดงน
<?phpclass Constructor_Cart extends Cart
{function Constructor_Cart(
$item = "10", $num = 1) { $this->add_item($item, $num); } }
การสงออบเจกตไปยงเมธอด ในการเขยนโปรแกรมทมการสรางคลาสขนมาหลายๆคลาสนน ออบเจกตของคลาสหนงสามารถใชเปนอารกวเมนตเพอสงผานไปยงเมธอดของคลาสอกคลาสหนงได
เชนโปรแกรมStudent.Java เปนโปรแกรมคลาสสาหรบเกบขอมลนกเรยน ไดแก ชอและอเมลโดยมเมธอดสาหรบกาหนดและเรยกดชอและอเมลสาหรบใชงาน
public class Student3 {private String name; private String email;
public Student3() {
name = "Unassigned";email = "Unassigned";}public String getEmail(){ return email;}public String getName(){ return name;}public void setEmail(String address){
email = address;}public void setName(String studentName){name = studentName;}
}
ตวอยางการประยกตการเขยนโปรแกรมเชงวตถ จะเปนแบบการออกแบบคลาสแลวนามาเขยนโปรแกรมประยกตสาหรบใชงานจรง โดยอธบายขนตอนสาคญในการทางานแตละขนตอน โดยมโปรแกรมตวอยางการเขยนโปรแกรมสาหรบเขารหสขอมลโดยสงขอมลผานเขาไปในเครอขายคอมพวเตอร เพอความปลอดภยไดนาเทคโนโลยการเขารหสมาใช ทาโดยการเลอนขอมล แตถาเปนตวอกขระตวสดทายของภาษาองกฤษการเลอนขอมลจะกลบมาเรมตนทตวแรกใหม- ถาหากเปน 2-shift ขอมลจะแทนไดดงนA แทนดวย CB แทนดวย D………………..Y แทนดวย AZ แทนดวย B
ถาขอมลตนฉบบเปน “DIZZY” แลวเขารหสแบบ 2- shift ขอมลทเขารหสแลวจะเปน “FKBBA”
อธบายการทางานของโปรแกรม1.ถาหากพมพคาวา Teerawut ลงไป จะทาใหตวแปร message ชไปยงออบเจกตสตรง “Teerawut”2.ตอมาถาหากกดคยตวเลข 5 ลงไป จะทาใหตวแปร shift มคาเปน 53.เมอโปรแกรมเรยกใชเมธอด encrypt จะทาให msg ซงเปนพารามเตอรของเมธอดชไปยงออบเจกตเดยวกบ message และพารามเตอร shift มคาเปน 5 เชนกน4.เมอเมธอด encrypt ทางาน ทาใหตวแปร encryptedMessage ชไปยงหนอยความจาออบเจกตสตรงทสรางขนมาใหม5.จากนนจะทาใหตวแปร msg ชไปยงสตรงชดใหมทผานการเขารหสแลว6.หลงจากนนจะให encryptedMessage มคาสตรงทเขารหสแลว
ตวอยางโปรแกรม จะแสดงการสรางคลาสของการนาตวอกขระ[]มาสรางเปนรปสามเหลยม โดยการสรางคลาสสามารถทาไดดงตอไปน1.สรางโปรเจกตใหม2.สรางคลาสใหม โดยเลอกเมน New>Class3.กาหนดชอคลาส แลวกด Next4.โปรแกรมจะแสดงคลาสใหมขนมา5.จากนนใหเตมโคด แลวรนโปรแกรม สรป คลาสเปรยบเสมอนพมพเขยวสาหรบสรางออบเจกตตางๆออกมาทมลกษณะคลายกนมาอยรวมกน ในการสรางคลาสนน ภายในประกอบดวยสวนทเปนคณลกษณะหรอตวแปรตางๆและสวนทเปนเมธอดโดยทตวแปรและเมธอดนผทนยามคลาสสามารถกาหนดไดวาจะใหผใชภายนอกสามารถเขาถงไดในระดบใด เมอมการออบเจกตของคลาสขนมาแลวตองการใหทาเมธอดใดทนท ในการนยามคลาสนนจะตองสรางเมธอดทมชอเดยวกบคลาสทเรยกวา คอนสตรคเตอร ขนมา
คลาสและการเขยนโปรแกรมวตถเบองตนจดทาโดย
นายปตพงษ ปลบตร เลขท10นางสาว รงทวา ผดงพฒนดษฐ เลขท20
นางสาวจณสตา ลมทอง เลขท30นางสาวจนทรา แสงสรยาอทย เลขท31
นางสาวนศาชล ไทยพทรา เลขท33นางสาวอารษา งามขา เลขท37
นกเรยนชน ม.6/1โรงเรยนเฉลมพระเกยรตสมเดจพระศรนครนทร กาญจนบร
วชาการเขยนโปรแกรมประยกต (ง30213)เสนอ
ครทรงศกด โพธเอยม