. .

BAGIAN KE TUJUH: Java Classes - Java and Inheritance Pada Netbeans IDE

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Senin, Januari 09, 2017 No comments

BAGIAN KE TUJUH: Java Classes - Java and Inheritance 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.

Konsep lain yang penting dalam pemrograman berorientasi objek adalah INHERITANCE a.k.a WARISAN. INHERITANCE yang akan menjadi lebih jelas dengan beberapa contoh pemrograman. Tapi pada dasarnya, ia memiliki satu class sebagai class induk-parent class (disebut super class) dan class lain sebagai anak dari parent class (sub class). sub class dikatakan berasal dari parent class. Alasan untuk memiliki sub class adalah untuk menjaga informasi yang terpisah. sub class dapat mewarisi/inherit semua metode dan bidang dari induknya/parent class, tapi bisa juga melakukan hal lain sendiri.
Sebagai contoh INHERITANCE, kita akan membuat sub class yang menangani informasi tentang sertifikat. 
  • Jika siswa mendapat grade "A", kita akan memberikan penghargaan Certificate of Excellence
  • Jika siswa mendapat grade "B", kita akan memberikan penghargaan Certificate of Achievement;
  • Jika siswa mendapat grade "C", kita akan memberikan penghargaan Certificate of Achievement;
  • grade lain tidak ada sertifikat yang diberikan.

Tapi permasalahan tentang sub class adalah untuk menjaga data sertifikat yang terpisah dari data ujian. Namun, kita mungkin masih ingin mengakses beberapa informasi tentang ujian, kita bahkan dapat mengakses metode yang mengubah skor menjadi nilai, dan semua dari sub class. Jadi, membuat new class dengan mengklik File > New File dari menu NetBeans. Ketika kotak dialog muncul, pilih Java bawah Kategori heading, dan Java Class bawah File Types. Klik Next, dan masukkan Certificates sebagai nama new class. Klik Finish. Ketika kelas baru dibuat, tambahkan field private String dan menyebutnya Certificates. New class kita akan terlihat 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 Certificates {
    
    private String certificate;
    
}
Untuk membuat sub class dari Java parent class (disebut super class), kata kunci extends digunakan. Kita kemudian ikutkan kata kunci "extends" dengan parent class ingin kita  perpanjang-extends. Kita ingin membuat sub class dari Class StudentResults, yang akan menjadi kelas super-parent class dan Class Certificate akan menjadi sub class.

Setelah "public class Sertifikat" dalam baris kodenya kita tambahkan "extends StudentResults". Maka kode kita akan terlihat 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 Certificates extends StudentResults {
    
    private String certificate;
    
}
Kita sekarang telah membuat sebuah sub kelas yang mewarisi/inherit dari kode Class StudentResults.

Sama seperti Class StudentResults kita dapat membuat konstruktor untuk Class Certificate yang baru. Ketika kita membuat sebuah objek dari Class Certificate, Java pertama-tama akan memanggil konstruktor kita.

