SlideShare a Scribd company logo
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

Python - object oriented
Python - object orientedPython - object oriented
Python - object oriented
Learnbay Datascience
 
Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674
Lokesh Kakkar Mobile No. 814-614-5674
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
José Paumard
 
OOP-Advanced Programming with c++
OOP-Advanced Programming with c++OOP-Advanced Programming with c++
OOP-Advanced Programming with c++
Mohamed Essam
 
Generics and collections in Java
Generics and collections in JavaGenerics and collections in Java
Generics and collections in Java
Gurpreet singh
 
OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
Ranjith Sekar
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
Clara Patricia Avella Ibañez
 
07 java collection
07 java collection07 java collection
07 java collection
Abhishek Khune
 
Class, object and inheritance in python
Class, object and inheritance in pythonClass, object and inheritance in python
Class, object and inheritance in python
Santosh Verma
 
Main method in java
Main method in javaMain method in java
Main method in java
Hitesh Kumar
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
yugandhar vadlamudi
 
encapsulation, inheritance, overriding, overloading
encapsulation, inheritance, overriding, overloadingencapsulation, inheritance, overriding, overloading
encapsulation, inheritance, overriding, overloading
Shivam Singhal
 
Lecture 7 Control Statements.pdf
Lecture 7 Control Statements.pdfLecture 7 Control Statements.pdf
Lecture 7 Control Statements.pdf
SalmanKhurshid25
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
Pratik Soares
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
Rajiv Srivastava
 
Introduction to class in java
Introduction to class in javaIntroduction to class in java
Introduction to class in java
kamal kotecha
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
경원 이
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
Jennifer Estrada
 
Object-oriented programming
Object-oriented programmingObject-oriented programming
Object-oriented programming
Neelesh Shukla
 
18 Curso POO en java - contenedores
18 Curso POO en java - contenedores18 Curso POO en java - contenedores
18 Curso POO en java - contenedores
Clara Patricia Avella Ibañez
 

What's hot (20)

Python - object oriented
Python - object orientedPython - object oriented
Python - object oriented
 
Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
OOP-Advanced Programming with c++
OOP-Advanced Programming with c++OOP-Advanced Programming with c++
OOP-Advanced Programming with c++
 
Generics and collections in Java
Generics and collections in JavaGenerics and collections in Java
Generics and collections in Java
 
OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
 
07 java collection
07 java collection07 java collection
07 java collection
 
Class, object and inheritance in python
Class, object and inheritance in pythonClass, object and inheritance in python
Class, object and inheritance in python
 
Main method in java
Main method in javaMain method in java
Main method in java
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
 
encapsulation, inheritance, overriding, overloading
encapsulation, inheritance, overriding, overloadingencapsulation, inheritance, overriding, overloading
encapsulation, inheritance, overriding, overloading
 
Lecture 7 Control Statements.pdf
Lecture 7 Control Statements.pdfLecture 7 Control Statements.pdf
Lecture 7 Control Statements.pdf
 
Exception handling in java
Exception handling in javaException handling in java
Exception handling in java
 
Spring annotation
Spring annotationSpring annotation
Spring annotation
 
Introduction to class in java
Introduction to class in javaIntroduction to class in java
Introduction to class in java
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Object-oriented programming
Object-oriented programmingObject-oriented programming
Object-oriented programming
 
18 Curso POO en java - contenedores
18 Curso POO en java - contenedores18 Curso POO en java - contenedores
18 Curso POO en java - contenedores
 

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
 
1.Introduction to java
1.Introduction to java1.Introduction to java
1.Introduction to java
UsableLabs
 
Vocabulary for portal
Vocabulary for portalVocabulary for portal
Vocabulary for portal
UsableLabs
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentals
UsableLabs
 

Viewers also liked (6)

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
 
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

3.Expression
3.Expression3.Expression
3.Expression
UsableLabs
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
Saranyu Srisrontong
 
บทที่ 8 Methods
บทที่ 8 Methodsบทที่ 8 Methods
บทที่ 8 Methods
Kanchana Theugcharoon
 
METHODS
METHODSMETHODS
METHODS
kessara61977
 
Method
MethodMethod
เมธอด
เมธอดเมธอด
เมธอด
Pannipa Saetan
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 
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
IMC Institute
 
เมธอด
เมธอดเมธอด
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Tua Tor
 
คลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุคลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุ
BoOm mm
 
เมธอด กลุ่ม3
เมธอด กลุ่ม3 เมธอด กลุ่ม3
เมธอด กลุ่ม3
Piyada Petchalee
 
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6
โปรแกรมย่อยและฟังก์ชัน มาตรฐาน 6Ploy StopDark
 
การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.การเขียนโปรแกรมเพื่องานอาชีพ 6.
การเขียนโปรแกรมเพื่องานอาชีพ 6.Ploy StopDark
 

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 คลาส
 
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
 
เมธอด
เมธอดเมธอด
เมธอด
 
เมธอด
เมธอดเมธอด
เมธอด
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
คลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุคลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุ
 
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
 
Health
HealthHealth
Health
UsableLabs
 
Money
MoneyMoney
Money
UsableLabs
 
correct_Portal manual
correct_Portal manual correct_Portal manual
correct_Portal manual
UsableLabs
 
Lit
LitLit
Blog
BlogBlog
เทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาเทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษา
UsableLabs
 
Portal profile
Portal profilePortal profile
Portal profile
UsableLabs
 
Card sorting
Card sortingCard sorting
Card sorting
UsableLabs
 
King's birthday
King's birthdayKing's birthday
King's birthday
UsableLabs
 
Portal manual (Original)
Portal manual (Original)Portal manual (Original)
Portal manual (Original)
UsableLabs
 

More from UsableLabs (19)

การจัดการความรู้
การจัดการความรู้การจัดการความรู้
การจัดการความรู้
 
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคการส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
 
อาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดอาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูด
 
ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่
 
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)
 

Recently uploaded

Artificial Intelligence in Education2.pdf
Artificial Intelligence in Education2.pdfArtificial Intelligence in Education2.pdf
Artificial Intelligence in Education2.pdf
Prachyanun Nilsook
 
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdfความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
Pattie Pattie
 
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกันbio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
CholapruekSangkamane1
 
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docxส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
ArnonTonsaipet
 
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
Faculty of BuddhismMahachulalongkornrajavidyalaya Roi Et Buddhist College
 
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdfเรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
ssuser0ffe4b
 

Recently uploaded (6)

Artificial Intelligence in Education2.pdf
Artificial Intelligence in Education2.pdfArtificial Intelligence in Education2.pdf
Artificial Intelligence in Education2.pdf
 
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdfความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
ความสุจริตทางวิชาการ “เชื่อมไทยเชื่อมโลก”.pdf
 
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกันbio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
bio62สอวน.ชีววิทยา-ชีววิทยาปี62-ข้อสอบแข่งกัน
 
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docxส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
ส่วนหน้า สมฐ. วิทยาศาสตร์ ม.1 เล่ม 1.docx
 
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
ภาษาอังกฤษ สำหรับนักวิปัสสนา เพื่อฝึกปฎิบัติ
 
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdfเรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
เรียนภาษาจีนด้วยตนเอง ฟรี ๒๔ ชั่วโมง.pdf
 

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