จุดประสงค์เชิงพฤติกรรม (Behavioral Objectives) หลังจากศึกษาจบบทเรียนนี้แล้ว
ผู้เรียนจะมีความสามารถดังนี้
1.บอกความหมายอินเตอร์เฟส
2.ระบุการสร้างและกำหนดอินเตอร์เฟส
3.ยกตัวอย่างการสร้างอินเตอร์เฟส
อินเตอร์เฟส (Interface)
อินเตอร์เฟส (Interface) คือคีย์คำสั่งที่ใช้ระบุการถ่ายทอดคุณสมบัติ(Interface) หรือการเป็นไปได้หลายรูปแบบหรือการพ้องรูป (Polymorhism) ที่เกิดจากการคลาสย่อยเป็๋นคลาสของคลาสแม่หลายคลาส ซึ่งจะต้องระบุการเรียกใช้ให้ถูกต้องว่าเป็นของคลาสแม่ใดอินเตอร์เฟสมีการทำงานคล้ายกับ Abstract คลาสดังนี้
>> การสร้างอินเตอร์เฟสให้ใช้คีย์คำสั่ง interface แทนที่ class โดยใช้ร่วมกับคีย์คำสั่ง implements เพืื่อระบุคลาสแม่ที่ต้องการสืบทอดมา และสามารถ implements ได้มากกว่าหนึ่งอินเตอร์เฟส
>> คลาสที่ implements อินเตอร์เฟสจะต้องทำการ implements ทุกๆเมธอดที่มีอยู่ในอินเตอร์เฟสนั้น
>> อินเตอร์เฟสสามารถสร้างตัวแปรไว้ภายในได้ แต่มักจะอยู่ในรูปของตัวแปรแบบ Static Final
>> อืนเตอร์เฟสไม่สามารถสร้างออปเจกต์ (lnstantiate) จากอินเตอร์เฟสได้ แต่สามารถประกาศเป็นชนิดของตัวแปรได้
>> อินเตอร์เฟส จะไม่มีคอนสตรักเตอร์ (Constructor) ภายในตัวอินเตอร์เฟส
อินเตอร์เฟส (Interface)
อินเตอร์เฟส (Interface) คือคีย์คำสั่งที่ใช้ระบุการถ่ายทอดคุณสมบัติ(Interface) หรือการเป็นไปได้หลายรูปแบบหรือการพ้องรูป (Polymorhism) ที่เกิดจากการคลาสย่อยเป็๋นคลาสของคลาสแม่หลายคลาส ซึ่งจะต้องระบุการเรียกใช้ให้ถูกต้องว่าเป็นของคลาสแม่ใดอินเตอร์เฟสมีการทำงานคล้ายกับ Abstract คลาสดังนี้
>> การสร้างอินเตอร์เฟสให้ใช้คีย์คำสั่ง interface แทนที่ class โดยใช้ร่วมกับคีย์คำสั่ง implements เพืื่อระบุคลาสแม่ที่ต้องการสืบทอดมา และสามารถ implements ได้มากกว่าหนึ่งอินเตอร์เฟส
>> คลาสที่ implements อินเตอร์เฟสจะต้องทำการ implements ทุกๆเมธอดที่มีอยู่ในอินเตอร์เฟสนั้น
>> อินเตอร์เฟสสามารถสร้างตัวแปรไว้ภายในได้ แต่มักจะอยู่ในรูปของตัวแปรแบบ Static Final
>> อืนเตอร์เฟสไม่สามารถสร้างออปเจกต์ (lnstantiate) จากอินเตอร์เฟสได้ แต่สามารถประกาศเป็นชนิดของตัวแปรได้
>> อินเตอร์เฟส จะไม่มีคอนสตรักเตอร์ (Constructor) ภายในตัวอินเตอร์เฟส
การสร้างและกำหนดอินเตอร์เฟส
เราสามารถสร้างอินเตอร์เฟสได้จากอีคลิปส์
แต่ก่อนที่จะสร้างจะต้องพิจารณาหลักการก่อนเพื่อให้ตรงตามจุดประสงค์และแก้ปัญหาในบางกรณี
โดยให้พิจารณาความสัมพันธ์ของคลาสที่เป็นอินเตอร์เฟสตามสัญลักษณ์
รูปที่ 5.1 แสดงสัญลักษณ์ความสัมพันธ์ของคลาส
จากรูปที่ปรากฏข้างต้นเราจะพบว่า
มีความกำกวมระหว่างเมธอดที่จะเรียกใช้งาน เนื่องจากคลาสแม่นั้นมีคลาสลูกสังกัดมากกว่าหนึ่งคลาส
หากมีการเรียกใช้เมธอดในคลาสแม่จะทำให้ผลลัพธ์ไม่ถูกต้องตามความเป็นจริงเพราะ Bus และ Boat เป็นยานพาหนะเหมือนกันแต่ใช้งานต่างกัน
จาวาจึงแก้ปัยหาโดยการบังคับให้ต้องทำการโอเวอร์ไรด์เมธอดที่มีตลาสแม่ทั้งหมด
(สามารถ implements คลาสแม่ได้มากกว่าหนึ่ง)
ในที่นี้คลาสแม่มีเพียงคลาสเดียวคลาสลูกจึงต้องมาสร้างเมธอดเหมือนกับคลาสแม่
แต่มีรายละเอียดแตกต่างกันตามหลักการโอเวอร์ไรด์ที่กล่าวมาในบทที่ 4 เราสามารถสร้างอินเตอร์เฟสได้ดังนี้
ตัวอย่างที่ 5.1
ตัวอย่างที่ 5.1
ตัวอย่างที่ 5.2
เมื่อสร้างคลาส Boat จะถูกบังคับให้สร้างเมธอดที่มีชื่อเดียวกับ
Interface Transport ดังนี้
ตัวอย่างที่ 5.3
ในบางครั้งเราต้องการใช้งานในลักษณะที่ต่างออกไปจากโครงสร้างความสัมพันธ์ของคลาสในความเป็นจริงแล้วออปเจกต์สามารถที่จะระบุความสัมพันธ์ได้มากกว่าหนึ่งคลาสแม่
แต่จะต้องการเรียกใช้ที่แตกต่างออกไปจากเดิม เพื่อเรียกใช้งานได้มากกว่าเดิม
หรือมีความสามารถมากขึ้นโดยจาวาได้เตรียมวิธีการใช้งานให้แล้ว
โดยเราสามารถทำการประกาศอินเตอร์เฟสเพื่อเรียกใช้คุณสมบัติ (attribute) ค่าคงที่ (method)
ภายในอินเตอร์เฟสได้ดังตัวอย่างข้างต้น
ตัวอย่างที่ 5.4
ตัวอย่างที่ 5.4
ผลการรันโปรแกรมตัวอย่างที่ 5.4
จากตัวอย่างเราไม่สามารถสร้างตัวแปรคลาสหรือออปเจกต์จากอินเตอร์เฟส
ซึ่งถือเป็นคลาสแม่ของคลาส Bus ได้
แต่หากเราแปลงไปเป็นคลาสตามปกติตามหลักการพ้องรูป
เราก็สามารถใช้เมธอดเพื่อโอเวอร์ไรด์ได้ทันที
>> การอ้างถึงค่าตัวแปรอินเตอร์เฟส
>> อินเตอร์เฟสกับการสืบทอดคุณสมบัติ
หากมีการสืบทอดมากกว่าสองอินเตอร์เฟสดังโครงสร้างนี้ให้สังเกตว่าจะเกิดอะไรขึ้น
>> การอ้างถึงค่าตัวแปรอินเตอร์เฟส
>> อินเตอร์เฟสกับการสืบทอดคุณสมบัติ
หากมีการสืบทอดมากกว่าสองอินเตอร์เฟสดังโครงสร้างนี้ให้สังเกตว่าจะเกิดอะไรขึ้น
รูปที่ 5.2 ไดอะแกรมแสดงลักษณะของอินเตอร์เฟส
จากโครงสร้างที่ปรากฎจะพบว่า
คลาสย่อยแต่ละตัวทำการ implements
จากอินเตอร์เฟสสองตัว คือ TravelType และ Transport
จาวาจะต้องบังคับให้โอเวอร์ไรด์เมธอดทั้งหมดที่ทำการ implements
และหลังจากนั้นจึงจะสามารถทำการสร้างออปเจกต์ได้ในลักษณะเดียวกับที่กล่าวมาก่อนหน้านี้
ตัวอย่างที่ 5.5
ตัวอย่างที่ 5.5
ผลการรันโปรแกรมตัวอย่างที่
5.5
ไม่มีความคิดเห็น:
แสดงความคิดเห็น