งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

03/04/58เขียนโปรแกรม Java เบื้องต้น1 การสืบทอด (inheritance)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "03/04/58เขียนโปรแกรม Java เบื้องต้น1 การสืบทอด (inheritance)"— ใบสำเนางานนำเสนอ:

1 03/04/58เขียนโปรแกรม Java เบื้องต้น1 การสืบทอด (inheritance)

2 03/04/58เขียนโปรแกรม Java เบื้องต้น2 หัวข้อ  การสืบทอด  การเข้าใช้แบบ protected  พอลิมอร์ฟิซึม  การสืบทอดในภาษาจาวา  คลาส Object

3 03/04/58เขียนโปรแกรม Java เบื้องต้น3 การสืบทอด

4 03/04/58เขียนโปรแกรม Java เบื้องต้น4 สัตว์ต่างๆ  คลาสแมว แอตทริบิวต์ ได้แก่ อายุ และ ความหิว เมธอด ได้แก่ กิน() และ นอน()  คลาสปลา แอตทริบิวต์ ได้แก่ อายุ ความหิว และชื่อ (เช่น ปลานีโม) เมธอด ได้แก่ กิน() และ นอน()  คลาสลิง แอตทริบิวต์ ได้แก่ อายุ และ ความหิว เมธอดได้แก่ กิน() นอน() และเก็บลูกมะพร้าว()

5 03/04/58เขียนโปรแกรม Java เบื้องต้น5 แอททริบิวท์และเมธอดที่คล้ายกัน

6 03/04/58เขียนโปรแกรม Java เบื้องต้น6 การสืบทอด  แก้ปัญหาการเขียนโปรแกรมซ้ำซ้อนกันได้  เมธอดหรือแอตทริบิวต์ที่คลาสต่างๆ มีร่วมกันจะถูก นำไปใส่ในคลาสแม่  คลาสลูกจะสืบทอดเมธอดและแอตทริบิวต์คลาสแม่ โดยอัตโนมัติ

7 03/04/58เขียนโปรแกรม Java เบื้องต้น7 การทดสอบการสืบทอด  แต่งประโยคโดยใช้คำว่า “เป็น” เข้าช่วย ลิงเป็นสัตว์ สัตว์เป็นลิง ลิงไซบอร์ก เป็น ลิงและหุ่นยนต์ รถยนต์เป็นพาหนะ เครื่องยนต์เป็นรถยนต์

