1 / 41

Java OOP

Java OOP. Boonrit kidngun boonrit@feu.ac.th. การเขียนโปรแกรมเชิงวัตถุ. Object คือ สิ่งที่มีคุณสมบัติและพฤติกรรมตามที่กําหนดไว้ในคลาส ออ บ เจ็ กต์ (object) แบ่งได้เป็นสองประเภท คือ สิ่งที่เป็นรูปธรรม (tangible) คือสิ่งที่เป็นวัตถุและจับต้องได้อาทิเช่น นักศึกษา ปากกา และรถ เป็นต้น

isaiah
Download Presentation

Java OOP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java OOP Boonrit kidngun boonrit@feu.ac.th

  2. การเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมเชิงวัตถุ • Objectคือ สิ่งที่มีคุณสมบัติและพฤติกรรมตามที่กําหนดไว้ในคลาส • ออบเจ็กต์(object) แบ่งได้เป็นสองประเภท คือ • สิ่งที่เป็นรูปธรรม (tangible) คือสิ่งที่เป็นวัตถุและจับต้องได้อาทิเช่น นักศึกษา ปากกา และรถ เป็นต้น • สิ่งที่เป็นนามธรรม (intangible) คือสิ่งที่ไม่สามารถจับต้องได้อาทิเช่น คะแนนรายชื่อวิชา การลงทะเบียน การฝาก-ถอนเงิน และตารางเที่ยวบิน เป็นต้น • Object ประกอบไปด้วย • คุณลักษณะ (attribute) หรือข้อมูล (data) • เมธอด (method) หรือพฤติกรรม (behavior)

  3. การเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมเชิงวัตถุ • ทุกสิ่งในโปรแกรม ที่เขียนถือว่าเป็นวัตถุ(Object) • Object แต่ละตัวมีอิสระต่อกัน การเปลี่ยนแปลงภายในObject หนึ่ง จะไม่กระทบกับ Object อื่น • การติดต่อสื่อสารระหว่าง Object จะเป็นการส่งข้อมูล Message ระหว่าง Object

  4. Class • โครงสร้างของ object โดย class เป็นตัวกำหนดว่า object นั้นจะมี data หรือคุณลักษณะอะไรบ้าง และมี method อะไรบ้ • เปรียบเสมือนพิมพ์เขียว (template) ของออปเจ็ค • ออปเจ็คที่ถูกสร้างมาจากคลาส (class) บางครั้งเรียกว่าเป็น instanceของคลาส • คลาสหนึ่งคลาสสามารถสร้างออปเจ็คได้หลายออปเจ็ค

  5. Object • is an instance of a Class • ไม่สามารถสร้างได้ ถ้าไม่มี class Bicycle bike1 = new Bicycle(); Object

  6. Encapsulation • หมายถึงการจะเรียกใช้คุณลักษณะของออปเจ็ค จะทำได้โดยการเรียกผ่านเมธอดเท่านั้น • หลักการของการห่อหุ้ม คือการกำหนดให้คุณลักษณะของออปเจ็คมีคุณสมบัติเป็น privateและกำหนดให้เมธอดมีคุณสมบัติเป็น public • โดยมีเมธอด get/ set ไว้เพื่อเข้าถึง data นั้นๆ จะเรียกว่า class นั้นๆเป็น Full Encapsulation class

  7. Encapsulation • จะใช้ Access Modifiers ในการเข้าถึงข้อมูล และ method • Public class อื่นภายนอก สามารถที่จะเข้าถึงใด้ • Private class อื่นภายนอก ไม่สามารถเข้าถึงใด้ • Protected class ที่ถูกสืบทอดมาเท่านั้นที่สามารถใช้ได้ • ถ้าไม่กำหนด จะถือว่า เป็น Private

  8. Encapsulation

  9. Inheritance • การถ่ายทอดคุณสมบัติไปยังClass ลูก • Class ที่เป็นต้นแบบเรียกว่า Superclass • Class ที่ได้รับการสืบทอดคุณสมบัติเรียกว่า Subclasses • Class หนึ่งจะมี Superclass ได้ Class เดียว • ซึ่งประโยชน์ของ Inheritance คือ • ทำให้มีโครงสร้างที่เป็นระบบ ระเบียบ ปรับเปลี่ยนได้ง่าย • ลดเวลาในการพัฒนาระบบ • ลดค่าใช้จ่ายในการพัฒนา

  10. Class x Class y Inheritance • Java ใช้ extends ชื่อclass • ในการสืบทอด • class x extends y • { • }

  11. Inheritance

  12. Inheritance

  13. final • ถ้าระบุอยู่หน้า class จะทำให้ class อื่นๆไม่สามารถที่จะสืบทอดคุณสมบัติของ class ที่ระบุ finalได้ • ถ้าระบุอยู่หน้า method จะทำให้ class ที่สืบทอดไปไม่สามารถที่จะ Override method นี้ได้ Error

  14. Polymorphism • หมายถึง การบอกแบบเดียว แต่ได้รับการสนองได้หลายแบบ • Overloading • Method มีชื่อซ้ำกันใด้แต่มี argument แตกต่างกัน • Overriding • นำ Method ของ Superclass มาจัดการได้เอง

  15. Overloading Methods • ในบางกรณีอาจมีเมธอดใดๆ ที่สามารถรับค่าที่เป็นตัวแปรได้หลากหลายชนิดได้ ถ้ากำหนดไว้เป็นเมธอดเดียว อาจทำให้ผลลัพธ์ที่ได้เกิดความผิดพลาดได้ • ดังนั้นถ้าชนิดตัวแปรเป็นคนละชนิดกัน ให้สร้างเมธอดขึ้นมาใหม่ โดยใช้ชื่อเมธอดเดียวกัน แต่สร้างให้เมธอด มีชนิดของตัวแปรใน parameter list ต่างกัน • โดยจะสร้างเมธอดใหม่ขึ้นมาเป็นจำนวนเท่ากับชนิดของตัวแปรที่เป็นไปได้ • เมื่อมีการใช้เมธอด ชื่อนี้โปรแกรมจะเรียกเมธอดที่มีชนิดของตัวแปรตรงกับที่ต้องการโดยอัตโนมัติ • เรียกวิธีการนี้ว่า “Overloading”และเรียกเมธอดที่ใช้วิธีการนี้ว่า “Overloading Methods”

  16. Overloading

  17. Overloading

  18. Overriding • เป็นการจัดการ implement • method ที่เป็นของ Suber Class

  19. Overriding

  20. Constructors • Constructors • เป็น ฟังก์ชันพิเศษที่จะถูกเรียกให้ทำงานตอนที่ Object ถูกสร้างขึ้นมา • คลาสหนึ่งๆอาจจะมี Constructor หลายๆตัวได้ แต่ต้องมี Argument ต่างกันเรียกว่า Overloading Constructors • ส่วนใหญ่จะนำมาใช้ในการกำหนดค่าเริ่มต้นให้กับ Object • ใน Java จะใช้ ชื่อ public ชื่อคลาส()

  21. Constructors

  22. Constructors

  23. abstract classAnd Methods • ใช้สำหรับ ให้ class อื่นๆ สืบทอดไปใช้งาน • ทำให้ไม่สามารถ ที่จะสร้าง object จาก class ได้ abstact class abstact method

  24. abstract classAnd Methods testAbstractClass t=new testAbstractClass(); Error

  25. abstract classAnd Methods จำเป็นต้อง Override

  26. Interfaces • มีลักษณะ เหมือน Abstract Class แต่จะไม่มี fields • จะไม่มีการ implement Code ภายใน methods ประกาศ เรียกใช้

  27. Interfaces

  28. ตารางแสดงชนิดของ Modifier (หรือ Accessibility)

  29. ถ้าหากไม่มีการระบุค่าไว้ จะหมายถึง • ตัวแปร • ใช้ได้เฉพาะในเมธอดที่นิยามตัวแปรนั้นไว้ • เมธอด • ใช้ได้เฉพาะภายใน คลาส นั้นเท่านั้น คลาสอื่นจะเรียกใช้ไม่ได้ • คลาส • ใช้ได้เฉพาะภายในโปรแกรม (File) นี้เท่านั้น โปรแกรมอื่นจะมาเรียกใช้เมธอดหรือตัวแปรต่างๆ ใน คลาส นี้ไม่ได้เลย

  30. [Static Class Members] • ความหมาย คลาสมีสมาชิกที่เป็นตัวแปรใดๆ สามารถใช้ร่วมกันได้ระหว่าง object ที่เป็น instance ของคลาสเดียวกัน (ปกติแยกจากกัน) • วิธีการประกาศให้ตัวแปรใดๆ เป็นแบบ static class members ต้องมีคำสงวน static นำหน้าชนิดข้อมูล เช่น private static int count = 0;

  31. class X { static int a = 0; public static int methodA() { a += 1; return a; } } class TestClassMember { public static void main(String[] args) { int num = 0; num = num + X.methodA(); } }

  32. การส่งค่าผ่าน Arguments การส่งค่าผ่านทางอาร์กิวเม็นต์ที่อยู่ใน parameter list มีอยู่ 2 ลักษณะคือ • อาร์กิวเม็นต์แบบสําเนาค่าข้อมูล (Pass by Value Argument) • อาร์กิวเม็นต์แบบผ่านค่าอ้างถึง (Pass by Reference Argument)

  33. อาร์กิวเม็นต์แบบสําเนาค่าข้อมูล (Pass by Value Argument) • คุณสมบัติที่เรียกว่า Pass by Value คือการส่งข้อมูลไปให้เมธอด และเมธอด ก็อ่านค่าได้โดยตรง และนําไปใช้งานได้ตามความต้องการ แต่หากข้อมูลในอาร์กิว เม็นต์เกิดการเปลี่ยนแปลงไม่ว่าจากกรณีใดๆภายในเมธอด ข้อมูลที่เปลี่ยนแปลงไป จะไม่มีผล กับข้อมูลหลังจากเมธอดทํางานเสร็จสิ้น • การส่งค่าไปยัง method แบบ pass-by-value นี้ค่าที่ส่งเข้าไปจะถูกนําไปใช้ภายใน ตัว method เท่านั้น การเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นจะไม่มีผลกระทบกับตัวแปรที่เป็นเจ้าของค่านั้น ภายนอก method เลย

  34. รูปแบบส่วนอาร์กิวเม็นต์แบบผ่านค่าข้อมูลรูปแบบส่วนอาร์กิวเม็นต์แบบผ่านค่าข้อมูล Method_Name (Primitive_Type Argument_Name1, Primitive_Type Argument_Name2, …) { … Argument_Name1 = …; … } • Primitive_Type คือชนิดข้อมูลที่กําหนดเป็น int, double, float, boolean • Argument_Name1, Argument_Name2 คือชื่ออาร์กิวเม็นต์ อาร์กิวเม็นต์แต่ละตัวที่กําหนดไว้ระหว่างเครื่องหมาย( และ ) หากมีมากกว่าหนึ่งตัวจะถูกแยก ด้วยเครื่องหมาย , (จุลภาค)

  35. อาร์กิวเม็นต์แบบผ่านค่าอ้างถึง (Pass by Reference Argument) • คุณสมบัติที่เรียกว่า Pass by Reference คือการส่งข้อมูลไปให้เมธอด และเมธอดก็ อ่านค่าจากการอ้างถึง และนําไปใช้งานได้ตามความต้องการ แต่หากข้อมูลใน อาร์กิวเม็นต์ไม่ว่าจะเป็นการเปลี่ยนแปลงแอทริบิวต์ของอาร์กิวเม็นต์ หรือการสร้าง ใหม่ให้กับอาร์กิวเม็นต์ การเปลี่ยนแปลงดังกล่าวภายในเมธอดข้อมูลที่เปลี่ยนแปลงไปจะมีผลกับข้อมูลหลังจากเมธอดทํางานเสร็จสิ้น • การส่งค่าแบบอ้างอิงนั้น สิ่งที่เราส่งเข้าไปใน method นั้นไม่ใช้ค่าของตัวแปร (copy) แต่เป็นตัวอ้างอิงถึง object นั้น ๆ โดยตรง เราอาจพูดได้ว่าสิ่งที่เราส่งไปนั้น เป็นที่อยู่ (address) ของ object นั้น ๆ ก็ได้

  36. มีหลักการทํางานแบบเดียวกัน แต่ไม่เหมือนกันซะทีเดียว นั่นคือเมธอดที่ได้รับ อาร์กิวเม็นต์ที่ไม่ใช่ข้อมูลลักษณะพลีมิทีฟแล้ว อาร์กิวเม็นต์นั้นจะสร้างมาจากคลาส เป็นอาร์กิวเม็นต์ลักษณะออปเจ็ค ดังนั้นลักษณะการส่งข้อมูลอาร์กิวเม็นต์จะไม่ใช้การสําเนาข้อมูลเพื่อนําไปใช้งานภายในเมธอด แต่ในเมธอดจะได้รับเป็น จุดอ้างถึง หรือจุดที่เชื่อมโยงไปหาออปเจ็ค ดังนั้นจึงเรียกการส่งข้อมูล แบบนี้ว่าการผ่านค่า อ้างถึง

  37. รูปแบบส่วนอาร์กิวเม็นต์แบบผ่านค่าอ้างถึงรูปแบบส่วนอาร์กิวเม็นต์แบบผ่านค่าอ้างถึง Method_Name (Class_Name Argument_Name1, Class_Name Argument_Name2, …) { Argument_Name1.Attribute_Name = …; Argument_Name2.Method_Name(); … } • Class_Name คือชื่อคลาสที่เป็นที่มาของออปเจ็คที่จะส่งมาเป็นอาร์กิวเม็นต์ • Argument_Name1, Argument_Name2 เป็นอาร์กิวเม็นต์ที่ถูกสร้างขึ้นมาแบบ ออปเจ็ค (สร้างมาจากคลาสด้วยคําสั่ง new)

  38. Package • โปรแกรมที่มีขนาดใหญ่ จะประกอบด้วยคลาสจํานวนมาก อาจมีมากเป็นร้อยหรือเป็นพันเราสามารถจัดหมวดหมู่ของคลาสให้เป็นระเบียบและง่ายต่อการใช้งานได้ ด้วยการแตก ซอร์สโค้ดของโปรแกรมหนึ่งโปรแกรมให้เป็นหลายซอร์สโค้ด ในกรณีนี้ซอร์สโค้ดไม่จําเป็นต้องมีเมธอด main()อยู่ ยกเว้นซอร์สโค้ดที่มีคลาส คลาสแรกที่เราใช้เรียกโปรแกรมหลักของเรา เราเรียกซอร์ส โค้ด ไฟล์อื่นๆ ที่ประกอบ ด้วยคลาสตั้งแต่หนึ่งคลาสขึ้นไปแต่ไม่มีคลาสที่มีเมธอด main() อยู่ว่า แพคเกจ • เป็นที่รวมของ class ต่างๆ ที่ถูกเรียกใช้ในโปรแกรมหรือ method ต่างๆ class ทุกๆ ตัวของ Java ได้ถูกจัดเก็บอยู่ใน package ต่างๆ เพื่อทำให้การเรียกใช้ class ต่างๆ เหล่านี้ทำได้ง่ายขึ้น

  39. Package • คือการรวมกลุ่มของคลาสไว้ในชุดเดียวกัน • เพื่อความสะดวกในการอ้างอิงถึงเพื่อใช้งาน • ทำให้การจัดเก็บ Bytecodes เป็นไปอย่างมีระบบ • ใช้หลักเกณฑ์การจัด package เป็นไปตามการจัด Directory ของระบบ • ทำให้เกิดรูปแบบหนึ่งของการกำหนดระดับการเข้าถึง

  40. Package • คำสั่งในการเรียกใช้ Package คือ คำสั่ง import • ตัวอย่างการใช้งาน • import java.util.*; หมายถึง เรียกใช้ Package ชื่อ “java.util” ทั้ง Package(ทุก Class) • import java.util.ArrayList; หมายถึง เรียกใช้เฉพาะ Class ชื่อ “ArrayList” ซึ่งอยู่ใน Library ชื่อ “java.util”

More Related