1 / 80

Object-Oriented Programming

Object-Oriented Programming. ผู้สอน อ.วาทินี ดวงอ่อนนาม. การเขียนโปรแกรมเชิงวัตถุ. ตัวอย่างข้อสอบ : จงเติมโปรแกรมนี้ให้สมบูรณ์. class Ex1{ ………………….(….. ……. [ ]){ ………… A = 9; ………… x = new …….(); ………… y = x.go (A);

nedra
Download Presentation

Object-Oriented Programming

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. Object-Oriented Programming ผู้สอน อ.วาทินี ดวงอ่อนนาม การเขียนโปรแกรมเชิงวัตถุ

  2. ตัวอย่างข้อสอบ : จงเติมโปรแกรมนี้ให้สมบูรณ์ class Ex1{ ………………….(….. ……. [ ]){ ………… A = 9; ………… x = new …….(); ………… y = x.go(A); System.out.println(A+“ * 2 =”+y); } int ………..(int b){ b =b*2; ……… b; } } Output 9 * 2 = 18

  3. Keyword Keyword ในภาษาจาวา Keyword คือ ชื่อที่มีความหมายพิเศษในจาวา compilerของภาษาจาวาจะเข้าใจความหมายและคำสั่งที่จะต้องดำเนินการสำหรับ keyword แต่ละตัว 

  4. บทที่ 6 : ตัวแปร object, Class String ,Encapsulation

  5. เนื้อหา • ตัวแปร Object, Class String • Encapsulation • Access modifier • private, • public, • protected • package (none หรือ default)

  6. ชนิดข้อมูลแบบอ้างอิง ตัวแปรหรือค่าคงที่ที่ประกาศเป็นชนิดข้อมูลอื่น ๆ ซึ่งไม่ใช่ชนิดข้อมูลแบบพื้นฐาน จะเป็นชนิดข้อมูลแบบอ้างอิงซึ่งก็คือ Object ในภาษาจาวา โดยแบ่งเป็น 2 แบบคือ • ชนิดข้อมูลที่เป็น class • ชนิดข้อมูลทีเป็น array

  7. ชนิดข้อมูลที่เป็น class คือชนิดข้อมูล ที่ถูกสร้างมาจาก class (instance) ตัวอย่าง Rectangerrec;

  8. ชนิดข้อมูลที่เป็น class : String ชนิดข้อมูลแบบอ้างอิงจะมีวิธีการเก็บข้อมูลในหน่วยความจำที่แตกต่างจากการเก็บชนิดข้อมูลพื้นฐานตัวอย่าง

  9. class Test_String{ public static void main(String args []){ int x=18; String s=new String("wathinee"); String y; } }

  10. ชนิดข้อมูลที่เป็น class : String int x=18; String s=new String(“ wathinee”); String y; { y null s new String OX3432434 wathinee main x 18 heap stack

  11. ข้อแตกต่าง กรณีที่ไม่ใช้คำสั่ง new ภาษาจาวาจะกำหนดตำแหน่งอ้างอิงในหน่วยความจำของข้อความที่ระบุในเครื่อง “ ” โดยพิจารณาจาก String Pool ว่ามีข้อความเดิมอยู่หรือไม่ หากมีก็จะใช้ตำแหน่งอ้างอิงที่ซ้ำกัน แต่ถ้ายังไม่มีก็จะสร้างข้อความขึ้นมาใหม่และกำหนดตำแหน่งอ้างอิงของข้อความนั้น String s1= “wathinee” String s2= “wathinee” String s3= “Wathinee” Wathinee s3 OX345344 wathinee s2 OX3432432 s1 • OX3432432 Heap Stack

  12. class : String • String เป็น Object ที่มีค่าคงที่ข้อมูลซึ่งก็คือข้อความใด ๆ ที่อยู่ภายในเครื่องหมาย double quote(“”) ตัวอย่างเช่น “วิชา OOP” • String เป็น object ที่สามารถถูกสร้างขึ้น และกำหนดค่าได้โดยไม่จำเป็นต้องใช้คำสั่ง new เช่น String s=“wathinee”; โดยไม่จำเป็นที่จะต้องใช้คำสั่ง String s =new String(“wathinee”);

  13. ข้อแตกต่าง กรณีที่ใช้คำสั่ง new ภาษาจาวาจะสร้างข้อความใหม่และจองเนื้อที่ในหน่วยความจำเสมอ String s1= new String(“wathinee”); String s2= new String(“wathinee”); String s3= new String(“Wathinee”); Wathinee wathinee s3 Oxoaaa wathinee s2 Oxooee s1 • Oxdefe Heap Stack

  14. String เปลี่ยนค่าไม่ได้ เป็น object ที่เปลี่ยนค่าไม่ได้ การกำหนดค่าให้กับ object ชนิด String ใหม่ เป็นการเปลี่ยนตำแหน่งอ้างอิงในหน่วยความจำเท่านั้น ไม่ได้มีการเปลี่ยนค่าภายในตำแหน่งอ้างอิงเดิม String s1; s1=“ข้อความ 1”; s1=“ข้อความ 2”; ข้อความ 2 ข้อความ 1 null Ox7899 Ox7777 s1 Heap Stack

  15. การเปรียบเทียบ String • โดยใช้เครื่องหมาย = = • โดยใช้เมธอด equals คำตอบจะเป็น true,false

  16. โดยใช้เครื่องหมาย = = รูปแบบ สตริงตัวแรก = = สตริงตัวที่สอง หมายถึง Memory location เดียวกันหรือไม่

  17. โดยใช้เมธอด equals รูปแบบ สตริงตัวแรก.equals(สตริงตัวที่สอง) หมายถึง ข้อความของString เหมือนกันหรือไม่?

  18. String เป็น Object ที่มีตัวดำเนินการในการเชื่อมข้อความ String s1=“Hi !”+ “There”; System.out.print(s1); String s2=“This”; String s3=s2+“is a book”; System.out.print(s3); String s4=s2+4; System.out.print(s4); ภาษาจะแปลงข้อมูลดังกล่าวให้เป็น String โดยอัตโนมัติ

  19. การเชื่อมต่อ String(String Concatenation) ตัวอย่าง การใช้เครื่องหมาย + เป็นการต่อString เช่น String name1=“Java”; String name2=“Programming”; String name3= name1+name2; String name4= name1+ “ ”+name2;

  20. การเชื่อมต่อ String(String Concatenation) ตัวอย่าง String + ตัวเลข String msg=“”Hello; intnum= 123; String message =msg +num;

  21. การเชื่อมต่อ String(String Concatenation) ตัวอย่างคำสั่งSystem.out.println() กับการเชื่อมต่อ String intnum=3; System.out.println(“ My Number is : ”+num);

  22. การแปลง String • แปลงจากอักษรตัวเล็กไปเป็นอักษรตัวใหญ่ • แปลงจากอักษรตัวใหญ่ไปเป็นอักษรตัวเล็ก • แปลงจาก String ไปเป็นตัวเลข • แปลงจาก ตัวเลข ไปเป็น String

  23. แปลงจากอักษรตัวเล็กไปเป็นอักษรตัวใหญ่แปลงจากอักษรตัวเล็กไปเป็นอักษรตัวใหญ่ รูปแบบ String ที่ต้องการแปลง.toUpperCase(); ตัวอย่าง String s1="Hi !"+ "There"; System.out.println(s1.toUpperCase()); System.out.println("This".toUpperCase());

  24. แปลงจากอักษรตัวใหญ่ไปเป็นอักษรตัวเล็กแปลงจากอักษรตัวใหญ่ไปเป็นอักษรตัวเล็ก รูปแบบ String ที่ต้องการแปลง.toLowerCase(); ตัวอย่าง String s1="Hi !"+ "There"; System.out.println(s1.toLowerCase()); System.out.println("This".toLowerCase());

  25. แปลงจากตัวเลขไปเป็น String โดยใช้ .toString รูปแบบแปลงเลขจำนวนเต็ม Integer.toString(เลขจำนวนเต็มที่ต้องการแปลง); ตัวอย่าง int num1=123; String s1=Integer.toString(num1); System.out.print(num1);

  26. แปลงจากตัวเลขไปเป็น String โดยใช้ .toString รูปแบบแปลงเลขจำนวนทศนิยม Double.toString(เลขจำนวนเต็มที่ต้องการแปลง); ตัวอย่าง double num1=123.00; String s1=Double.toString(num1); System.out.print(num1);

  27. การหาความยาวของ String รูปแบบ ชื่อตัวแปรสตริง.length() ตัวอย่าง String message=“Hello”; int x=message.length(); // x=5

  28. String s1=“hello”; String s2=“world”; String s3=new String(“hell”); String s4=“hell”; String s5=“hello”; String s6=new String(“hell”); คำถาม s1 == s5 s3 == s4 s4 == s6 s3 == s6 s1.equals(s5) s3.equals(s4) s4.equals(s6) s3.equals(s6)

  29. Encapsulation (การหุ้มห่อ)

  30. Modifier ในภาษาจาวา 1. Access modifier : เพื่อกำหนดระดับการเข้าใช้งาน ได้แก่ private, public, protectedและpackage (none หรือ default) • non –access modifier ได้แก่final , static, abstract ,native transient ,volatile ,synchronized ,strictfp

  31. static ใช้กับ attribute หมายถึง

  32. Encapsulation(การหุ้มห่อ) เป็นกระบวนการซ่อนรายละเอียดการทำงานและข้อมูลไว้ภายใน ไม่ให้ภายนอกสามารถมองเห็นได้ และเมื่อภายนอกมองไม่เห็นสิ่งที่ถูกซ่อนไว้ ภายในแล้ว ก็จะไม่สามารถทำการเปลี่ยนแปลง แก้ไข หรือสร้างความเสียหายให้กับสิ่งต่าง ๆ ที่อยู่ภายในได้ หากจะเปรียบเทียบหลักการของ Encapsulation แล้วก็เหมือนกับการซ่อนกระบวนการทำงานและข้อมูลไว้หลังกำแพง ซึ่งสิ่งที่อยู่ด้านนอกของกำแพงจะไม่สามารถเปลี่ยนแปลงกระบวนการทำงานหรือเข้าถึงข้อมูล ที่อยู่หลังกำแพงได้ ข้อดี ของ Encapsulation คือ สามารถสร้างความปลอดภัยให้กับข้อมูลได้เนื่องจากข้อมูลจะถูกเข้าถึงได้จากผู้มีสิทธิ์เท่านั้น

  33. รู้จักกับ คำต่อไปนี้ที่เกี่ยวข้องกับ Encapsulation • Access modifier • private, • public, • protected • package (none หรือ default)

  34. Access modifier เพื่อกำหนดระดับการเข้าใช้งานได้แก่ • private, • package (none หรือ default) • protected • public

  35. คนในบ้าน คนทั่วไปอื่นๆ ในโลกนี้ อยู่ต่าง class แต่อยู่ใน package เดียวกัน class อื่น ๆ ทั่วไป เจ้าของห้อง อยู่ใน class เดียวกัน package เดียวกัน (folder เดียวกัน) • ญาติพี่น้อง เป็น Class ที่สืบทอดมา (class ลูก ,subclass)

  36. หมายเหตุ อยู่ใน class เดียวกัน : เจ้าของห้อง package : คนในบ้านเดียวกัน หรืออยู่ใน folder เดียวกัน class ที่สืบทอด หรือเป็น subclass : ญาติ class อื่น ๆ : คนทั่วไปในโลกนี้

  37. private (-) : attribute , method คนในบ้าน คนทั่วไปอื่นๆ ในโลกนี้ เจ้าของห้อง • ญาติพี่น้อง

  38. Access Modifier คีย์เวิร์ด private (-) ส่วนบุคคล เป็นระดับการเข้าถึงข้อมูล สำหรับการใช้งานภายใน คลาสเท่านั้น ที่สามารถมองเห็นข้อมูลและมีสิทธิ์เข้ามา จัดการแก้ไขเพิ่มเติมข้อมูลได้

  39. private Student - id • Name • + getId() • + getName(); • + setName(); Test_Student

More Related