8 03/04/58เขียนโปรแกรม Java เบื้องต้น8 คลาสสัตว์  แมว ปลา และลิง เป็นสัตว์ สัตว์ทุกตัวสามารถกิน และนอนได้ เราจึงนำแอตทริบิวต์และเมธอดที่สัตว์ ต่างๆมีร่วมกัน ไปใส่ในคลาสสัตว์ class สัตว์ { // แอตทริบิวต์ อายุ; ความหิว; // เมธอด กิน() {… } นอน() {… } }

9 03/04/58เขียนโปรแกรม Java เบื้องต้น9 ทดสอบคลาส  ในแต่ละคู่ต่อไปนี้ให้เลือกว่าคลาสใดเป็นแม่ของอีก คลาส ที่สามารถสืบทอดกันได้ ผู้จัดการ พนักงาน รูปสี่เหลี่ยม รูปหลายเหลี่ยม บานาน่าโบ้ต พาหนะ ซีพียู คอมพิวเตอร์ เครื่องเขียน ปากกา ดินสอ ปากกา นก เพนกวิน

10 03/04/58เขียนโปรแกรม Java เบื้องต้น10 การสืบทอด  รูปแบบ class คลาสลูก extends คลาสแม่  ตัวอย่าง class แมว extends สัตว์ { } class ปลา extends สัตว์ { } class ลิง extends สัตว์ { }

11 03/04/58เขียนโปรแกรม Java เบื้องต้น11 วัตถุในคลาสลูกสามารถทำงาน ตามเมธอดของคลาสแม่ได้ ลิง ล = new ลิง(); ล.กิน();

12 03/04/58เขียนโปรแกรม Java เบื้องต้น12 เพิ่มเมธอดในคลาสลูก class ลิง extends สัตว์ { // เมธอดที่เพิ่มเข้ามา เก็บลูกมะพร้าว() { … } } ลิง ล = new ลิง(); ล.เก็บลูกมะพร้าว(); สัตว์ ส = new สัตว์(); ส.เก็บลูกมะพร้าว();

13 03/04/58เขียนโปรแกรม Java เบื้องต้น13 เพิ่มแอททริบิวท์ในคลาสลูก class ปลา extends สัตว์ { // แอตทริบิวต์ที่เพิ่มเข้ามา ชื่อ; }

14 03/04/58เขียนโปรแกรม Java เบื้องต้น14 ทดสอบคลาส  วาดลำดับชั้นของการสืบทอดคลาสต่อไปนี้ นักศึกษา คน อาจารย์ พนักงาน ศาสตราจารย์ นักศึกษาฝึกสอน

15 03/04/58เขียนโปรแกรม Java เบื้องต้น15 เมธอดที่มีชื่อซ้ำกับเมธอดในคลาสแม่  ถึงแม้การ กิน() นอน() เป็นความสามารถของสัตว์ ทุกชนิดทำได้เหมือนกัน แต่ไม่ได้หมายความว่า สัตว์ทุกชนิดจะมีวิธีการ กิน() นอน() ในแบบ เดียวกัน เช่น ปลานอนโดยไม่หลับตา ในขณะที่ สัตว์ทั่วไปนอนหลับตา เป็นต้น  การเขียนเมธอดที่มีชื่อและพารามิเตอร์เหมือนกัน กับเมธอดที่มีอยู่แล้วในคลาสแม่ เรียกว่า “การโอ เวอร์ไรด์(override)

16 03/04/58เขียนโปรแกรม Java เบื้องต้น16 การโอเวอร์ไรด์เมธอด class ปลา extends สัตว์ { // แอตทริบิวต์ ชื่อ; // เมธอด นอน() { // วิธีการนอนของปลา … }

17 03/04/58เขียนโปรแกรม Java เบื้องต้น17 การโอเวอร์ไรด์เมธอด ปลา ป = new ปลา(); ป.นอน();  เช่น ถ้าสั่งให้ปลานอน ปลาจะเข้าไปทำงานตาม คำสั่งในเมธอด นอน() ในคลาสปลา ไม่ใช่เมธอด นอน() ในคลาสแม่

18 03/04/58เขียนโปรแกรม Java เบื้องต้น18 พอลิมอร์ฟิซึม (Polymorphism)

19 03/04/58เขียนโปรแกรม Java เบื้องต้น19 ความหมาย  poly แปลว่าหลายหรือมาก  morphism นั้นมาจากคำว่า morph ซึ่งแปลว่า รูปร่าง  รวมกันแล้วหมายถึงความสามารถที่สิ่งหนึ่งจะมีได้ หลายรูปร่าง ซึ่งเมื่อใช้คำนี้กับการโปรแกรมเชิงวัตถุ ก็จะหมายถึงการที่คำสั่งแบบเดียวกันสามารถถูก แปลได้หลายแบบ

20 03/04/58เขียนโปรแกรม Java เบื้องต้น20 พอลิมอร์ฟิซึม

21 03/04/58เขียนโปรแกรม Java เบื้องต้น21 พอลิมอร์ฟิซึมกับการนำกลับมาใช้ใหม่  พอลิมอร์ฟิซึมสนับสนุน การนำกลับมาใช้ใหม่ (reuse)  ถ้าเราได้เขียนโปรแกรมที่ใช้งานได้กับสัตว์ โปรแกรมของเราย่อมใช้ได้กับแมว ปลา และลิง นอกจากนั้นถ้ามีคนสร้างคลาสอีกัวน่าขึ้นมาใหม่ โปรแกรมที่เราเขียนก็สามารถใช้ได้กับคลาสอีกัวน่า เช่นกัน

22 03/04/58เขียนโปรแกรม Java เบื้องต้น22 พอลิมอร์ฟิซึม public class TestPolymorphism { public static void main(String[] args) { Shape shape; shape = new Rectangle(10, 20); System.out.println(shape.getArea()); shape = new Circle(10); System.out.println(shape.getArea()); }

23 03/04/58เขียนโปรแกรม Java เบื้องต้น23 การนำมาใช้อีก public class ShapeArray { public static double sumArea(Shape[] shapes) { double sum = 0; for( Shape s : shapes) { sum += s.getArea(); } return sum; }

24 03/04/58เขียนโปรแกรม Java เบื้องต้น24 การนำมาใช้อีก Shape[] s = new Shape[3]; s[0] = new Triangle(10); s[1] = new Rectangle(10,20); s[2] = new Pentagon(20); double d = ShapeArray.sumArea(s);

25 03/04/58เขียนโปรแกรม Java เบื้องต้น25 การสืบทอดในภาษาจาวา

26 03/04/58เขียนโปรแกรม Java เบื้องต้น26 คลาสรูปร่างและคลาสที่สืบทอด

27 03/04/58เขียนโปรแกรม Java เบื้องต้น27 คลาสรูปร่าง  รูปร่างเป็นรูปที่อยู่ในระนาบสองมิติ  มีพื้นที่ เมธอด getArea() ใช้คำนวณหาพื้นที่ของรูปร่าง  มีสี public enum Color { Red, Green, Blue } เมธอด getColor()

28 03/04/58เขียนโปรแกรม Java เบื้องต้น28 คลาสสี่เหลี่ยมผืนผ้า class Rectangle extends Shape {... public double getArea() { return width * height; }

29 03/04/58เขียนโปรแกรม Java เบื้องต้น29 คลาส Object

30 03/04/58เขียนโปรแกรม Java เบื้องต้น30 เมธอด toString() public class Rectangle extends Shape {... public String toString() { String str = "Rectangle"; str += " color=" + getColor(); str += " width=" + width; str += " height=" + height; str += " area=" + getArea(); return str; }

31 03/04/58เขียนโปรแกรม Java เบื้องต้น31 เมธอด toString()  เป็นเมธอดที่ถูกโอเวอร์ไรด์จากคลาส Object

32 03/04/58เขียนโปรแกรม Java เบื้องต้น32 การห้ามโอเวอร์ไรด์

33 03/04/58เขียนโปรแกรม Java เบื้องต้น33 ไฟนอลคลาส  ไม่สามารถถูกสืบทอดได้ public final class Square

34 03/04/58เขียนโปรแกรม Java เบื้องต้น34 ไฟนอลเมธอด  ไม่สามารถถูกโอเวอร์ไรด์ได้ public class Shape { public final Color getColor() { return color; }... }

35 03/04/58เขียนโปรแกรม Java เบื้องต้น35 การเข้าใช้แบบ protected

36 03/04/58เขียนโปรแกรม Java เบื้องต้น36 การเข้าใช้แบบ protected  คลาสลูกสามารถใช้เมธอดและแอททริบิวท์ที่มีการ เข้าใช้แบบ protected ได้  คลาสที่อยู่ในแพ็คเกจเดียวกันก็สามารถใช้เมธอด และแอททริบิวท์ที่มีการเข้าใช้แบบ protected ได้  การเข้าใช้แบบนี้มีความเข้มงวดน้อยกว่าแบบ private ซึ่งห้ามคลาสอื่นใดเข้าใช้ แต่ก็อิสระน้อย กว่าแบบ public ที่ใครๆก็สามารถเข้าใช้ได้

37 03/04/58เขียนโปรแกรม Java เบื้องต้น37 การเข้าใช้แบบ Protected  คลาสลูกสามารถเรียกใช้แอทริบิวส์หรือเมธอดที่มี การเข้าใช้แบบ protected ได้ เช่น ถ้าเรา กำหนดให้แอทริบิวส์ “อายุ” มีการเข้าใช้แบบ protected แล้ว เมธอด ทำให้แก่() ในคลาสลิงก็ สามารถเพิ่มอายุได้

38 03/04/58เขียนโปรแกรม Java เบื้องต้น38 การเข้าใช้แบบ Protected Class สัตว์ { protected อายุ; … } Class ลิง extends สัตว์ { ทำให้แก่(){ อายุ +=10; } สามารถเข้าใช้ แอทริบิวส์ใน คลาสแม่ได้

39 03/04/58เขียนโปรแกรม Java เบื้องต้น39 คลาสวงกลม public class Circle extends Shape { protected double radius; public Circle(double r) { radius = r; } public double getRadius() { return radius; }... }

40 03/04/58เขียนโปรแกรม Java เบื้องต้น40 คำนวณพื้นที่ของวงแหวน public class Ring1 extends Circle { public double getArea() { double outerArea = Math.PI * radius * radius; double innerArea = Math.PI * innerRadius * innerRadius; return outerArea - innerArea; }... }

41 03/04/58เขียนโปรแกรม Java เบื้องต้น41 แอบสแตรกท์คลาส (abstract class)

42 03/04/58เขียนโปรแกรม Java เบื้องต้น42 คลาสที่ประกาศขึ้นมาลอยๆ (Abstract Class)  เมธอด getArea() ในคลาส Shape ไม่ควรส่งค่าศูนย์หรือค่า ใดๆกลับมา ทั้งนี้เพราะว่าเราไม่ทราบวิธีคำนวณหาพื้นที่ของ วัตถุ Shape public abstract double getArea();  เมธอดที่ถูกประกาศขึ้นมาลอยๆ (abstract) นี้ต้องอยู่ใน คลาสที่เป็น abstract ด้วยเช่นกัน คลาส Shape เขียนใหม่ ได้ดังนี้ public abstract class Shape { public abstract double getArea();... }

43 03/04/58เขียนโปรแกรม Java เบื้องต้น43 การใช้งาน abstract class  ไม่สามารถสร้างวัตถุในคลาสนี้ได้ Shape s = new Shape();  แต่อ้างถึงวัตถุในคลาสลูกได้ Shape s; s = new Rectangle(3,2); s = new Square(5);

44 03/04/58เขียนโปรแกรม Java เบื้องต้น44 ข้อดีข้อเสียของการสืบทอด

45 03/04/58เขียนโปรแกรม Java เบื้องต้น45 ข้อดีของการสืบทอด  การนำกลับมาใช้ใหม่ ถ้าเราต้องการสร้างคลาสที่มีความสามารถคล้ายๆกับคลาสที่มีอยู่ แล้ว เราอาจจะใช้การสืบทอดแทนที่จะเขียนขึ้นมาใหม่หมด  ความเป็นมาตรฐานเดียวกัน คลาสพื้นฐานเป็นการกำหนดโครงแบบในการระบุความสามารถของ วัตถุในคลาสลูก  เข้าใจสาระสำคัญได้ง่าย

46 03/04/58เขียนโปรแกรม Java เบื้องต้น46 ข้อเสียของการสืบทอด   โปรแกรมทำงานช้าลง มีค่าใช้จ่าย (overhead) ในค้นหาและเรียกใช้เมธอดของคลาสที่สืบ ทอด แต่ค่าใช้จ่ายดังกล่าวถือว่าน้อยมากเมื่อเทียบกับประโยชน์ที่ได้รับ จากการสืบทอด  โปรแกรมมีขนาดใหญ่ขึ้น แต่หน่วยความจำราคาไม่แพง  ความซับซ้อนเพิ่มขึ้น ผู้ใช้ต้องหาตามคลาสต่างๆ ที่อยู่ในผังการสืบทอดจนกว่าจะพบ คลาสที่อิมพลีเมนต์เมธอดนั้น ปัญหาที่กล่าวถึงนี้มีชื่อว่าปัญหาลูกดิ่ง (Yo-yo problem)

47 03/04/58เขียนโปรแกรม Java เบื้องต้น47 สรุป

48 03/04/58เขียนโปรแกรม Java เบื้องต้น48 สรุป  การสืบทอดในภาษาจาวาใช้แนวความคิดเดียวกับการ ถ่ายทอดคุณลักษณะจากพ่อและแม่  คลาสลูกสืบทอดความสามารถจากคลาสแม่  การทดสอบการสืบทอดทำได้โดยการแต่งประโยคที่มีคำว่า เป็น  การสืบทอดทำให้เกิดการนำไปใช้ใหม่ได้  คลาสลูกสามารถใช้เมธอดในคลาสแม่ได้ ถ้าเมธอดนั้นเป็น public หรือ protected

49 03/04/58เขียนโปรแกรม Java เบื้องต้น49 สรุป  เมธอดที่ใช้กับคลาสแม่ได้ ก็สามารถใช้กับคลาสลูกได้  คลาสลูกสามารถโอเวอร์ไรด์เมธอดในคลาสแม่ได้  พอลิมอร์ฟิซึมคือการที่คำสั่งเดียวกันสามารถทำให้เกิดการ ทำงานที่ต่างกันขึ้นกับชนิดของวัตถุ  แอ็บสแตร็กต์เมธอดคือเมธอดที่ไมได้ระบุวิธีการทำงาน  แอ็บสแตร็กต์เมธอดต้องอยู่ในแอ็บสแตร็กต์คลาส  แอ็บสแตร็กต์คลาสเป็นเหมือนกับโครงที่กำหนดให้คลาสลูก ต้องอิมพลีเมนต์แอ็บสแตร็กต์เมธอด


ดาวน์โหลด ppt 03/04/58เขียนโปรแกรม Java เบื้องต้น1 การสืบทอด (inheritance)

งานนำเสนอที่คล้ายกัน


Ads by Google