บทที่ 8 การเขียนโปรแกรมเชิงวัตถุ CHAPTER 8 Object Oriented Programming BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming เนื้อหา บทนำเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ ความหมายของวัตถุ (Object) คุณสมบัติของวัตถุ (Characteristics of Object) การหุ้มห่อ (Encapsulation/Protection) การสื่อสารระหว่างวัตถุ (Message Passing) ความหมายของคลาส (Class) ความแตกต่างระหว่างคลาส (Class)และวัตถุ (Object) การสืบทอดองค์ประกอบของวัตถุ (Inheritance) ลำดับชั้นของวัตถุ (Heirarchy) BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming วัตถุประสงค์ เพื่อศึกษาแนวความคิดในการเขียนโปรแกรมเชิงวัตถุ เพื่อศึกษาความหมายและองค์ประกอบของวัตถุ เพื่อศึกษาความหมายของคลาส เพื่อศึกษาแนวคิดการออกแบบโปรแกรมเชิงวัตถุ เพื่อศึกษาคุณลักษณะของวัตถุ BC320:Introduction to Computer Programming
8.1 แนวคิดในการเขียนโปรแกรมเชิงวัตถุ แนวความคิดในการเขียนโปรแกรมมี 2 แนวคิด แนวความคิดการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) แนวความคิดเชิงวัตถุ (Object Oriented Programming) BC320:Introduction to Computer Programming
8.1 แนวคิดในการเขียนโปรแกรมเชิงวัตถุ (ต่อ) แนวคิดการเขียนโปรแกรมแบบโครงสร้าง เป็นแนวความคิดในการเขียนโปรแกรมที่มีการนำข้อมูลที่เหมือนกัน มารวมเข้าไว้ด้วยกัน เป็นชุดเดียวกัน เพื่อง่ายต่อการอ้างถึง เช่น struct person{ char *name; char *address; int age; }; BC320:Introduction to Computer Programming
8.1 แนวคิดในการเขียนโปรแกรมเชิงวัตถุ (ต่อ) จากสไลด์ที่ผ่านมาเป็นการประกาศให้ person เป็นชื่อของกลุ่มข้อมูลที่ประกอบด้วยตัวแปร 3 ตัวคือ name, address และ age การนำเอากลุ่มข้อมูลไปใช้งาน สามารถประกาศตัวแปรเป็นแบบ person คือ struct person man1; ซึ่งหมายความว่าให้ตัวแปร man1 เป็นตัวแปรชนิด person เพราะฉะนั้นตัวแปร man1 จะมีโครงสร้างเช่นเดียวกันกับ person คือ ประกอบด้วยตัวแปร 3 ตัวนั่นคือ name, address และ age นั่นเอง BC320:Introduction to Computer Programming
8.1 แนวคิดในการเขียนโปรแกรมเชิงวัตถุ (ต่อ) man1.name = “Supachai”; man1.address = “Bangkok”; man1.age = “18” ให้สังเกตุว่า การเขียนโปรแกรมแบบโครงสร้างจะเป็นการรวมตัวแปรไว้ในกลุ่มเดียวกัน BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming Slide เพิ่ม Name Age Address Supachai Bangkok 18 man1 ถ้าสั่งให้รับค่าข้อมูลของนักศึกษา ตามคำสั่งนี้ ค่าที่เก็บจะเป็นอย่างไร? Read man1.Name Read man1.Address Read man1.Age Name Address Age ? ? ? man1 BC320:Introduction to Computer Programming
8.1 แนวคิดในการเขียนโปรแกรมเชิงวัตถุ (ต่อ) แนวคิดการเขียนโปรแกรมเชิงวัตถุ เป็นการเขียนโปรแกรมเพื่อให้เป็นไปตามหลักการเชิงวัตถุ ซึ่งมีลักษณะเช่นเดียวกับการเขียนโปรแกรมแบบโครงสร้าง แต่จะแตกต่างกันตรงที่ เป็นการนำเอาข้อมูล, ตัวแปร หรือฟังก์ชัน ของวัตถุมา รวมอยู่ในกลุ่มเดียวกัน BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming 8.2 ความหมายของวัตถุ วัตถุคือสิ่งใดๆ ซึ่งมีคุณลักษณะ (State) บ่งบอกถึงความเป็นตัวของมันเอง และสามารถแสดงพฤติกรรม (Behavior) ของตัวมันเองออกมาได้ ยกตัวอย่างเช่น ถ้าพิจารณา คีย์บอร์ด เป็นวัตถุ (Object) คุณลักษณะ: มีปุ่มกด, มีสายเชื่อมต่อ พฤติกรรม: ใช้ป้อนข้อมูลเข้าคอมพิวเตอร์ BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming 8.3 คุณสมบัติของวัตถุ เมื่อพิจารณาวัตถุใด ๆ ก็ตาม จะประกอบด้วย 2 ส่วนสำคัญ คือ คุณลักษณะ และพฤติกรรม คุณลักษณะ คือสิ่งที่สามารถบ่งบอกถึงความเป็นวัตถุ เช่น สี ความสูง น้ำหนัก พฤติกรรม คือ อาการที่วัตถุใดๆ แสดงออกมา เช่น การเคลื่อนที่ การหยุด BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming 8.3 คุณสมบัติของวัตถุ ลักษณะ: พฤติกรรม: จอภาพ,สาย,ปุ่มกด แสดงผลลัพธ์จากคอมพิวเตอร์ ลักษณะ: พฤติกรรม: ปุ่มปรับเสียง,จานเสียง,หน้ากาก แสดงเสียงลักษณะต่าง ๆ ลักษณะ: พฤติกรรม: ปุ่มกด,ถาดรับแผ่น CD,สปริง ฯลฯ อ่านข้อมูลจากแผ่น CD BC320:Introduction to Computer Programming
ดังนั้น Software Object Slide เพิ่ม ดังนั้น Software Object ลักษณะ: พฤติกรรม: ตัวแปรต่าง ๆ (Variables) มี Method สำหรับการทำงาน ดังนั้น Object คือ ซอฟต์แวร์ที่รวมเอา Variables และ Method ที่เกี่ยวข้องไว้ด้วยกัน BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming Slide เพิ่ม แล้ว Method คืออะไร ? สมัยก่อนเขียนโปรแกรมที่ต้องการเรียกใช้คำสั่งต่างๆ ซ้ำไปซ้ำมาหลาย ๆ รอบ ก็จะใช้ Function เพื่อทำให้โปรแกรมลดความซ้ำซ้อนและทำงานเร็วขึ้น ดังนั้น Method ในภาษาจาวา ก็คือ Function ในภาษาซี เขียนครั้งเดียวก็เรียกใช้ได้หลาย ๆ รอบเลย BC320:Introduction to Computer Programming
8.4 การหุ้มห่อ (Encapsulation) การหุ้มห่อ คือ การหุ้มห่อข้อมูล ที่เป็นทั้งคุณลักษณะ และพฤติกรรม ของวัตถุเข้าไว้ด้วยกัน ซึ่งก็จะเหมือนการซ่อนกระบวนการทำงานของข้อมูลไว้ และจะทำให้วัตถุมีความพิเศษอื่นๆ ตามมาด้วย BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming Slide เพิ่ม แสดง Encapsulation ของ Object Variables Method Variables อยู่ตรงกลาง Object แล้วมี Method ห่อหุ้มอยู่รอบนอก ป้องกันไม่ให้ฟังก์ชันอื่นที่ไม่เกี่ยวข้องเข้ามากำหนดตัวแปรต่าง ๆเพิ่มได้ BC320:Introduction to Computer Programming
8.4 การหุ้มห่อ (Encapsulation) (ต่อ) 8.4.1 ความเป็นโมดูล (Modularity) หมายถึงความสามารถในการนำวัตถุไปใช้ที่ใด ๆ ก็ได้ โดยไม่ต้องมีการปรับปรุงสภาพแวดล้อมของการใช้งานก่อน เนื่องจาก Source Code ของแต่ละ Object อิสระกัน เมื่อต้องทำการปรับปรุง ก็สามารถทำได้โดยไม่มีผลกระทบกับการทำงานของระบบซอฟต์แวร์โดยรวม นอกจากนี้ความเป็น Object ทำให้เป็นเสมือนชิ้นส่วนที่นำไปประกอบเข้ากับซอฟต์แวร์อื่น ๆ ที่ออกแบบมาให้รองรับกันและกันได้ BC320:Introduction to Computer Programming
8.4 การหุ้มห่อ (Encapsulation) (ต่อ) 8.4.2 การซ่อนเร้นข้อมูล (Information Hiding) หมายถึงความสามารถในการซ่อน หรือการอนุญาตให้เข้าถึงข้อมูลคุณลักษณะ หรือพฤติกรรมในบางส่วนที่จำเป็น Programmerคนอื่น ๆ ต้องการนำ Object ไปใช้งานหรือเขียนโปรแกรมต่อ ก็ศึกษาแค่ Method และ Variables ที่จำเป็นเท่านั้น ไม่ต้องรู้รายละเอียดทั้งหมด ก็สามารถนำไปใช้งานได้แล้ว เช่น เรานำ Object ชื่อกล้องดิจิตอล ไปใช้งาน เราก็รู้แค่ จำนวนรูปที่ถ่ายได้ และวิธีการใช้งาน เป็นต้น BC320:Introduction to Computer Programming
ข้อดีของ Encapsulation Slide เพิ่ม ข้อดีของ Encapsulation สร้างความปลอดภัยให้ข้อมูล เพราะผู้มีสิทธิเท่านั้นถึงจะเข้าถึงข้อมูลได้ ถ้ามีการเปลี่ยนแปลงวัตถุ(Object) ก็จะไม่ส่งผลกระทบถึงวัตถุอื่น ๆ BC320:Introduction to Computer Programming
8.5 การสื่อสารระหว่างวัตถุ (Message Passing) เมื่อพิจารณาจากวัตถุจักรยานแล้ว การสื่อสารระหว่างวัตถุ ก็อย่างเช่น เมื่อวัตถุคน ไปกระตุ้นวัตถุจักรยานให้แสดงพฤติกรรมออกมา ด้วยการออกแรงปั่น BC320:Introduction to Computer Programming
8.5 การสื่อสารระหว่างวัตถุ (Message Passing) (ต่อ) การสื่อสารระหว่างวัตถุ แบ่งออกได้เป็น 2 กรณี วัตถุด้านส่ง (sender) ร้องขอข้อมูลจากวัตถุด้านรับ (receiver) และจำเป็นจะต้องรอค่าส่งกลับ วัตถุด้านส่ง (sender) ต้องการส่งค่าบางค่าไปเปลี่ยนแปลงข้อมูลที่ฝั่งผู้รับ ซึ่งในกรณีนี้วัตถุผู้ส่งไม่จำเป็นต้องสนใจการส่งค่ากลับคืน BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming ข้อมูล ข้อมูล ข้อความ (message) พฤติกรรม พฤติกรรม พฤติกรรม พฤติกรรม ค่าที่ส่งกลับ (Return value) พฤติกรรม พฤติกรรม วัตถุตัวส่งข้อความ (sender) วัตถุตัวรับข้อความ (receiver) BC320:Introduction to Computer Programming
Message Passing ระหว่าง Object คนกับ Object จักรยาน Slide เพิ่ม Ex1 Message Passing ระหว่าง Object คนกับ Object จักรยาน = + ส่งผ่านข้อมูลแรงปั่นไปให้ Object จักรยาน Object คน + Object จักรยาน BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming Ex2 Slide เพิ่ม ระบบการทำงานที่มีวัตถุคือ คนงาน (Employee) และการจ่ายเงินเดือน (Payroll) โดยวัตถุทั้งสองจะทำงานร่วมกัน โดยที่วัตถุการจ่ายเงินเดือน มีหน้าที่คำนวณค่าเงินเดือนของวัตถุคนงาน ส่วนประกอบภายในของทั้งสอง ได้แก่ คนงาน ประกอบด้วย คุณลักษณะหรือข้อมูล (attribute/data): หมายเลขบัตรประชาชน เพศ วันเดือนปีเกิด ที่อยู่ พฤติกรรม (Behavior/Method) : ร้องขอข้อมูลบัตรประชาชน เพศ วันเดือนปีเกิด ที่อยู่ การจ่ายเงินเดือน ประกอบด้วย คุณลักษณะหรือข้อมูล (attribute/data) : การจ่ายเงินเดือน พฤติกรรม (Behavior/Method) : คำนวณเงินเดือนที่จะต้องจ่าย BC320:Introduction to Computer Programming
Ex3. การสื่อสารระหว่างวัตถุ (Message Passing) โปรแกรมคำนวณเกรด ดังรูป ประกอบด้วยวัตถุ 4 ตัวด้วยกัน คือ Textbox1, Textbox2, ปุ่มกด Enter และ ปุ่มกด Cancel BC320:Introduction to Computer Programming
8.5 การสื่อสารระหว่างวัตถุ (Message Passing) (ต่อ) จากเมนูตัวอย่าง วัตถุแต่ละตัวจะมีพฤติกรรมดังนี้ Textbox1 (Input score) จะทำหน้าที่รับคะแนน Textbox2 (Your grade) จะทำหน้าที่แสดงเกรด ปุ่มกด Enter จะทำหน้าที่ในการสั่งให้โปรแกรมรับคะแนนที่ Textbox1 มาทำการคำนวณเกรด หลังจากนั้นก็เกรดไปแสดงที่ Textbox2 ปุ่มกด Cancel จะทำหน้าที่ในการปิดเมนู BC320:Introduction to Computer Programming
8.5 การสื่อสารระหว่างวัตถุ (Message Passing) (ต่อ) 60 C นำ 60 จาก Textbox1 มาเก็บเก็บไว้ในตัวแปร นำค่าในตัวแปรมาตรวจสอบเงื่อนไข ว่าเกรดเท่ากับเท่าใด นำเกรดที่ได้ ไปแสดงผลที่ช่อง Textbox2 BC320:Introduction to Computer Programming
8.6 ความหมายของคลาส (Class) คลาส เปรียบได้กับพิมพ์เขียวของสิ่งที่เราต้องการสร้างขึ้นมา ซึ่งคลาสจะประกอบด้วยวัตถุหลายๆ ชิ้น รวมขึ้นเป็น 1 คลาส ยกตัวอย่างเช่น คลาสรถยนต์ ก็จะประกอบด้วยล้อรถ ประตู เครื่องยนต์ พวงมาลัย เป็นต้น BC320:Introduction to Computer Programming
8.7 ความแตกต่างระหว่าง คลาสและวัตถุ คลาสก็คือการนำวัตถุหลายๆ อย่างมารวมกัน เพื่อทำให้เกิดสิ่งที่ต้องการ วัตถุจะเป็นส่วนประกอบของคลาส ซึ่งจะมีลักษณะเฉพาะและพฤติกรรม BC320:Introduction to Computer Programming
8.7 ความแตกต่างระหว่าง คลาสและวัตถุ คลาสคอมพิวเตอร์ Mouse Keyboard Monitor CD ROM RAM BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming class Student { public int id; private string name; private string major; private double gpa; public void setname (String n) {name = n; } public String getname () { return name; } public void setmajor (String m) { major = m; } public String getmajor () { return major; } public void setgpa (double g) { gpa = g; } public float getgpa () { return gpa; } } class Student1 { public static void main ( String args[] ) { Student A = new Student (); A.id = 1460200188; A.setname (“Sunisa”); A.setmajor (“Business Computer”); A.setgpa (3.75); System.out.println(A.id + “ “ + A.getname() + “ “ + A.getmajor () + “ “ + A.getgpa()); } p121 สรุป class Student เป็น class ของ class Student1 และ class Student1 ก็เป็น object ของ class Student Class Student มี Attitbute : id, name, major, gpa Method : setname(), getname(), setmajor(), getmajor(), setgpa(), getgpa() class Student1 นั้นจะทำการสืบทอดคุณสมบัติจาก class Student BC320:Introduction to Computer Programming
8.8 การสืบทอดองค์ประกอบของวัตถุ (Inheritance) ส่วนที่พิเศษอย่างหนึ่งของแนวคิดเชิงวัตถุ คือการสืบทอด ซึ่งจะทำให้ในการพัฒนาสิ่งใหม่ๆเป็นไปได้ง่ายขึ้น ยกตัวอย่างเช่น ถ้ามองรถจักรยานเป็นวัตถุหนึ่งแล้ว การที่จะพัฒนารถจักรยานให้เป็นจักรยานเสือภูเขา ก็สามารถนำวัตถุรถจักรยานมาเพิ่มเติมรายละเอียดอีกเล็กน้อย ก็จะทำให้ได้จักรยานเสือภูเขาแล้ว BC320:Introduction to Computer Programming
8.8 การสืบทอดองค์ประกอบของวัตถุ (Inheritance) (ต่อ) คลาสแม่ คลาสลูก BC320:Introduction to Computer Programming
ความสามารถของ Inheritance Slide เพิ่ม ความสามารถของ Inheritance หากต้องการเขียน Class ใหม่ที่มีคุณสมบัติเหมือน Class เดิม โดยยังคงใช้ Class เดิมด้วยในโปรแกรมเดียวกัน เราจะใช้วิธีการถ่ายทอดลักษณะ (Inheritance) โดยไม่ต้องเขียน Code ใหม่ที่ยืดยาว และสามารถออกแบบ Class ให้มีลักษณะต่าง ๆ ได้อย่างหลากหลายในโปรแกรมเดียวกันได้ BC320:Introduction to Computer Programming
8.8 การสืบทอดองค์ประกอบของวัตถุ (Inheritance) (ต่อ) การสืบทอดองค์ประกอบจากคลาสต้นแบบจะมี 2 แบบ BC320:Introduction to Computer Programming
8.8 การสืบทอดองค์ประกอบของวัตถุ (Inheritance) (ต่อ) ตัวอย่าง การสืบทอดคุณลักษณะแบบ Single Inheritance BC320:Introduction to Computer Programming
8.8 การสืบทอดองค์ประกอบของวัตถุ (Inheritance) (ต่อ) ตัวอย่าง การสืบทอดคุณลักษณะแบบ Multiple Inheritance BC320:Introduction to Computer Programming
8.9 ลำดับชั้นของวัตถุ (Hierarchy) คำว่าวัตถุนั้น ในความเป็นจริงแล้วไม่ได้เป็นหน่วยย่อยซึ่งเล็กที่สุด แต่วัตถุจะประกอบด้วยหลายๆวัตถุ เช่น BC320:Introduction to Computer Programming
BC320:Introduction to Computer Programming จบการบรรยาย BC320:Introduction to Computer Programming