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

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

ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( )

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


งานนำเสนอเรื่อง: "ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( )"— ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

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) ให้ _factor เป็นแอตริบิวต์ (attribute) ของอ็อบเจ็กต์ >>> from xturtle import XTurtle >>> t1 = XTurtle(factor=2.0, shape='turtle') >>> t2 = XTurtle() >>> t1.forward(100) >>> t2.forward(100)

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

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 raw_input()


ดาวน์โหลด ppt ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( )

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


Ads by Google