. .

BAGIAN KE TUJUH: Java Classes - Method Overloading Pada Netbeans IDE

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Senin, Desember 26, 2016 No comments

BAGIAN KE TUJUH: Java Classes - Method Overloading Pada Netbeans IDE, Sebelum kita meneruskan mempelajari pembelajaran ini, ada baiknya kita baca artikel-artikel sebelumnya yang terhubung dengan langkah-langkah pembelajaran ini (Link) BAHASA PEMROGRAMAN JAVA PADA NETBEANS IDE.

Buka kembali ke Java Programnya, masih dengan packages exams dan class ExamDetails dan class StudentResults yang sudah kita buat sebelumnya. Kita dapat memiliki metode dalam kode pemrograman dengan nama yang sama. Dalam kode yang kita memiliki metode yang disebut examScore. Output untuk metode ini akan membaca "30 out of 50". Tapi misalkan kita memiliki exam di mana skor maksimum tidak 50 tapi 30 atau bahkan 100. Karena kita sudah menetapkan bagian "out of 50", tidak ada cara lagi untuk mengganti metode examScore. Dengan menyiapkan metode examScore lain, namun, hal  ini bisa menimpa skor maksimal kita. Dalam Object Oriented pemrograman, memiliki metode dengan nama yang sama dikenal sebagai Metode Overloading atau disebut juga Static Polymorphism, istilah yang lebih teknis.
Terimakasih pada sumber pembelajaran ini :
Method Overloading [Prime Source
Method Overloading in Java with examples
Method Overloading in Java
http://www.javatpoint.com/method-overloading-in-java
Function overloading
https://en.wikipedia.org/wiki/Function_overloading
(Note ♚ : Banyak sumber-sumber pembelajaran di Internet yang tersedia, oleh sebab itu, sebaiknya disamping membaca source literatur/refrensi tersebut kita lakukan juga Amati-pengamatan, Tiru-peniruan, dan Modifikasi sebagai pembuktian (ATM =  Amati, Tiru, Modifikasi), karena ada juga source literatur/refrensi yang tidak tepat antara teori yang mereka tulis di Internet dan pembuktiannya, mudah-mudahan disini saya Christianto "gemBLOnG" Dharma Wibowo mahasiswa tingkat pertama STMIK BUMI GORA Mataram, Nusa Tenggara Barat, selalu melakukan ATM diatas, dan jika filterisasi ATM tersebut baik dan benar baru kemudian saya tulis di learning blog ini sebagai media dokumentasi pembelajaran secara pribadi dan sekaligus membagi kepada sesama pemula seperti saya ini yang sedang belajar tentang ilmu-ilmu komputer) 
Dalam Object Oriented pemrograman, memiliki metode dengan nama yang sama dikenal sebagai Metode Overloading atau disebut juga Static Polymorphism,
Metode Overloading adalah fitur yang memungkinkan class untuk memiliki dua atau lebih metode dengan nama yang sama, jika daftar argumen mereka berbeda. Daftar argumen dapat berbeda di :
  • Jumlah parameter.
  • Jenis Data parameter.
  • Urutan tipe data parameter.
Catatan Penting : Metode Overloading atau disebut juga Static Polymorphism, dikenal juga sebagai waktu kompilasi mengikat/compile time binding atau awal mengikat/early binding. Sedangkan Static Binding sendiri terjadi pada waktu kompilasi. Metode overloading adalah contoh statis binding dimana pengikatan metode panggilan untuk definisi yang terjadi pada saat kompilasi terjadi.
Kita kembali kepada Java Program kita, mari kita lihat bagaimana metode overloading itu dilakukan. Kita tambahkan metode berikut untuk class StudentResults:
String examScore(int aScore, String maximumScore) {

Exam_Score = aScore + maximumScore;
return Exam_Score;

}
Perbedaan utama yang perlu diperhatikan di sini adalah jumlah argumen. Sebelumnya, metode examScore hanya memiliki satu argumen diantara kurung bulat:
String examScore( int aScore )
Kita memiliki argumen integer disebut aScore( int aScore ). Dalam metode overloading, kita mengubah jumlah atau jenis argumen antara kurung bulat. Kita tidak dapat melakukannya di dalam kode baris pertama yang sama tapi kode baris yang berbeda. Jadi kita tidak bisa melakukan seperti ini:
String examScore(int aScore) {

Exam_Score = aScore + " out of 100"; // ERROR
return Exam_Score;

}
Satu-satunya perubahan di sini adalah teks "out of 100". Meskipun perubahan ini membuatnya berbeda dengan metode examScore sebelumnya, Java akan memberikan pesan kesalahan, karena kita memiliki argumen yang sama pada baris pertama, seperti sebelumnya. Kita tidak bisa hanya melakukan perubahan nama variabel antara kurung bulat, jelas ini akan membuat kesalahan dalam pengkodean kita :
String examScore( int anotherScore ) //ERROR
Kita akan tetap mendapatkan error karena variabel masih int seperti sebelumnya. kita dapat mengubah jenis variabel itu, seperti ini:
String examScore( String anotherScore )
Sekarang, argumennya sudah berbeda - variabel antara kurung bulat adalah String bukan int.

Dalam metode examScore baru, kaita memiliki dua argumen, satu adalah int dan satu String. Dan ini berbeda argumen/tanda baris. Jadi jika kita ingin menggunakan metode overloading, pastikan bahwa tidak menduplikasi metode lain dengan nama yang sama.
Tambahkan beberapa baris kode pada class StudentResults yang sudah kita buat sebelumnya, rubah-tambah baris kode tersebut menentukan dua metode dengan nama yang sama:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package exams;
/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class StudentResults {
    private String Full_Name;
    private String Exam_Name;
    private String Exam_Score;
    private String Exam_Grade;
    
    StudentResults(){
        Full_Name ="No Name Given";
        Exam_Name ="Unknown";
        Exam_Score ="No Score";
        Exam_Grade ="Unknown";
    }
    
    String fullName(String aName){
        Full_Name = aName;
        return Full_Name;
        
    }
    String examName(String examCode){
        if (examCode.equals("VB")){
            Exam_Name = "Visual Basic .NET";
        }
        else if (examCode.equals("JV")){
            Exam_Name = "Java";
        }
        else if (examCode.equals("C#")){
            Exam_Name = "C# .NET";
        }
        else if (examCode.equals("PH")){
            Exam_Name = "PHP";
        }
        else{
            Exam_Name ="No Exam Selected";
        }
        return Exam_Name;
    }
        /**
         * Original Method
         * 
         * @param aScore
         * @return exam score out of 50
         */
        String examScore(int aScore){
            Exam_Score = aScore + " out of 50";
            return Exam_Score;
        }
        /**
         * Overloaded Method
         * 
         * @param aScore
         * @param maximumScore - let's you set your own maximum score
         * @return an exam score
         */
        String examScore (int aScore, String maximumScore){
            Exam_Score = aScore + maximumScore;
            return Exam_Score;
        }
        String examGrade (int aScore){
            Exam_Grade = this.getGrade(aScore);
            return Exam_Grade;
        }
        private String getGrade (int aScore){
            String examGrade ="";
            if (aScore>=0 && aScore<=10){
                examGrade="E";
            }
            else if (aScore>=11 && aScore<=20){
                examGrade="D";
            }
            else if (aScore>=21 && aScore<=30){
                examGrade="C";
            }
            else if (aScore>=31 && aScore<=40){
                examGrade="B";
            }
            else if (aScore>=41){
                examGrade="A";
            }
            return "Grade is  " + examGrade;
        }
    }    
Perhatikan komentar yang telah kita tambahkan, di sini, salah satu @param, dan @return. ini dikenal sebagai komentar javadoc. Mereka akan tampil dalam kotak popup untuk membantu orang lain dan kita sendiri ketika menggunakan kode tersebut, jika kita lupa metode apa yang seharusnya dilakukan dan digunakan, dan argumen/parameter apa yang digunakan.  Karena kita memiliki lebih dari satu examScore, metode ini dikatakan kelebihan beban atau Overloading Methods.

Kita dapat melihat bahwa ketika kita menggunakannya, sekarang kita beralih ke class ExamDetails :
kotak popup -  examScore (Original Method)
kotak popup -  examScore (Overloaded Method)
Kotak daftar popup metode class menunjukkan dua untuk examScore, yang pertama untuk Original Method, dan yang kedua untuk Overloaded Method. Kita bisa menggunakannya sesuatu seperti ini :
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package exams;
/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class ExamDetails {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        StudentResults aStudent = new StudentResults();
        
        String sName = aStudent.fullName("Bill Gates");
        String exam = aStudent.examName("VB");
        String score = aStudent.examScore(30);
        String score2 = aStudent.examScore(60," out of 100");
        String grade = aStudent.examGrade(30);
        
        System.out.println( sName );
        System.out.println( exam );
        System.out.print( score ); System.out.println( grade );
        System.out.print( score2 ); System.out.println(" Grade is  A");       
    }
   
}
Dan Outputnya :
Sekarang kita sudah memahami dalam beberapa bahasa pemrograman , fungsi overloading atau overloading metode adalah kemampuan untuk membuat beberapa metode dengan nama yang sama dengan implementasi yang berbeda. Panggilan ke fungsi overload akan menjalankan implementasi khusus dari fungsi yang sesuai dengan konteks panggilan, memungkinkan satu fungsi panggilan untuk melakukan tugas yang berbeda tergantung pada konteks.
Seperti contoh Java Program diatas kelebihan beban metode, untuk memanggil yang kedua, sebuah objek harus dilalui sebagai parameter , sedangkan metode pertama boleh tidak memerlukan parameter, dan disebut dengan medan parameter kosong (default). Sebuah kesalahan umum akan menetapkan nilai default ke objek dalam metode kedua, yang akan mengakibatkan panggilan ambigu error, karena compiler tidak akan tahu yang mana dari dua metode yang digunakan.

Pada bagian berikutnya, kita akan membahas pembelajaran Constructor Overloading.

0 komentar:

Posting Komentar