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

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

1 แนะนำ OOP แบบเต่า ๆ ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์

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


งานนำเสนอเรื่อง: "1 แนะนำ OOP แบบเต่า ๆ ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์"— ใบสำเนางานนำเสนอ:

1 1 แนะนำ OOP แบบเต่า ๆ ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ ( ) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์

2 2 คลาสและอ็อปเจ็กต์ คลาส อธิบายชนิดของอ็อปเจ็กต์ว่ามี คุณสมบัติและทำอะไรเป็นบ้าง  คุณสมบัติ  attribute หรือ property  ทำอะไรเป็นบ้าง  method คลาส Circle มีคุณสมบัติ : radius, color มีคุณสมบัติ : radius, color create create create circle1 color = Yellow radius = 1 circle2 color = Red radius = 1.5 circle3 color = Blue radius = 2 อ็อปเจ็กต์ ชนิด Circle

3 3 สร้างอ็อปเจ็กต์เต่า เรียกใช้งานมอดูล turtle  หมายเหตุ : เราลากทุกอย่างใน turtle มาไว้ใน global namespace เพื่อความสะดวก สร้างอ็อปเจ็กต์เต่าจากคลาส Turtle ขึ้นมา 2 ตัว อ้างอิงผ่านตัวแปร t1 และ t2 ศัพท์ OOP เรียกว่าเป็นการทำ object instantiation  อ็อบเจ็กต์อาจถูกเรียกว่าเป็น instance ของ คลาสนั้น ๆ >>> from turtle import * >>> t1 = Turtle() >>> t2 = Turtle()

4 4 สั่งเต่าเคลื่อนที่ เต่าทุกตัวรู้จักคำสั่งเบื้องต้นดังนี้  t.forward(d) - สั่ง t เดินหน้าเป็น ระยะทาง d  t.backward(d) - สั่ง t ถอยหลังเป็น ระยะทาง d  t.right(a) - สั่ง t หันขวาเป็นมุม a องศา  t.left(a) - สั่ง t หันซ้ายเป็นมุม a องศา  t.penup() - สั่ง t ยกปากกา  t.pendown() - สั่ง t วางปากกา

5 5 เมท็อดในไพธอน พิจารณาเมท็อด forward ที่นิยามไว้ใน คลาส Turtle  เห็นได้ว่าคลาส Turtle เป็นเสมือนเนมสเปส ที่บรรจุฟังก์ชัน forward เอาไว้ โดยฟังก์ชัน forward รับพารามิเตอร์ 2 ตัวคือ self และ distance เรียกใช้งานได้สองแบบ >>> help(Turtle.forward) Help on method forward in module turtle: forward(self, distance) unbound turtle.Turtle method Move the turtle forward by the specified distance. >>> Turtle.forward(t1, 50) >>> t1.forward(50)  นิยมใช้มากกว่า

6 6 กำหนดสีให้เต่า อ็อปเจ็กต์เต่าทุกตัวมี " สี " เป็นหนึ่งใน คุณสมบัติ  ตรวจสอบและตั้งค่าได้ผ่านเมท็อด color()  หมายเหตุ : คุณสมบัติสีมีองค์ประกอบสองส่วนคือ " สีปากกา " และ " สีระบาย " จึงเห็นว่าเป็น 2-tuple >>> t1.color() ('black','black') >>> t1.color('red') >>> t2.color('blue') >>> t1.color() ('red','red') >>> t2.color() ('blue','blue')

7 7 สร้างเต่าพันธุ์ใหม่ สร้างคลาสใหม่ชื่อ XTurtle โดย ดัดแปลงจากคลาสเดิม  ใช้เอดิเตอร์สร้างไฟล์ xturtle.py ที่บรรจุ โค้ด ศัพท์ OOP เรียกว่าเป็นการทำ inheritance  XTurtle เป็น " ซับคลาส " ของ Turtle  Turtle เป็น " ซูเปอร์คลาส " ของ XTurtle from turtle import * class XTurtle(Turtle): def square(self, size): for i in range(4): self.forward(size) self.right(90)

8 8 ทดสอบคลาส XTurtle โหลดมอดูล xturtle ด้วยคำสั่ง import  คลาส XTurtle ปรากฏในเนมสเปส xturtle หรือ โหลดมอดูล xturtle ด้วยคำสั่ง from- import  คลาส XTurtle ปรากฏใน global namespace หรือ เรียกไฟล์ xturtle.py แบบ interactive ด้วยทางเลือก -i $ python –i xturtle.py >>> t = XTurtle() >>> t.square(20) $ python >>> import xturtle >>> t = xturtle.XTurtle() >>> t.square(20) $ python >>> from xturtle import XTurtle >>> t = XTurtle() >>> t.square(20)

