SlideShare a Scribd company logo
1 of 29
Download to read offline
344-202 Introduction to Object-Oriented Programming


             การโปรแกรมเชิงวัตถุ

                   5. Methods


                       Faculty of Technology and Environment
                  Prince of Songkla University, Phuket Campus
                                                      2/2551
Contents
  Method overview
  Call stack
  Method signature
  Static method & Instance method
  Constructor
  Overload method
  Information hiding
  get-set methods


Object-Oriented Programming 2/2551   2
Method overview
  ปกติโปรแกรมจะทางานตามลาดับคาสั่งที่เขียนในโปรแกรม
  การใช้เมธอดช่วยให้สามารถแบ่งการทางานของโปรแกรมเป็นส่วน ๆ
  แต่ละเมธอดจะมีคาสั่งในการดาเนินการที่เกี่ยวข้องกัน
  เมื่อมีการเรียกเมธอด (invoked / called) ก็จะมีการย้ายไปทางานที่
   เมธอดนั้นจนเสร็จแล้วจึงกลับมาทางานต่อที่คาสั่งถัดไปหลังการเรียก
   เมธอด
  เมธอดที่กาลังทางานจะได้รับ control ไป ซึ่งหากมีการเรียกใช้เมธอดอื่น
   ก็จะย้าย control ไปยังเมธอดที่ถูกเรียก เมื่อทาเสร็จแล้ว control ก็จะ
   กลับมายังเมธอดที่เรียกใช้ เรียกว่า Flow of control

Object-Oriented Programming 2/2551                                   3
Method
  เมธอดแรกที่ถูกเรียกใช้ให้ทางานในจาวาคือ main() ซึ่งจะเรียกโดย JVM
  JVM จะจดจาเมธอดที่เรียกใช้ได้วาเมธอดใดเรียกเมธอดใดโดยใช้
                                   ่
   โครงสร้างที่เรียกว่า call stack
  เมธอดที่ถูกเรียกใช้งานจะถูกใส่ไว้ใน call stack
  เมื่อเมธอดนั้นทางานเสร็จก็จะถูกเอาออกจาก call stack
  หาก main() มีการเรียกใช้เมธอดดังนี้




Object-Oriented Programming 2/2551                                4
แสดงการทางานของ call stack




Object-Oriented Programming 2/2551   5
method signature
    โครงสร้างเมธอด
        access_modifier return_type methodName(parameter_list) { … }

       Access_modifier (public/private)
       Return_type (ชนิดข้อมูลที่ส่งกลับไปให้คลาสที่เรียกใช้เมธอดนี้)

       methodName (ชื่อเมธอด)

       Parameter_list (ชนิดข้อมูลที่ต้องส่งให้กับเมธอด)




Object-Oriented Programming 2/2551                                       6
Static method VS instance method
    ในจาวามีเมธอด 2 แบบคือ
       Static method
       Instance method

    static method
           • เป็นเมธอดที่มีคาว่า static อยู่หน้าชื่อเมธอด
                   public static void main(String[] args) { }
           • ตัวแปรหรือเมธอดที่เป็น static จะถูกจองพื้นที่ในขณะคอมไพล์โปรแกรม
           • สามารถเรียกใช้ได้ทันทีโดยไม่ต้องสร้าง object มาเรียกใช้งาน



Object-Oriented Programming 2/2551                                              7
Static method
       เมธอดที่เป็น static จะเรียกใช้เมธอดและตัวแปรที่เป็น static โดยตรงได้
       หากต้องการเรียกใช้เมธอดที่ไม่ใช่ static จะต้องสร้าง object มาเรียกใช้งาน




Object-Oriented Programming 2/2551                                                 8
Static method
    หากโปรแกรมนี้เมธอด sayHello() ไม่มีคาว่า static จะเกิดข้อผิดพลาด
     ขณะคอมไพล์




Object-Oriented Programming 2/2551                                  9
Instance method
    Instance method
       เป็น method ภายในคลาสที่เป็นต้นแบบของวัตถุ ไม่ระบุคาว่า static
       การเรียกใช้งานต้องสร้าง object ของคลาสขึ้นมาก่อน แล้วจึงเรียกใช้งานเมธอด
        ของ object

                                     .
                     objectName methodName();
         การจองพื้นที่ตัวแปรในเมธอดจะเกิดขณะรันโปรแกรม




