[Java] บทที่ 5 การเขียนโปรแกรมเชิงวัตถุ

5.1 การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) คือการมองเป็นวัตถุแทนกระบวนงาน จัดการข้อมูลที่ควบคุมการเข้าถึงเฉพาะที่ได้รับอนุญาต มีหลักการ 4 ข้อ ได้แก่

  1. Encapsulation
  2. Inheritance 
  3. Polymorphism 
5.2 Encapsulation 

5.2.1 การสร้าง class และสมาชิก

Class คือ แบบจำลอง/ต้นแบบกำหนดคุณสมบัติ ประกอบด้วย สมาชิกข้อมูล และสมาชิกฟังก์ชัน

Ex 5.1 Circle

Circle.java

CircleApp.java

5.2.2 คุณลักษณะและการเข้าถึง

ตัวอย่างก่อนหน้า ไม่ได้มีการกำหนดคุณลักษณะการเข้าถึง (modifier) ให้คลาสวงกลม โดยดีฟอลต์แล้ว จะเป็น public เข้าถึงได้จากทุกคลาสในแพ็คเกจเดียวกัน 

โดยปกติแล้ว เค้ามักจะกำหนดให้ class และ method เป็น public ส่วน attribute เป็น private เพื่อให้มีการปกป้องข้อมูลตามหลัก information hiding 

การจะเข้าถึง จึงมักให้เข้าถึงผ่านเมธอด get/set ที่สร้างขึ้นแทน ซึ่งสร้างอัตโนมัติได้โดยไปที่เมนู Source > Insert code > Getter and Setter ติ๊กถูกหน้า attribute ที่ต้องการ แล้ว OK

Ex 5.2 Rectangle 

Rectangle.java

RectangleApp.java

5.2.3 Constructor และ Finalize

Constructor คือ เมธอดพิเศษที่กำหนดค่าเริ่มต้นให้สมาชิก มีชื่อเดียวกับคลาส

Finalize คือ เมธอดพิเศษที่จะถูกเรียกเสมอ เมื่อมีการทำลายออบเจ็คเพื่อคืนพื้นที่หน่วยความจำด้วย Garbage Collection 

ปล.เมธอด finalize เป็น modifier แบบ protected จึงมีได้แค่เมธอดเดียว จึง overload ไม่ได้

Ex 5.3 Box

Box.java

BoxApp.java

5.2.4 การ Overload Constructor

Overload คือการที่เมธอดชื่อเดียวกัน แต่พารามิเตอร์ต่างกัน

ในคลาสเดียวกันนั้น สามารถเรียกใช้งาน constructor ที่ overload ได้ แต่นำชื่อ constructor มาเรียกไม่ได้ จึงใช้คีย์เวิร์ด this เป็นตัวแทน

Ex 5.4 Clock

Clock.java

ClockApp.java

5.3 Inheritance 

คือ การที่คลาสหนึ่งสามารถขอคุณสมบัติอีกคลาสหนึ่งมาใช้เป็นของตัวเองได้ โดยไม่ต้องพิมพ์สร้างใหม่ แบ่งเป็น Super class และ Subclass ใช้คีย์เวิร์ด extends 

attribute โดยปกติก็ยังควรจะมีคุณสมบัติซ่อนการมองเห็นแบบเดิม คือเป็น private แต่ถ้าเป็น private ตัว subclass จะมองไม่เห็น เลยมักกำหนดให้เป็น protected แทน ตัว attribute ที่สืบทอดมาจากของคลาสแม่ จะใช้คีย์เวิร์ด super() ตาม constructor ที่เลือกสืบทอดมา

Ex 5.5 Person and Student 

Person.java

Student.java

5.4 Polymorphism 

คือ ชุดการทำงานเดียว สามารถทำงานได้หลายรูปแบบ (override และเลือกมาใช้ตามเหมาะสม (overload)

5.4.1 การ Override Method

Override คือ การที่เมธอดชื่อเดียวกัน แต่รายละเอียดข้างในต่างกัน 

ไม่สามารถใช้กับเมธอด static 

ใช้ คีย์เวิร์ด @Override

ชื่อ ซิกเนเจอร์ และประเภทค่าส่งคืนกลับต้องเหมือนกัน

เมธอดของคลาสแม่ ที่ถูก override ด้วยเมธอดของคลาสลูก จะไม่สามารถเรียกมาใช้งานได้โดยตรง แต่ต้องเรียกผ่านคีย์เวิร์ด super()

Ex 5.6 Person and Employee 

Person.java

Employee.java

EmployeeApp.java






Latest
Previous
Next Post »