560 likes | 818 Views
หลักการเชิง วัตถุ (Object Oriented Concept). Nerissa Onkhum. วัตถุประสงค์. แนะนำ วัตถุ และคลาส อธิบายคุณลักษณะและเมธอด อธิบายการเขียนโปรแกรมเชิง วัตถุ โดยใช้ภาษาจาวา แนะนำการเขียนโปรแกรมโดยใช้คุณลักษณะเด่น ของโปรแกรมเชิ งวัตถุ
E N D
หลักการเชิงวัตถุ(Object Oriented Concept) Nerissa Onkhum
วัตถุประสงค์ • แนะนำวัตถุและคลาส • อธิบายคุณลักษณะและเมธอด • อธิบายการเขียนโปรแกรมเชิงวัตถุโดยใช้ภาษาจาวา • แนะนำการเขียนโปรแกรมโดยใช้คุณลักษณะเด่น ของโปรแกรมเชิงวัตถุ • แนะนำ Unified Modelling Language • อธิบายขั้นตอนการพัฒนาโปรแกรม
หลักการเชิงวัตถุ • ภาษาจาวาเป็นภาษาคอมพิวเตอร์ที่ใช้หลักการเชิงวัตถุ • OOP (Object Oriented Programming) • OOP เป็นขบวนการการพัฒนาโปรแกรมโดยการจำลองปัญหาว่า ประกอบไปด้วยวัตถุใดบ้าง • นิยามที่สำคัญคือ • วัตถุ (object) • คลาส (class)
วัตถุ • วัตถุคือสิ่งต่าง ๆ ที่มีอยู่ในชีวิตประจำวัน • วัตถุที่เป็นรูปธรรมเช่น นักศึกษา ใบลงทะเบียน ปากกา และรถ • วัตถุที่เป็นนามธรรมเช่น คะแนน รายชื่อวิชา บัญชีเงินฝาก และตารางเที่ยวบิน • วัตถุประกอบด้วย • คุณลักษณะ (attribute) หรือข้อมูล (data) • พฤติกรรม (behavior) หรือเมธอด (method)
วัตถุ • คุณลักษณะ • ข้อมูลของวัตถุ • แต่ละวัตถุอาจมีค่าของคุณลักษณะที่ต่างกัน • เมธอด • สิ่งที่วัตถุสามารถกระทำได้ • คำสั่งในการทำงานของโปรแกรมเชิงวัตถุ • โปรแกรมจะจัดการกับข้อมูลโดยเรียกใช้เมธอด
ตัวอย่างของโปรแกรมเชิงวัตถุตัวอย่างของโปรแกรมเชิงวัตถุ • โปรแกรมระบบจัดการบัญชีเงินฝากของธนาคาร • ตัวอย่างของวัตถุ • Account • Customer • Transaction • ATM • Account • อาจมีคุณลักษณะเช่น เลขที่บัญชี ชื่อเจ้าของบัญชี วันที่เปิดบัญชี และยอดเงินคงเหลือ • อาจมีเมธอดเช่น ฝาก ถอน และโอนเงิน
คลาส • เปรียบเสมือนพิมพ์เขียวของวัตถุ • วัตถุจะถูกสร้างมาจากคลาส บางครั้งเรียกว่าเป็น instance ของคลาส • คลาสหนึ่งคลาสสามารถสร้างวัตถุได้หลายวัตถุ อาทิเช่น คลาสชื่อ Student อาจสร้างวัตถุชื่อ s1,s2 หรือ s3 ซึ่งเป็นวัตถุชนิด Student
รูปแสดงการสร้างวัตถุจากคลาส Student
คุณลักษณะของวัตถุ • ข้อมูลที่เก็บอยู่ในวัตถุแบ่งเป็นตัวแปร (variable) และค่าคงที่ (constant) • ตัวแปรคือคุณลักษณะที่สามารถเปลี่ยนค่าได้ • ค่าคงที่คือคุณลักษณะที่ไม่สามารถเปลี่ยนค่าได้
ตัวอย่างคุณลักษณะของวัตถุตัวอย่างคุณลักษณะของวัตถุ
คุณลักษณะของคลาส • เป็นคุณลักษณะที่ใช้ร่วมกันของทุกวัตถุ • ทุกวัตถุจะใช้คุณลักษณะร่วมกันทำให้ประหยัดพื้นที่ ในหน่วยความจำ • ตัวอย่างเช่น คุณลักษณะที่กำหนดให้เป็นค่าคงที่ชื่อ MIN_GPA
ตัวอย่างคุณลักษณะของคลาสตัวอย่างคุณลักษณะของคลาส
เมธอด • วิธีการหรือการกระทำที่นิยามอยู่ในคลาสหรือวัตถุ เพื่อใช้ในการจัดการกับคุณลักษณะของวัตถุ • เปรียบเทียบได้กับ function, procedure หรือ subroutine ของโปรแกรมเชิงกระบวนการ • ตัวอย่างเช่น เมธอด deposit() เพื่อเป็นเมธอดสำหรับ ฝากเงิน
การสื่อสารระหว่างวัตถุการสื่อสารระหว่างวัตถุ • การสื่อสารระหว่างกันของวัตถุทำได้โดยการผ่านข่าวสาร (message) objB คือ ชื่อวัตถุ method4 คือ ชื่อเมธอด (1,2) คือ argument
การสื่อสารระหว่างวัตถุการสื่อสารระหว่างวัตถุ • ข่าวสารจะส่งผ่านจากวัตถุ objA ที่เป็นผู้ส่ง (sender) เพื่อเรียกการทำงานของเมธอดที่ชื่อ method4 จากวัตถุ objB ที่เป็นผู้รับ (receiver) • objB อาจส่งค่า (return value) บางค่ากลับมายัง objA
การเขียนโปรแกรมเชิงวัตถุโดยใช้ภาษาจาวาการเขียนโปรแกรมเชิงวัตถุโดยใช้ภาษาจาวา • Modifier ในภาษาจาวา • การประกาศคลาส • การประกาศคุณลักษณะ • การประกาศเมธอด • การประกาศและสร้างวัตถุ • การเรียกใช้สมาชิกของวัตถุ
Modifier ในภาษาจาวา • Modifier ในภาษาจาวาแบ่งออกเป็น 2 ประเภท คือ • Access modifier ได้แก่ private, public, protected และ package (อาจเรียก package ว่า none, default หรือ friendly) • Non-access modifier ได้แก่ final, abstract, static, native, transient, volatile, synchronized, strictfp
Modifier ในภาษาจาวา • การนำ Access Modifier ไปใช้งาน • access modifier ใช้กำหนดไว้หน้าคลาส แอตทริบิวต์ เมธอด • จุดประสงค์ เพื่อกำหนดระดับการเข้าใช้งาน • access modifier : public, protected, package, private • modifier publicและ packageสามารถใช้กำหนดให้กับคลาส แอตทริบิวต์หรือเมธอด • Modifier protectedและ privateใช้กำหนดให้กับคลาสไม่ได้ แต่สามารถกำหนดให้กับแอตทริบิวต์หรือเมธอดได้
Modifier ในภาษาจาวา สรุปการนำ access modifier แต่ละแบบไปใช้งาน
Modifier ในภาษาจาวา • จาวาแบ่งระดับของ access modifier ออกเป็น 4 ระดับ คือ • public (สาธารณะ) หากกำหนด modifier public ให้กับคลาส แอตทริบิวต์ หรือเมธอดใดแล้ว คลาสอื่น ๆ จะสามารถเข้าใช้งานคลาส แอตทริบิวต์ หรือเมธอดนั้นได้อิสระ ไม่มีขีดจำกัด • protected (ถูกปกป้อง) ไม่ได้เปิดให้คลาสใด ๆ สามารถเข้าใช้งานได้อย่างอิสระ แต่ไม่ถึงกับปิดไม่ให้ใครเข้าใช้งานเลย
Modifier ในภาษาจาวา • protected มีลักษณะการเข้าใช้งาน ดังนี้ • กำหนด modifier เป็น protected ให้กับแอตทริบิวต์และเมธอดของคลาส คลาสอื่น ๆ ในเพ็กเกจเดียวกันจะสามารถเรียกใช้งานแอตทริบิวต์และ เมธอดได้ • กำหนด modifier เป็น protected ให้กับแอตทริบิวต์และเมธอดของคลาส คลาสอื่น ๆ ที่อยู่ต่างเพ็กเกจ จะไม่สามารถเรียกใช้งานแอตทริบิวต์และ เมธอดได้ • กำหนด modifier เป็น protected ให้กับแอตทริบิวต์และเมธอดของคลาส คลาสอื่น ๆ ที่มีความสัมพันธ์เป็นคลาสแม่คลาสลูกกับคลาสนี้ ถึงแม้จะ อยู่คนละแพ็กเกจกัน ก็สามารถเรียกใช้งานแอตทริบิวต์และเมธอดได้
Modifier ในภาษาจาวา • package • กรณีที่ไม่ได้กำหนด modifier ใด ๆ ไว้หน้าคลาส แอตทริบิวต์หรือเมธอด จะทำให้คลาส แอตทริบิวต์ หรือเมธอดมีระดับเข้าถึงเป็น package • กำหนด modifier เป็น package หน้าคลาส แอตทริบิวต์ หรือเมธอดจะทำให้คลาสที่อยู่ในแพ็กเกจอื่นจะไม่สามารถเข้าใช้งานคลาส แอตทริบิวต์ หรือเมธอดได้ • private (ส่วนบุคคล) • แอตทริบิวต์และเมธอดของคลาสจะถูกหุ้มห่อ (Encapsulate) เอาไว้ ปิดกั้นไม่ให้คลาสอื่นเข้ามาใช้งานแอตทริบิวต์หรือเมธอดที่กำหนด modifier เป็น private ได้ • จะมีเฉพาะคลาสของมันเองเท่านั้นที่มีสิทธิ์ใช้งานได้หลักการนี้เรียกว่า information hiding
Modifier ในภาษาจาวา สรุปการทำงาน access modifier แต่ละแบบ
การประกาศคลาส • โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อยหนึ่งคลาส โดยมีรูปแบบการประกาศ ดังนี้ [modifier] class Classname { [class member] } • modifier คือคีย์เวิร์ด (keyword) ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (access modifier) • class คือคีย์เวิร์ดของภาษาจาวาเพื่อระบุว่าเป็นการประกาศคลาส • Classname คือชื่อคลาส • class member คือเมธอดหรือคุณลักษณะ
การประกาศคลาส • ตัวอย่าง public class Student { }
การประกาศคุณลักษณะ • คุณลักษณะของวัตถุคือตัวแปรหรือค่าคงที่ซึ่งประกาศภายในวัตถุ โดยมีรูปแบบการประกาศ ดังนี้ [modifier] dataType attributeName; • modifier คือคีย์เวิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆของตัวแปรหรือค่าคงที่ • dataType คือชนิดข้อมูลซึ่งอาจเป็นชนิดข้อมูลพื้นฐานหรือชนิดคลาส • attributeName คือชื่อของคุณลักษณะ
การประกาศคุณลักษณะ • ตัวอย่าง public class Student { public String id; public String name; public double gpa; }
การประกาศเมธอด • ภาษาจาวากำหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังนี้ [modifier] return_type methodName([arguments]) { [method_body] } • modifier คือคีย์เวิร์ดของภาษาจาวาที่ใช้อธิบายระดับการเข้าถึง • return_type คือชนิดข้อมูลของค่าที่จะมีการส่งกลับ • methodName คือชื่อของเมธอด • arguments คือตัวแปรที่ใช้ในการรับข้อมูลที่วัตถุส่งมาให้ • method_body คือคำสั่งต่างๆของภาษาจาวาที่อยู่ในเมธอด
ตัวอย่างโปรแกรม public class Student { public String id; public String name; publicdoublegpa; public void setID(String ID) { id = ID; } public void setName(String n) { name = n; } public void setGPA(double GPA) { gpa = GPA; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); } }
เมธอดที่ชื่อ main() • โปรแกรมจาวาประยุกต์ (Java Application) จะเริ่มต้นการทำงานในคลาสที่มีเมธอดที่ชื่อ main โดยมีรูปแบบของเมธอด ดังนี้ public static void main(String args[]) { [method_body] }
การประกาศวัตถุ • วัตถุทุกวัตถุในโปรแกรมภาษาจาวาจะต้องมีคำสั่งประกาศ เพื่อระบุว่าวัตถุนั้นเป็นวัตถุของคลาสใด โดยมีรูปแบบการประกาศ ดังนี้ [modifier] ClassName objectName; • modifier คือคีย์เวิร์ดที่อธิบายคุณสมบัติต่าง ๆ ของวัตถุ • ClassName คือชื่อของคลาสสำหรับวัตถุนั้น • objectName คือชื่อของวัตถุ • ตัวอย่าง Student s1;
การสร้างวัตถุ • คำสั่งที่ใช้ในการสร้างวัตถุจะมีรูปแบบ ดังนี้ objectName = new ClassName([arguments]); • objectName คือ ชื่อของวัตถุ • new คือ คีย์เวิร์ดของภาษาจาวาเพื่อใช้ในการสร้างวัตถุ • ClassName คือ ชื่อของคลาส • arguments คือ ค่าที่ต้องการส่งผ่านในการเรียก Constructor • ตัวอย่าง s1 = new Student();
การประกาศและสร้างวัตถุการประกาศและสร้างวัตถุ • คำสั่งในการประกาศและสร้างวัตถุสามารถที่จะรวมเป็นคำสั่งเดียวกัน โดยมีรูปแบบคำสั่ง ดังนี้ [modifier] ClassName objectName = new ClassName([arguments]); • ตัวอย่าง Student s1 = new Student();
การเรียกใช้สมาชิกของวัตถุการเรียกใช้สมาชิกของวัตถุ • การเรียกใช้คุณลักษณะของวัตถุมีรูปแบบ ดังนี้ objectName.attributeName; • การเรียกใช้เมธอดของวัตถุมีรูปแบบ ดังนี้ objectName.methodName([arguments]); • objectName คือชื่อของวัตถุที่สร้างขึ้น • methodName คือชื่อของเมธอดของวัตถุนั้น • arguments คือค่าที่ต้องการส่งผ่านไปให้กับเมธอดของวัตถุนั้น
การเรียกใช้สมาชิกของวัตถุการเรียกใช้สมาชิกของวัตถุ • ตัวอย่าง s1.setName("Thana");
ตัวอย่างโปรแกรม public class Sample { public static void main(String args[]) { Student s1 = new Student(); Student s2 = new Student(); Student s3 = new Student(); s1.setID("1234"); s1.setName("Thana"); s1.setGPA(3.25); s1.showDetails(); s2.setID("1122"); s2.setName("Somchai"); s2.setGPA(2.90); s2.showDetails(); s3.setID("2211"); s3.setName("Somsri"); s3.setGPA(3.00); s3.showDetails(); } }
คุณลักษณะเด่นของโปรแกรมวัตถุคุณลักษณะเด่นของโปรแกรมวัตถุ • การห่อหุ้ม (Encapsulation) • การสืบทอด (Inheritance) • การมีได้หลายรูปแบบ (Polymorphism)
การห่อหุ้ม • หมายถึงการจะเรียกใช้คุณลักษณะของวัตถุจะทำได้โดยการเรียกผ่านเมธอดเท่านั้น • หลักการของการห่อหุ้มคือการกำหนดให้คุณลักษณะของวัตถุมีคุณสมบัติเป็น private และกำหนดให้เมธอดมีคุณสมบัติเป็น public
ข้อดีของการห่อหุ้ม • การซ่อนเร้นข้อมูล (Information Hiding) • ทำให้วัตถุสามารถติดต่อกับวัตถุภายนอกผ่านเมธอดที่เป็นส่วนของ interface เท่านั้น • ความเป็นโมดูล (Modularity) • การพัฒนาโปรแกรมเชิงวัตถุจะสามารถกำหนดให้วัตถุแต่ละวัตถุมีความเป็นอิสระต่อกัน
ตัวอย่างโปรแกรม public class Student { private String id; private String name; private double gpa; public void setID(String ID) { id = ID; } public void setName(String n){ name = n; } public voidsetGPA(double GPA) { gpa = GPA; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); } }
การสืบทอด • หมายถึงการนิยามคลาสใหม่จากรูปแบบของคลาสที่มีอยู่แล้ว โดยคลาสใหม่สามารถที่จะนำคุณลักษณะและเมธอดของคลาสเดิมมาใช้ได้ • โดยในภาษาจาวาจะใช้คีย์เวิร์ด extends เพื่อระบุการสืบทอด • ตัวอย่าง
ตัวอย่างโปรแกรม public class PartTimeStudent extends Student { } public class FullTimeStudent extends Student { } public class GradStudent extends Student { private String thesisTitle; private String supervisor; public void setThesisTitle(String t) { thesisTitle = t; } public void setSupervisor(String s) { supervisor = s; } } public class PhDStudent extends GradStudent { public boolean passQualify; public boolean isPassQualify() { return passQualify; } }
การมีได้หลายรูปแบบ • หมายถึงการที่สามารถตอบสนองต่อข่าวสาร (เมธอด) เดียวกันด้วยวิธีการที่ต่างกัน และสามารถกำหนดวัตถุได้หลายรูปแบบ • ตัวอย่าง
ตัวอย่างโปรแกรม class Ball { public void throw() { } } class SoccerBall extends Ball { public void throw() { System.out.println("Throwing soccerball"); } } class TennisBall extends Ball { public void throw() { System.out.println("Throwing tennisball"); } } public class TestBall { public static void main(String args[]) { Ball b1 = new Ball(); SoccerBall b2 = new SoccerBall(); Ball b3 = new SoccerBall(); } }
Unified Modeling Language (UML) • เป็นภาษาที่สามารถนำรูปกราฟฟิกมาจำลองโปรแกรมเชิงวัตถุได้ • ประกอบด้วยสองส่วนคือ • ไดอะแกรมของคลาส (Class Diagram) • ไดอะแกรมของวัตถุ (Object Diagram)
ไดอะแกรมของคลาส • เป็นสัญลักษณ์ที่ใช้แสดงคลาส • ประกอบด้วยส่วนต่างๆ สามส่วนคือ • ชื่อของคลาส • คุณลักษณะภายในคลาส • เมธอดภายในคลาส
ไดอะแกรมของวัตถุ • ประกอบไปด้วยส่วนต่างๆสองส่วนคือ • ส่วนที่ระบุชื่อของวัตถุ • ส่วนที่ระบุค่าของคุณลักษณะภายในวัตถุ
ขั้นตอนการพัฒนาโปรแกรมขั้นตอนการพัฒนาโปรแกรม • ขั้นตอนการวิเคราะห์ (Analysis) • ขั้นตอนการออกแบบ (Design) • ขั้นตอนการเขียนโปรแกรม (Programming) • ขั้นตอนการทดสอบ (Testing) • ขั้นตอนการทำงาน (Operation)