Object-Oriented Programming 2/2551                                          10
Instance method
    ตัวอย่างการใช้งาน instance method




Object-Oriented Programming 2/2551       11
Method with/without return type
    เมธอดที่ไม่มการคืนค่า ให้กาหนด return_type เป็น void
                 ี
                   public void mailCheck() { … }
         การเรียกใช้ o.mailCheck();

    เมธอดที่มีการคืนค่า ให้ระบุชนิดข้อมูลที่จะคืนค่า และใส่ค่าที่จะ return
     ในเมธอด
          public double calculateArea() { …
              return area; }
       การเรียกใช้ System.out.println(x.calculateArea());
Object-Oriented Programming 2/2551                                        12
Method with/without return type
    ชนิดข้อมูลของ Return type อาจเป็น primitive data types หรือชนิด
     ข้อมูลที่เป็น class เช่น String




  หากเป็น method ที่มีการคืนค่า ต้องมีการระบุคาสั่ง return ไว้ใน method
   นั้นด้วยว่าตัวแปรที่จะส่งคืนคืออะไร
  ชนิดข้อมูลของตัวแปรที่ส่งคืน ต้องเป็นชนิดเดียวกันกับ return-type

Object-Oriented Programming 2/2551                                     13
Method with/without parameter
       เมธอดที่ประกาศในคลาส Test
 class Test {
   // เมธอดที่ไม่มีการรับ parameter               การเรียกใช้เมธอดใน main()
                                                    …
         public void printHello() {                 Test t = new Test();
             System.out.println(“Hello”);           t.printHello();
         }                                          t.multiply(5,9);
 //เมธอดที่มีการรับ parameter                       …
         public void multiply(int x, int y) {
             System.out.println(x*y);
         }                                    เรียกว่า argument คือค่าที่ส่งให้เมธอด
 }
Object-Oriented Programming 2/2551                                         14
Passing parameter to a method
    การส่งค่าให้แก่เมธอดทาได้ 2 แบบ
       Pass-by-value ส่งเฉพาะข้อมูล คือการส่งค่า primitive data type
       Pass-by-reference ส่งค่าแบบอ้างอิง คือการส่ง address ซึ่งใช้ในการส่ง object




Object-Oriented Programming 2/2551                                              15
Declare method with parameter




Object-Oriented Programming 2/2551   16
Constructor
  Constructor คือ เมธอดทีมีชื่อเหมือนคลาส และไม่มการระบุ return type
                              ่                        ี
   หรือ void
  หน้าที่หลักคือ กาหนดค่าเริ่มต้นให้กบ attribute ในคลาส
                                       ั
  เมื่อเราสร้างวัตถุด้วยคาสั่ง new จะเป็นการเรียกใช้ Constructor method
   เช่น
         Circle a = new Circle();        // default constructor
  ปกติแล้ว ทุกคลาสจะมี default constructor คือ constructor ที่ไม่มีการส่ง
   parameter ใดๆ
  เราไม่ต้องประกาศ default constructor แต่จาวาจะสร้างให้เอง


Object-Oriented Programming 2/2551                                    17
Constructor



   Class Circle มี default constructor method คือ Circle(){ }
    จาวาจะสร้างให้เองในระหว่างการคอมไพล์




Object-Oriented Programming 2/2551                               18
Constructor
                                                               radius 0
                                                         a
                                                               area 0.0




    เมื่อเราสร้าง object ด้วยคาสั่ง Circle a = new Circle();
     จะเป็นการเรียก constructor method Circle() ซึ่งไม่ได้ทาการกาหนดค่า
     ใดๆให้ attribute ของ Circle ดังนั้น radius จึงยังมีค่าตาม default คือ 0


Object-Oriented Programming 2/2551                                       19
Constructor
    เรามักใช้ Constructor กาหนดค่าเริ่มต้นแก่ attribute ตอนสร้าง object

                                                              radius 5
                                                        a
                                                              area 0.0




Object-Oriented Programming 2/2551                                     20
Constructor
    เราสามารถส่ง parameter ให้แก่ Constructor ได้