Namun, hanya satu konstruktor yang bisa dipanggil. Jika kita panggil konstruktor baru dari Class Certificate semua nilai-nilai default kita diatur untuk StudentResults dan field class tidak akan ditetapkan. Untuk menyiasati hal ini, ada sebuah kata kunci/key word yang disebut super. Hal ini membuat panggilan ke konstruktor dari kelas super. Tambahkan constructor berikut untuk Class Certificate kita:
/*
 * 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 Certificates extends StudentResults {
    
    private String certificate;
    Certificates(){
        super();
        certificate="No Certificate Awarded";
    }
}
Nama konstruktor adalah sama dengan nama class: Certificates. Baris pertama dari kode di antara kurung keriting adalah super memanggil/menyebut (perhatikan kurung bulat setelah super). Ketika baris ini di eksekusi, semua bidang standar kita di setting/buat di StudentResults akan ditetapkan.

Baris kedua kode di konstruktor menetapkan nilai default untuk field String disebut certificate.

Untuk menguji class baru kita, kita kembali ke class ExamDetails, yang merupakan metode utama kita. Komentar yang keluar dari baris kode yang kita miliki sejauh ini, ada cara cepat untuk melakukan ini adalah untuk menyorot semua kode, dan kemudian klik ikon komentar di NetBeans toolbar:
Untuk menghilangkan komentar, sorot kode lagi dan klik ikon tanda komentar. Sekarang tambahkan baris berikut untuk membuat objek baru dari class kita:
Certificates c1 = new Certificates();
Jendela kode kita akan terlihat 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) {
////==================================================================
////                      CONSTRUCTOR ONE
////==================================================================
//StudentResults studentOne = new StudentResults();
//String student_name = studentOne.fullName();
//System.out.println( student_name );
//
////==================================================================
////                      CONSTRUCTOR TWO
////==================================================================
//StudentResults studentTwo = new StudentResults("female");
//String student_name2 = studentTwo.fullName();
//System.out.println( student_name2 );

  Certificates c1 = new Certificates();
    }   
}
Tujuan dari pemberian fungsi Java Comment disini adalah agar barisan kode tersebut tidak dibaca sebagai isi barisan kode secara keseluruhan, dan bila pada kasus tertentu kita membutuhkan kode yang sudah kita buat menjadi "comment" dapat kita hapus fungsi "comment"nya dan diperhitungkan lagi sebagai barisan kode.
Nama objek hanya c1. Jenis objek adalah objek Certificates.
Untuk memastikan bahwa kita dapat mengakses metode dari Class StudentResults, tambahkan baris kode ini di bawah objek c1 baru:
String exam = c1.examName("VB");
Hal Ini adalah persis sama seperti yang kita lakukan sebelumnya: disebut metode examName Class StudentResults examName method of the StudentResults class. Tetapi saat ini kita menggunakan Certificates objek dan bukan StudentResults objek.
Tambahkan baris kode cetak println() dan kode kita akan terlihat 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) {
////==================================================================
////                      CONSTRUCTOR ONE
////==================================================================
//StudentResults studentOne = new StudentResults();
//String student_name = studentOne.fullName();
//System.out.println( student_name );
//
////==================================================================
////                      CONSTRUCTOR TWO
////==================================================================
//StudentResults studentTwo = new StudentResults("female");
//String student_name2 = studentTwo.fullName();
//System.out.println( student_name2 );

  Certificates c1 = new Certificates();
  
  String exam = c1.examName("VB");
  System.out.println( exam );
    }   
}
Jalankan programnya dan hasilnya :
Jadi metode dari kelas induk - parent class (class super) telah dipanggil ke tindakan - action. Kita sekarang dapat menambahkan metode untuk class child (sub class). Tambahkan metode berikut untuk Class Certificate kita, tepat di bawah konstruktor:
/*
 * 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 Certificates extends StudentResults {
    
    private String certificate;
    Certificates(){
        super();
        certificate="No Certificate Awarded";
    }
    String certificateAwarded(int aScore){

         String aGrade=examGrade(aScore);
        
    if (aGrade.equals("Grade Is A")){
        this.certificate="Certificate of Excellence";
    }
    else if (aGrade.equals("Grade Is B")){
        this.certificate="Certificate of Achievment";
    }
    else if (aGrade.equals("Grade Is C")){
        this.certificate="Certificate of Achievment";
    }
    else {
        this.certificate="No Certificate Awarded";
    }    
    return this.certificate;
  }
}

Metode ini disebut certificateAwarded, dan diatur untuk mengembalikan nilai String. Di dalam metode kurung bulat, kita menyerahkan exam scoreBaris pertama dari metode ini adalah :
String aGrade = examGrade(aScore);
The method examGrade is a method in the parent class. It's the one we set up in StudentResults. This method, remember, was set up to return a grade and some extra text, "Grade is A", "Grade is B", etc. We're now calling it from the child class. The IF Statement checks the value of the aGrade string to see what's in it. Depending on the value a new string is returned, awarding a particular certificate: Excellence, Achievement, or no certificate.

Click back on your ExamDetails class, and add the following line:

Metode examGrade adalah metode di class induk. Ini yang kita set/buat di StudentResults. Metode ini, dibuat untuk mengembalikan Grade dan beberapa teks tambahan, "Grade Is A", "Grade Is B", dll Kita sekarang memanggilnya dari child classIF Statement akan memeriksa nilai string aGrade untuk melihat nilai apa yang ada di dalamnya. Tergantung pada nilai string yang baru dikembalikan, pemberian sertifikat tertentu: Excellence, Achievement, or no certificate.
Kita kembali pada class ExamDetails, dan tambahkan baris berikut :
String award = c1.certificateAwarded(50);
baris kode ini memanggil metode baru, dan mempunyai nilai 50 - certificateAwarded(50). Hasilnya akan dikembalikan ke String telah disebut penghargaan/award. Mengadaptasi metode baris cetak dalam kode seperti ini:
System.out.println( exam + " " + award );
class ExamDetails kita akan terlihat 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) {
////==================================================================
////                      CONSTRUCTOR ONE
////==================================================================
//StudentResults studentOne = new StudentResults();
//String student_name = studentOne.fullName();
//System.out.println( student_name );
//
////==================================================================
////                      CONSTRUCTOR TWO
////==================================================================
//StudentResults studentTwo = new StudentResults("female");
//String student_name2 = studentTwo.fullName();
//System.out.println( student_name2 );

  Certificates c1 = new Certificates();
  
  String exam = c1.examName("VB");
  String award = c1.certificateAwarded(50);
  System.out.println( exam +" " +award);
    }   
}
Dan baris kode untuk Class StudentResults adalah :
/*
 * 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";
}

    StudentResults(String gender) {

      Full_Name  = gender;
      Exam_Name  = "";
      Exam_Score = "";
      Exam_Grade = "";

    }
    String fullName() {
      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 an 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;  //Nilai yang kembali dan di set untuk class Certificate
        }
    }    
Dan jalankan programnya, Hasilnya :
Hati-hati dalam penulisan kode bertipe String, sebab hanya karena salah dalam memberi spasi saja akan menghasilkan output : "No Certificate Awarded", seperti kesalahan yang saya buat pada Class StudentResults pada metode  examGrade =" " dimana pada nilai kembalinya saya memberikan 2x spasi   return "Grade isₕⱼ" + examGrade;   akan menghasilkan output "No Certificate Awarded", sebab pada Class Certificate :
      
    if (aGrade.equals("Grade Is A")){
        this.certificate="Certificate of Excellence";
    }
    else if (aGrade.equals("Grade Is B")){
        this.certificate="Certificate of Achievment";
    }
    else if (aGrade.equals("Grade Is C")){
        this.certificate="Certificate of Achievment";
    }
    else {
        this.certificate="No Certificate Awarded";
    }    
    return this.certificate;   
perintah pemanggil yang diterima hanya menjadi :
else {
        this.certificate="No Certificate Awarded";
    }    
    return this.certificate; 
Jadi penulisan kode String yang sensitif harus benar-benar diperhatikan. Jadi kita telah menggunakan INHERITANCE a.k.a WARISAN untuk menjaga class ExamDetails terpisah dari Class Certificate. Child Class (sub class) diakses oleh metode induknya (super), sehingga kita mampu menghasilkan output data dari keduanya.

INHERITANCE, adalah meningkatkan (memperpanjang) - enhancing (extending) kegunaan dari kelas induk - parent class. Kita menyimpan data yang terpisah dengan menempatkan dalam child class. Tapi child class tetap terkait dalam beberapa cara dengan parent class, dan dapat digakses beberapa atau semua kode. 
Pada bagian berikutnya, Kita akan belajar bagaimana menangani kesalahan pada Java - Java Error Handling.

0 komentar:

Posting Komentar