บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ (Introduction to Object Oriented Programming)
โปรแกรมเชิงวัตถุ (Object Oriented Language: OOP) มองส่วนต่างๆ เป็นวัตถุหรือออบเจ็กต์ที่ไม่ขึ้นต่อกันแต่มีการทำงานร่วมกัน แต่ละออบเจ็กต์ คือขอบเขตของงานส่วนย่อยที่เป็นอิสระต่อกัน ไม่จำเป็นต้องเป็นสิ่งที่จับต้องได้แต่ขอให้มีอยู่จริง เช่น เวลาเป็นสิ่งที่จับต้องไม่ได้ แต่มีอยู่จริง
คุณสมบัติหลักของโปรแกรมเชิงวัตถุ นำกลับมาใช้ใหม่ได้ (Reuse) ประหยัดเวลาในการพัฒนา (Rapid Delivery) ใช้งานง่าย (User Friendly) ดูแลรักษาได้ง่าย ( More Maintainable) มีคุณภาพสูง (Greater Quality System)
ข้อแตกต่างจากโปรแกรมแบบมีโครงสร้าง ภาษาแบบมีโครงสร้าง ภาษาเชิงวัตถุ Top-down Design เน้นขั้นตอนกระบวนการ ใช้ข้อมูลร่วมกัน แยกข้อมูลออกจากฟังก์ชัน Bottom-up Design เน้นการมองเป็นวัตถุ ซ่อนรายละเอียดข้อมูล (Information hiding) ห่อหุ้มข้อมูล (Encapsulation)
คลาส (Class) และออบเจ็กต์ (Object) (1)
คลาส (Class) และออบเจ็กต์ (Object) คลาส คือ สิ่งที่ใช้อธิบายลักษณะและความสามารถของออบเจ็กต์ เปรียบได้กับแม่แบบของออบเจ็กต์ ออบเจ็กต์ คือ สิ่งต่าง ๆ รอบตัว ซึ่งมีคุณลักษณะ (Attribute) และความสามารถในการทำงาน (Method) ตัวอย่างออบเจ็กต์ เช่น คน, รถยนต์, เครื่องคอมพิวเตอร์ เป็นต้น
ตัวอย่างคลาส ให้ภาษีเป็นคลาส คุณลักษณะของภาษี คือ อัตราภาษี, จำนวนเงินภาษีที่ต้องจ่าย ส่วนการทำงานคือ การคำนวณจำนวนเงินภาษีที่ต้องจ่าย
ขั้นตอนการใช้งานคลาส การประกาศคลาส การประกาศแอตทริบิวต์ การประกาศเมธอด การประกาศออบเจ็กต์ การเข้าถึงสมาชิกของคลาส
การประกาศคลาส [modifier] class ClassName { [AttributeName] [MethodName] } โดยที่ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการเข้าถึงคลาส ClassName เป็นชื่อคลาส AttributeName เป็นส่วนของการประกาศแอตทริบิวต์ MethodName เป็นส่วนของการประกาศเมธอด
การประกาศแอตทริบิวต์ [modifier] dataType AttributeName; โดยที่ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการเข้าถึงแอตทริบิวต์ dataType เป็นชนิดข้อมูลของแอตทริบิวต์ AttributeName เป็นชื่อแอตทริบิวต์
การประกาศเมธอด [modifier] return_type Methodname ([parameter]) { [method_body] return varValue; } โดยที่ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการเข้าถึงเมธอด return_type เป็นชนิดของข้อมูลที่เมธอดจะส่งค่ากลับ ในกรณีที่ไม่มีการส่งค่ากลับ ให้กำหนดเป็น void MethodName เป็นชื่อเมธอด parameter เป็นตัวแปรที่ใช้ในการรับข้อมูล method_body เป็นชุดคำสั่งการทำงานของเมธอด varValue เป็นค่าที่ต้องการส่งค่ากลับ ในกรณีที่กำหนดให้ return_type เป็น void จะไม่มีคำสั่ง return
การประกาศออบเจ็กต์ ClassName ObjectName; และสามารถสร้างออบเจ็กต์ได้ตามรูปแบบดังนี้ ObjectName = new ClassName(); หรือ ClassName ObjectName = new ClassName(); โดยที่ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการเข้าถึงออบเจ็กต์ ClassName เป็นชื่อของคลาสที่ใช้สร้างออบเจ็กต์นั้น ObjectName เป็นชื่อออบเจ็กต์ที่ประกาศใช้งาน
การเข้าถึงสมาชิกของคลาส ObjectName.AttributeName; โดยที่ ObjectName เป็นชื่อออบเจ็กต์ AttributeName เป็นชื่อแอตทริบิวต์ที่ต้องการใช้งาน ObjectName.MethodName ([argument]); หรือ dataType MethodValue = ObjectName.MethodName ([argument]); MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน argument เป็นค่าที่ต้องการส่งผ่านไปให้เมธอดที่ต้องการใช้งาน dataType เป็นชนิดข้อมูลของเมธอดที่มีการคืนค่า MethodValue เป็นตัวแปรที่ใช้เก็บค่าที่ได้จากการคืนค่าของเมธอด
โปรแกรมที่ 1 (1) จงเขียนโปรแกรมรับข้อมูลราคาสินค้าคำนวณราคารวม แสดงผลราคาสินค้าและราคารวมทางจอภาพ (กำหนดให้ราคารวม = ราคาสินค้า + ภาษี 7%)
โปรแกรมที่ 1 (2) import java.util.Scanner; public class ex1_000 { public static void main(String[] args) { System.out.print("Enter product price >>> " ); Scanner scan = new Scanner(System.in); double productPrice = scan.nextDouble(); double totalPrice = productPrice + (0.07 * productPrice); System.out.println("product price = " + productPrice + " baht"); System.out.println("total price = " + totalPrice + " baht"); }
โปรแกรมที่ 2 (1) จงเขียนโปรแกรม รับข้อมูลราคาสินค้า เรียกใช้เมธอดคำนวณราคารวม double calProduct(double productPrice) จากคลาส product แสดงผลราคาสินค้าและราคารวมทางจอภาพ (กำหนดให้ราคารวม = ราคาสินค้า + ภาษี 7%)
โปรแกรมที่ 2 (2) import java.util.Scanner; class product { public double calProduct(double productPrice) { double totalPrice = 0.07 * productPrice; return totalPrice; } public class ex2_000 { public static void main(String[] args) { System.out.print("Enter product price >>> " ); Scanner scan = new Scanner(System.in); double productPrice = scan.nextDouble(); product p = new product(); double totalPrice = p.calProduct(productPrice); System.out.println("product price = " + productPrice + " baht"); System.out.println("total price = " + totalPrice + " baht");
รูปแบบการเรียกใช้งานเมธอด เมธอดไม่มีการรับพารามิเตอร์และไม่มีการคืนค่า เมธอดมีการรับพารามิเตอร์แต่ไม่มีการคืนค่า เมธอดไม่มีการรับพารามิเตอร์แต่มีการคืนค่า เมธอดมีการรับพารามิเตอร์และมีการคืนค่า
เมธอดไม่มีการรับพารามิเตอร์และไม่มีการคืนค่า มีรูปแบบการเรียกใช้ดังนี้ ObjectName.MethodName (); โดยที่ ObjectName เป็นชื่อออบเจ็กต์ MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน
เมธอดมีการรับพารามิเตอร์แต่ไม่มีการคืนค่า มีรูปแบบการเรียกใช้ดังนี้ ObjectName.MethodName ([argument]); โดยที่ ObjectName เป็นชื่อออบเจ็กต์ MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน argument เป็นค่าข้อมูลที่ต้องการส่งผ่านไปให้เมธอด
เมธอดไม่มีการรับพารามิเตอร์แต่มีการคืนค่า มีรูปแบบการเรียกใช้ดังนี้ dataType MethodValue = ObjectName.MethodName (); โดยที่ ObjectName เป็นชื่อออบเจ็กต์ MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน dataType เป็นชนิดข้อมูลของเมธอดที่มีการคืนค่า MethodValue เป็นตัวแปรที่ใช้เก็บค่าที่ได้จากการคืนค่าของเมธอด
เมธอดมีการรับพารามิเตอร์และมีการคืนค่า มีรูปแบบการเรียกใช้ดังนี้ dataType MethodValue = ObjectName.MethodName ([argument]); โดยที่ ObjectName เป็นชื่อออบเจ็กต์ MethodName เป็นชื่อเมธอดที่ต้องการใช้งาน argument เป็นค่าข้อมูลที่ต้องการส่งผ่านไปให้เมธอด dataType เป็นชนิดข้อมูลของเมธอดที่มีการคืนค่า MethodValue เป็นตัวแปรที่ใช้เก็บค่าที่ได้จากการคืนค่าของเมธอด