Object-Oriented Programming 2/2551                   21
Overloaded methods
  ภายในคลาสสามารถมีเมธอดชื่อเดียวกันได้หลายเมธอด
  แต่เมธอดเหล่านี้ต้องมีชนิดหรือจานวนของ parameter ไม่เหมือนกัน
  เมื่อมีการเรียกใช้ จาวาจะตรวจสอบชนิดหรือจานวนของ argument ที่ส่ง
   มาว่าตรงกับเมธอดตัวใด ก็จะให้เมธอดตัวนั้นทางาน
  เมธอดที่มีชื่อเดียวกันเหล่านี้เรียกว่า overloaded methods




Object-Oriented Programming 2/2551                               22
Overloaded methods




                                     Multiply int * int
                                     20
                                     Multiply double * double
                                     20.0
Object-Oriented Programming 2/2551                              23
OO concept – Information Hiding
  ในการพัฒนาตามแนวทาง OOP จะมีการใช้งานคลาสที่ได้พฒนาไว้แล้วั
  จากนั้นเขียนโปรแกรมเพื่อสร้าง object จากคลาสนั้นมาใช้งาน เรียก
   โปรแกรมนี้ว่า client program
  ผู้พัฒนา client program ต้องรู้ว่าคลาสที่จะใช้งาน มีตัวแปรและเมธอด
   อะไรให้ใช้ แต่ไม่จาเป็นต้องรู้ว่าเมธอดนั้นมีการทางานอย่างไร
  ตัวแปรหรือเมธอดของคลาสบางตัวไม่ต้องการให้มีการแก้ไขได้จากคลาส
   หรือโปรแกรมอื่นโดยตรง



Object-Oriented Programming 2/2551                                24
Why encapsulation?
  เนื่องจาก object อาจถูกเรียกใช้จากหลายคลาสพร้อม ๆ กันได้ จึงอาจ
   ต้องซ่อนตัวแปรหรือเมธอดไว้ไม่ให้ถูกแก้ไขคุณสมบัติบางอย่างที่อาจ
   ส่งผลกระทบต่อคลาสอื่น
  การปกป้องเมธอดหรือตัวแปร ทาได้โดยการกาหนดระดับการเข้าถึงตัว
   แปรและเมธอด (access modifier)




Object-Oriented Programming 2/2551                              25
Access modifier
   Access modifier บอกระดับการ
    เข้าถึงของตัวแปรและเมธอด
      public - คลาสอื่นสามารถ
       เรียกใช้ตัวแปรหรือกาหนดค่าให้
       ตัวแปรได้โดยตรง
         • เช่น c.radius = 5;
      private - ตัวแปรหรือเมธอดที่เป็น
       private ไม่สามารถถูกเข้าถึงหรือ
       เรียกใช้จาก method อื่นได้
       โดยตรง

Object-Oriented Programming 2/2551        26
การประกาศ Get-set method
  การเข้าถึงตัวแปร private จะทาผ่านเมธอดที่เป็น public
  เมธอดที่ใช้เข้าถึงตัวแปร private ประกอบด้วย
       set method ใช้กาหนดค่าให้ตัวแปรคลาส
       get method ใช้รับค่าจากตัวแปรคลาส




Object-Oriented Programming 2/2551                        27
EX. Get-set method of id




Object-Oriented Programming 2/2551   28
แบบฝึกหัด
    สร้างคลาสชือ Account
                ่
       ประกาศตัวแปร name และ balance เป็น private
       สร้าง get-set method ของตัวแปรที่เป็น private

    เขียนโปรแกรม AccountDemo
       กาหนดค่า name = “Harry Potter”
       กาหนดค่า balance = 10000

       เรียก get-set method แสดงค่า name, balance




Object-Oriented Programming 2/2551                      29

More Related Content

What's hot

Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
ตัวอย่างการเขียนผังงาน
ตัวอย่างการเขียนผังงานตัวอย่างการเขียนผังงาน
ตัวอย่างการเขียนผังงานsarida ruangthai
 
ห.ร.ม และ ค.ร.น.
ห.ร.ม และ ค.ร.น.ห.ร.ม และ ค.ร.น.
ห.ร.ม และ ค.ร.น.guestcf3942
 
การแก้อสมการ
การแก้อสมการการแก้อสมการ
การแก้อสมการAon Narinchoti
 
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56Jariya Jaiyot
 