9 9 โอเวอร์ไรด์เมท็อด เมท็อดในซูเปอร์คลาสถูกนิยามทับ ได้  เรียกว่าเป็นการทำ method overriding ตัวอย่างด้านล่างทำให้เต่าสาย พันธุ์ XTurtle เดินไกลเป็นสองเท่า เมื่อใช้เมท็อด forward class XTurtle(Turtle): : def forward(self, distance): Turtle.forward(self, distance*2) เรียกเมท็อด forward ของคลาส Turtle เดิม

10 10 คอนสตรัคเตอร์ (Constructor) คอนสตรัตเตอร์ เป็นเมท็อดพิเศษที่ถูก เรียกเมื่อ อ็อปเจ็กต์ของคลาสกำลังถูกสร้างขึ้น  เมท็อตชื่อ __init__  นิยามเป็นพื้นฐานไว้ในทุกคลาสอยู่แล้ว  โอเวอร์ไรด์ได้เพื่อควบคุมกระบวนการสร้าง ตัวอย่าง : กำหนดให้เต่าสายพันธุ์ XTurtle ทุกตัวมีสีน้ำเงินทันทีที่เกิดขึ้นมา class XTurtle(Turtle): def __init__(self): Turtle.__init__(self) self.color('blue')

11 11 ส่งพารามิเตอร์ให้คอน สตรัคเตอร์ พารามิเตอร์ที่ระบุขณะสร้างอ็อบเจ็กต์จะ ถูกส่งไปให้ __init__ ตัวอย่าง : ทำให้คลาส XTurtle รับตัวคูณ ของระยะการเดิน รวมถึงพารามิเตอร์ ทั้งหมดของคลาส Turtle เดิมได้ ทดสอบ class XTurtle(Turtle): def __init__(self, factor=1.0, *args, **kwargs): Turtle.__init__(self, *args, **kwargs) self._factor = factor def forward(self, distance): Turtle.forward(self, distance*self._factor) >>> from xturtle import XTurtle >>> t1 = XTurtle(factor=2.0, shape='turtle') >>> t2 = XTurtle() >>> t1.forward(100) >>> t2.forward(100) ให้ _factor เป็นแอ ตริบิวต์ (attribute) ของอ็อบเจ็กต์

12 12 แบบฝึกหัด สร้างมอดูล chasingturtle.py บรรจุคลาสชื่อ ChasingTurtle ที่สืบสายพันธุ์จาก Turtle โดย รองรับเมท็อดและแอตริบิวต์ดังนี้  เมท็อด chase - สั่งให้เต่าวิ่งสู่เป้าหมายตามจำนวน ก้าวที่กำหนด ( ถ้าเป้าหมายเป็น None ให้อยู่เฉย ๆ ) โดยรับพารามิเตอร์เป็น steps ระบุจำนวนก้าวที่วิ่งสู่เป้าหมาย  คอนสตรัคเตอร์ รับพารามิเตอร์ของคลาส Turtle เดิม ได้ทั้งหมด รวมถึงอีกสองพารามิเตอร์เพิ่มเติมคือ target ระบุเต่าเป้าหมาย ( ดีฟอลท์เป็น None) color ระบุสีเต่าตอนเกิด ( ดีฟอลท์เป็น 'black')  แอตริบิวต์ target เก็บเป้าหมายปัจจุบัน คำใบ้ : ศึกษาเมท็อด Turtle.towards และ Turtle.setheading

13 13 ทดสอบแบบฝึกหัด รันโปรแกรมต่อไปนี้เพื่อทดสอบ ความถูกต้อง from chasingturtle import Turtle, ChasingTurtle leader1 = Turtle() leader2 = Turtle() leader1.penup(); leader1.setpos(-100,-200); leader1.setheading(180) leader2.penup(); leader2.setpos(100,200); leader2.setheading(0) chaser = ChasingTurtle(color='red', target=leader1, shape='turtle') for i in range(100): leader1.forward(1) leader2.forward(1) chaser.chase(2) chaser.target = leader2 for i in range(100): leader1.forward(1) leader2.forward(1) chaser.chase(2) raw_input()


ดาวน์โหลด ppt 1 แนะนำ OOP แบบเต่า ๆ ปฏิบัติการเกี่ยวกับวิศวกรรม คอมพิวเตอร์ (01204223) ผศ. ดร. ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์

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


Ads by Google