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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Lab 8 Suphot Sawattiwong
Advertisements

โปรแกรมภาษาโลโก (logo)
ชนิดของข้อมูลในโปรแกรม Interactive C
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
Introduction to computer programming
Object and classes.
บทที่ 2 หลักการแก้ปัญหา
องค์ประกอบของโปรแกรม
การโต้ตอบแบบ Target Area
05_3_Constructor.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
การสร้างบทเรียน CAI ด้วย Flash
บทที่ 13 Pre-processor directive & macro Kairoek choeychuen
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (4) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
การสืบทอดคุณสมบัติ (Inheritance)
บทที่ 15 โปรแกรมย่อยและแสต็ก
การสื่อสารกับบอร์ด MCU ผ่านพอร์ต USB
ไมโครคอนโทรลเลอร์เบื้องต้น
C# Programming Exceed Camp: Day 3.
ชุดทดลองวงจรและ เครื่องมือวัดพื้นฐาน
การสร้างวงจรต้นแบบ (Circuit Prototyping)
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
Lecture 9 Class (คลาส) To do: Hand back assignments
Suphot Sawattiwong Sprite Suphot Sawattiwong
Inheritance การสืบทอดคลาส
เรียนรู้การสร้างเกมจากตัวอย่าง 1
ภาษาโลโก เป็นภาษาคอมพิวเตอร์ระดับสูงที่เหมาะสำหรับใช้ในการเรียนรู้ พัฒนาสติปัญญา และความคิดสร้างสรรค์ ช่วยให้นักเรียนเข้าใจหลักการการเขียนโปรแกรม ผู้เขียนโปรแกรมจะสามารถลองผิดลองถูก.
หลักการโปรแกรมเบื้องต้น
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
วิชาคอมพิวเตอร์กราฟิก intro_vb_net_06 การสร้างกราฟเส้นตรงด้วย VB.NET
Computer Programming for Engineers
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
การเขียนโปรแกรม ตอนที่ 1 (ต่อ)
Object-Oriented Programming
Web Technology & Basic Web Development
บทที่ 3 การสร้าง Appication แบบ Windows Form
ระบบสี และ การแสดงผลภาพ
ภาษาโลโก(Logo).
บทที่ 3 การกำหนดรูปแบบตัวอักษร
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
การเขียนข้อเสนอโครงการ
พื้นฐานเกี่ยวกับโปรแกรม Flash CS3
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
การเขียนโปรแกรมคอมพิวเตอร์ 1
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
Polymorphism กนกวรรธน์ เซี่ยงเจ็น
รู้จักกับ Microsoft Access 2003
Object Oriented Programming : OOP
หลักการเคลื่อนที่ของหุ่นยนต์
โครงสร้าง ภาษาซี.
Microsoft Windows Logo
พื้นฐานการเขียนโปรแกรมด้วย C#
การสืบทอด (inheritance)
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
ครูชลภิรัตน์ แก้วมูล MAIL.COM O.COM facebook : krumoo ck O.COM ครูชลภิรัตน์ แก้วมูล MAIL.COM O.COM.
คอนสตรัคเตอร์ (Constructor)
บทที่ 6 การจัดการโครงการ Project Management ญาลดา พรประเสริฐ.
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
หลักการโปรแกรมเบื้องต้น
โดย ส.อ.ประกาศิต วรนุช วิททยาลัยเฉลิมกาณจนา
บทที่ 3 การสืบทอด (Inheritance)
ใบสำเนางานนำเสนอ:

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

คลาสและอ็อปเจ็กต์ คลาส อธิบายชนิดของอ็อปเจ็กต์ว่ามีคุณสมบัติและทำอะไรเป็นบ้าง คุณสมบัติ  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

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

สั่งเต่าเคลื่อนที่ เต่าทุกตัวรู้จักคำสั่งเบื้องต้นดังนี้ 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 วางปากกา

เมท็อดในไพธอน พิจารณาเมท็อด 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)

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

สร้างเต่าพันธุ์ใหม่ สร้างคลาสใหม่ชื่อ 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)

ทดสอบคลาส 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)

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

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

ส่งพารามิเตอร์ให้คอนสตรัคเตอร์ พารามิเตอร์ที่ระบุขณะสร้างอ็อบเจ็กต์จะถูกส่งไปให้ __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)

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

ทดสอบแบบฝึกหัด รันโปรแกรมต่อไปนี้เพื่อทดสอบความถูกต้อง 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()