ข้อสอบการลงโทษนักเรียน
ข้อสอบการลงโทษนักเรียนข้อสอบการลงโทษนักเรียน
ข้อสอบการลงโทษนักเรียนคน ขี้เล่า
 
รายงานวิจัยในชั้นเรียน
รายงานวิจัยในชั้นเรียนรายงานวิจัยในชั้นเรียน
รายงานวิจัยในชั้นเรียนchaiwat vichianchai
 
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...Kobwit Piriyawat
 
Clinical Practice Guideline 2557 แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...
Clinical Practice Guideline 2557  แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...Clinical Practice Guideline 2557  แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...
Clinical Practice Guideline 2557 แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...Utai Sukviwatsirikul
 
การเรียนรู้เสริมด้วย Technology enhanced learning1
การเรียนรู้เสริมด้วย Technology enhanced learning1การเรียนรู้เสริมด้วย Technology enhanced learning1
การเรียนรู้เสริมด้วย Technology enhanced learning1Prachyanun Nilsook
 
Java Stack Data Structure.pptx
Java Stack Data Structure.pptxJava Stack Data Structure.pptx
Java Stack Data Structure.pptxvishal choudhary
 
พื้นที่ใต้โค้ง
พื้นที่ใต้โค้งพื้นที่ใต้โค้ง
พื้นที่ใต้โค้งkrurutsamee
 
ข้อสอบความคิดสร้างสรรค์
ข้อสอบความคิดสร้างสรรค์ข้อสอบความคิดสร้างสรรค์
ข้อสอบความคิดสร้างสรรค์Jirathorn Buenglee
 
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมี
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมีทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมี
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมีพัน พัน
 
มารยาทการต้อนรับแขก
มารยาทการต้อนรับแขกมารยาทการต้อนรับแขก
มารยาทการต้อนรับแขกsongsri
 
การยกและการเคลื่อนย้ายผู้ป่วย
การยกและการเคลื่อนย้ายผู้ป่วยการยกและการเคลื่อนย้ายผู้ป่วย
การยกและการเคลื่อนย้ายผู้ป่วยNarenthorn EMS Center
 
mind map สื่อการเรียนรู้
mind map สื่อการเรียนรู้mind map สื่อการเรียนรู้
mind map สื่อการเรียนรู้Thunyalak Thumphila
 

What's hot (20)

เนื้อหาบท3
เนื้อหาบท3เนื้อหาบท3
เนื้อหาบท3
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
ตัวอย่างการเขียนผังงาน
ตัวอย่างการเขียนผังงานตัวอย่างการเขียนผังงาน
ตัวอย่างการเขียนผังงาน
 
ห.ร.ม และ ค.ร.น.
ห.ร.ม และ ค.ร.น.ห.ร.ม และ ค.ร.น.
ห.ร.ม และ ค.ร.น.
 
การแก้อสมการ
การแก้อสมการการแก้อสมการ
การแก้อสมการ
 
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56
พิธีเปิด ปิด กิจกรรมยุวกาชาด-เอกสาร56
 
ข้อสอบการลงโทษนักเรียน
ข้อสอบการลงโทษนักเรียนข้อสอบการลงโทษนักเรียน
ข้อสอบการลงโทษนักเรียน
 
รายงานวิจัยในชั้นเรียน
รายงานวิจัยในชั้นเรียนรายงานวิจัยในชั้นเรียน
รายงานวิจัยในชั้นเรียน
 
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...
แผนการจัดการเรียนรุ้คุณธรรมนำความคิดเรื่องสารละลาย โดยใช้รูปแบบ 4 mat นายกอบว...
 
Clinical Practice Guideline 2557 แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...
Clinical Practice Guideline 2557  แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...Clinical Practice Guideline 2557  แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...
Clinical Practice Guideline 2557 แนวทางการดูแลรักษาโรคลมพิษ (Urticaria/Angio...
 
การเรียนรู้เสริมด้วย Technology enhanced learning1
การเรียนรู้เสริมด้วย Technology enhanced learning1การเรียนรู้เสริมด้วย Technology enhanced learning1
การเรียนรู้เสริมด้วย Technology enhanced learning1
 
Java Stack Data Structure.pptx
Java Stack Data Structure.pptxJava Stack Data Structure.pptx
Java Stack Data Structure.pptx
 
ความร้อน
ความร้อนความร้อน
ความร้อน
 
พื้นที่ใต้โค้ง
พื้นที่ใต้โค้งพื้นที่ใต้โค้ง
พื้นที่ใต้โค้ง
 
Anemia
AnemiaAnemia
Anemia
 
ข้อสอบความคิดสร้างสรรค์
ข้อสอบความคิดสร้างสรรค์ข้อสอบความคิดสร้างสรรค์
ข้อสอบความคิดสร้างสรรค์
 
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมี
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมีทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมี
ทฤษฎีและพลังงานกับการเกิดปฏิกิริยาเคมี
 
มารยาทการต้อนรับแขก
มารยาทการต้อนรับแขกมารยาทการต้อนรับแขก
มารยาทการต้อนรับแขก
 
การยกและการเคลื่อนย้ายผู้ป่วย
การยกและการเคลื่อนย้ายผู้ป่วยการยกและการเคลื่อนย้ายผู้ป่วย
การยกและการเคลื่อนย้ายผู้ป่วย
 
mind map สื่อการเรียนรู้
mind map สื่อการเรียนรู้mind map สื่อการเรียนรู้
mind map สื่อการเรียนรู้
 

Viewers also liked

Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptxFinian Nian
 
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptxFinian Nian
 
6.Flow control
6.Flow control6.Flow control
6.Flow controlUsableLabs
 
1.Introduction to java
1.Introduction to java1.Introduction to java
1.Introduction to javaUsableLabs
 
Vocabulary for portal
Vocabulary for portalVocabulary for portal
Vocabulary for portalUsableLabs
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentalsUsableLabs
 

Viewers also liked (8)

8.Inheritance
8.Inheritance8.Inheritance
8.Inheritance
 
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
 
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
 
6.Flow control
6.Flow control6.Flow control
6.Flow control
 
1.Introduction to java
1.Introduction to java1.Introduction to java
1.Introduction to java
 
Vocabulary for portal
Vocabulary for portalVocabulary for portal
Vocabulary for portal
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentals
 

Similar to 5.Methods cs

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นTua Tor
 
คลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุคลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุBoOm mm
 
เมธอด กลุ่ม3
เมธอด กลุ่ม3 เมธอด กลุ่ม3
เมธอด กลุ่ม3 Piyada Petchalee
 
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6Ploy StopDark
 
การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.Ploy StopDark
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นPornsitaintharak
 

Similar to 5.Methods cs (20)

3.Expression
3.Expression3.Expression
3.Expression
 
Chapter3
Chapter3Chapter3
Chapter3
 
66
6666
66
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
 
บทที่ 8 Methods
บทที่ 8 Methodsบทที่ 8 Methods
บทที่ 8 Methods
 
METHODS
METHODSMETHODS
METHODS
 
Method
MethodMethod
Method
 
เมธอด
เมธอดเมธอด
เมธอด
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาส
 
เมธอด
เมธอดเมธอด
เมธอด
 
เมธอด
เมธอดเมธอด
เมธอด
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
คลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุคลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุ
 
Power point
Power pointPower point
Power point
 
เมธอด กลุ่ม3
เมธอด กลุ่ม3 เมธอด กลุ่ม3
เมธอด กลุ่ม3
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
 
การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 

More from UsableLabs

การจัดการความรู้
การจัดการความรู้การจัดการความรู้
การจัดการความรู้UsableLabs
 
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคการส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคUsableLabs
 
อาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดอาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดUsableLabs
 
ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่UsableLabs
 
30 web (blog2book)
30 web (blog2book)30 web (blog2book)
30 web (blog2book)UsableLabs
 
ภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆUsableLabs
 
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำUsableLabs
 
สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability UsableLabs
 
แนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนแนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนUsableLabs
 
correct_Portal manual
correct_Portal manual correct_Portal manual
correct_Portal manual UsableLabs
 
เทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาเทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาUsableLabs
 
Portal profile
Portal profilePortal profile
Portal profileUsableLabs
 
King's birthday
King's birthdayKing's birthday
King's birthdayUsableLabs
 
Portal manual (Original)
Portal manual (Original)Portal manual (Original)
Portal manual (Original)UsableLabs
 

More from UsableLabs (20)

การจัดการความรู้
การจัดการความรู้การจัดการความรู้
การจัดการความรู้
 
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคการส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
 
อาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดอาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูด
 
4.Oop
4.Oop4.Oop
4.Oop
 
ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่
 
30 web (blog2book)
30 web (blog2book)30 web (blog2book)
30 web (blog2book)
 
ภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆ
 
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
 
สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability
 
แนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนแนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมน
 
Health
HealthHealth
Health
 
Money
MoneyMoney
Money
 
correct_Portal manual
correct_Portal manual correct_Portal manual
correct_Portal manual
 
Lit
LitLit
Lit
 
Blog
BlogBlog
Blog
 
เทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาเทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษา
 
Portal profile
Portal profilePortal profile
Portal profile
 
Card sorting
Card sortingCard sorting
Card sorting
 
King's birthday
King's birthdayKing's birthday
King's birthday
 
Portal manual (Original)
Portal manual (Original)Portal manual (Original)
Portal manual (Original)
 

5.Methods cs

  • 1. 344-202 Introduction to Object-Oriented Programming การโปรแกรมเชิงวัตถุ 5. Methods Faculty of Technology and Environment Prince of Songkla University, Phuket Campus 2/2551
  • 2. Contents  Method overview  Call stack  Method signature  Static method & Instance method  Constructor  Overload method  Information hiding  get-set methods Object-Oriented Programming 2/2551 2
  • 3. Method overview  ปกติโปรแกรมจะทางานตามลาดับคาสั่งที่เขียนในโปรแกรม  การใช้เมธอดช่วยให้สามารถแบ่งการทางานของโปรแกรมเป็นส่วน ๆ  แต่ละเมธอดจะมีคาสั่งในการดาเนินการที่เกี่ยวข้องกัน  เมื่อมีการเรียกเมธอด (invoked / called) ก็จะมีการย้ายไปทางานที่ เมธอดนั้นจนเสร็จแล้วจึงกลับมาทางานต่อที่คาสั่งถัดไปหลังการเรียก เมธอด  เมธอดที่กาลังทางานจะได้รับ control ไป ซึ่งหากมีการเรียกใช้เมธอดอื่น ก็จะย้าย control ไปยังเมธอดที่ถูกเรียก เมื่อทาเสร็จแล้ว control ก็จะ กลับมายังเมธอดที่เรียกใช้ เรียกว่า Flow of control Object-Oriented Programming 2/2551 3
  • 4. Method  เมธอดแรกที่ถูกเรียกใช้ให้ทางานในจาวาคือ main() ซึ่งจะเรียกโดย JVM  JVM จะจดจาเมธอดที่เรียกใช้ได้วาเมธอดใดเรียกเมธอดใดโดยใช้ ่ โครงสร้างที่เรียกว่า call stack  เมธอดที่ถูกเรียกใช้งานจะถูกใส่ไว้ใน call stack  เมื่อเมธอดนั้นทางานเสร็จก็จะถูกเอาออกจาก call stack  หาก main() มีการเรียกใช้เมธอดดังนี้ Object-Oriented Programming 2/2551 4
  • 6. method signature  โครงสร้างเมธอด access_modifier return_type methodName(parameter_list) { … }  Access_modifier (public/private)  Return_type (ชนิดข้อมูลที่ส่งกลับไปให้คลาสที่เรียกใช้เมธอดนี้)  methodName (ชื่อเมธอด)  Parameter_list (ชนิดข้อมูลที่ต้องส่งให้กับเมธอด) Object-Oriented Programming 2/2551 6
  • 7. Static method VS instance method  ในจาวามีเมธอด 2 แบบคือ  Static method  Instance method  static method • เป็นเมธอดที่มีคาว่า static อยู่หน้าชื่อเมธอด public static void main(String[] args) { } • ตัวแปรหรือเมธอดที่เป็น static จะถูกจองพื้นที่ในขณะคอมไพล์โปรแกรม • สามารถเรียกใช้ได้ทันทีโดยไม่ต้องสร้าง object มาเรียกใช้งาน Object-Oriented Programming 2/2551 7
  • 8. Static method  เมธอดที่เป็น static จะเรียกใช้เมธอดและตัวแปรที่เป็น static โดยตรงได้  หากต้องการเรียกใช้เมธอดที่ไม่ใช่ static จะต้องสร้าง object มาเรียกใช้งาน Object-Oriented Programming 2/2551 8
  • 9. Static method  หากโปรแกรมนี้เมธอด sayHello() ไม่มีคาว่า static จะเกิดข้อผิดพลาด ขณะคอมไพล์ Object-Oriented Programming 2/2551 9
  • 10. Instance method  Instance method  เป็น method ภายในคลาสที่เป็นต้นแบบของวัตถุ ไม่ระบุคาว่า static  การเรียกใช้งานต้องสร้าง object ของคลาสขึ้นมาก่อน แล้วจึงเรียกใช้งานเมธอด ของ object . objectName methodName();  การจองพื้นที่ตัวแปรในเมธอดจะเกิดขณะรันโปรแกรม Object-Oriented Programming 2/2551 10
  • 11. Instance method  ตัวอย่างการใช้งาน instance method Object-Oriented Programming 2/2551 11
  • 12. Method with/without return type  เมธอดที่ไม่มการคืนค่า ให้กาหนด return_type เป็น void ี public void mailCheck() { … } การเรียกใช้ o.mailCheck();  เมธอดที่มีการคืนค่า ให้ระบุชนิดข้อมูลที่จะคืนค่า และใส่ค่าที่จะ return ในเมธอด public double calculateArea() { … return area; } การเรียกใช้ System.out.println(x.calculateArea()); Object-Oriented Programming 2/2551 12
  • 13. Method with/without return type  ชนิดข้อมูลของ Return type อาจเป็น primitive data types หรือชนิด ข้อมูลที่เป็น class เช่น String  หากเป็น method ที่มีการคืนค่า ต้องมีการระบุคาสั่ง return ไว้ใน method นั้นด้วยว่าตัวแปรที่จะส่งคืนคืออะไร  ชนิดข้อมูลของตัวแปรที่ส่งคืน ต้องเป็นชนิดเดียวกันกับ return-type Object-Oriented Programming 2/2551 13
  • 14. Method with/without parameter เมธอดที่ประกาศในคลาส Test class Test { // เมธอดที่ไม่มีการรับ parameter การเรียกใช้เมธอดใน main() … public void printHello() { Test t = new Test(); System.out.println(“Hello”); t.printHello(); } t.multiply(5,9); //เมธอดที่มีการรับ parameter … public void multiply(int x, int y) { System.out.println(x*y); } เรียกว่า argument คือค่าที่ส่งให้เมธอด } Object-Oriented Programming 2/2551 14
  • 15. Passing parameter to a method  การส่งค่าให้แก่เมธอดทาได้ 2 แบบ  Pass-by-value ส่งเฉพาะข้อมูล คือการส่งค่า primitive data type  Pass-by-reference ส่งค่าแบบอ้างอิง คือการส่ง address ซึ่งใช้ในการส่ง object Object-Oriented Programming 2/2551 15
  • 16. Declare method with parameter Object-Oriented Programming 2/2551 16
  • 17. Constructor  Constructor คือ เมธอดทีมีชื่อเหมือนคลาส และไม่มการระบุ return type ่ ี หรือ void  หน้าที่หลักคือ กาหนดค่าเริ่มต้นให้กบ attribute ในคลาส ั  เมื่อเราสร้างวัตถุด้วยคาสั่ง new จะเป็นการเรียกใช้ Constructor method เช่น Circle a = new Circle(); // default constructor  ปกติแล้ว ทุกคลาสจะมี default constructor คือ constructor ที่ไม่มีการส่ง parameter ใดๆ  เราไม่ต้องประกาศ default constructor แต่จาวาจะสร้างให้เอง Object-Oriented Programming 2/2551 17
  • 18. Constructor  Class Circle มี default constructor method คือ Circle(){ } จาวาจะสร้างให้เองในระหว่างการคอมไพล์ Object-Oriented Programming 2/2551 18
  • 19. Constructor radius 0 a area 0.0  เมื่อเราสร้าง object ด้วยคาสั่ง Circle a = new Circle(); จะเป็นการเรียก constructor method Circle() ซึ่งไม่ได้ทาการกาหนดค่า ใดๆให้ attribute ของ Circle ดังนั้น radius จึงยังมีค่าตาม default คือ 0 Object-Oriented Programming 2/2551 19
  • 20. Constructor  เรามักใช้ Constructor กาหนดค่าเริ่มต้นแก่ attribute ตอนสร้าง object radius 5 a area 0.0 Object-Oriented Programming 2/2551 20
  • 21. Constructor  เราสามารถส่ง parameter ให้แก่ Constructor ได้ Object-Oriented Programming 2/2551 21
  • 22. Overloaded methods  ภายในคลาสสามารถมีเมธอดชื่อเดียวกันได้หลายเมธอด  แต่เมธอดเหล่านี้ต้องมีชนิดหรือจานวนของ parameter ไม่เหมือนกัน  เมื่อมีการเรียกใช้ จาวาจะตรวจสอบชนิดหรือจานวนของ argument ที่ส่ง มาว่าตรงกับเมธอดตัวใด ก็จะให้เมธอดตัวนั้นทางาน  เมธอดที่มีชื่อเดียวกันเหล่านี้เรียกว่า overloaded methods Object-Oriented Programming 2/2551 22
  • 23. Overloaded methods Multiply int * int 20 Multiply double * double 20.0 Object-Oriented Programming 2/2551 23
  • 24. OO concept – Information Hiding  ในการพัฒนาตามแนวทาง OOP จะมีการใช้งานคลาสที่ได้พฒนาไว้แล้วั  จากนั้นเขียนโปรแกรมเพื่อสร้าง object จากคลาสนั้นมาใช้งาน เรียก โปรแกรมนี้ว่า client program  ผู้พัฒนา client program ต้องรู้ว่าคลาสที่จะใช้งาน มีตัวแปรและเมธอด อะไรให้ใช้ แต่ไม่จาเป็นต้องรู้ว่าเมธอดนั้นมีการทางานอย่างไร  ตัวแปรหรือเมธอดของคลาสบางตัวไม่ต้องการให้มีการแก้ไขได้จากคลาส หรือโปรแกรมอื่นโดยตรง Object-Oriented Programming 2/2551 24
  • 25. Why encapsulation?  เนื่องจาก object อาจถูกเรียกใช้จากหลายคลาสพร้อม ๆ กันได้ จึงอาจ ต้องซ่อนตัวแปรหรือเมธอดไว้ไม่ให้ถูกแก้ไขคุณสมบัติบางอย่างที่อาจ ส่งผลกระทบต่อคลาสอื่น  การปกป้องเมธอดหรือตัวแปร ทาได้โดยการกาหนดระดับการเข้าถึงตัว แปรและเมธอด (access modifier) Object-Oriented Programming 2/2551 25
  • 26. Access modifier  Access modifier บอกระดับการ เข้าถึงของตัวแปรและเมธอด  public - คลาสอื่นสามารถ เรียกใช้ตัวแปรหรือกาหนดค่าให้ ตัวแปรได้โดยตรง • เช่น c.radius = 5;  private - ตัวแปรหรือเมธอดที่เป็น private ไม่สามารถถูกเข้าถึงหรือ เรียกใช้จาก method อื่นได้ โดยตรง Object-Oriented Programming 2/2551 26
  • 27. การประกาศ Get-set method  การเข้าถึงตัวแปร private จะทาผ่านเมธอดที่เป็น public  เมธอดที่ใช้เข้าถึงตัวแปร private ประกอบด้วย  set method ใช้กาหนดค่าให้ตัวแปรคลาส  get method ใช้รับค่าจากตัวแปรคลาส Object-Oriented Programming 2/2551 27
  • 28. EX. Get-set method of id Object-Oriented Programming 2/2551 28
  • 29. แบบฝึกหัด  สร้างคลาสชือ Account ่  ประกาศตัวแปร name และ balance เป็น private  สร้าง get-set method ของตัวแปรที่เป็น private  เขียนโปรแกรม AccountDemo  กาหนดค่า name = “Harry Potter”  กาหนดค่า balance = 10000  เรียก get-set method แสดงค่า name, balance Object-Oriented Programming 2/2551 29