Senin, 09 Juli 2012

Bab V

,

BAB 5

Interface , Innerclass , Abstrak


Teori Singkat Kelas Inner

Dimana programmer membolehkan untuk mnyisipkan suatu kelas ke dalam kelas lainnya.
Kelas sisipan ini disebut kelas Inner.
Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh
kelas luarnya.
Beberpa ketentuan kelas Inner :
a) Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan
    menghasilkan dua file *.class, yaitu Luar.class dan Luar$Inner.class
b) Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner.
c) Kelas Inner dapat diberi modifier akses public, atau protected, atau
    default, ataupun private.
d) Untuk mengakses referensi this dari kelas luar digunakan bentuk
    NamaKelasLuar.this.
e) Kelas Luar ikut bertanggung-jawab dalam instansiasi kelas Inner (yang
    non static) . Kalau objek kelas Luar adalah a, dan objek kelas Inner adalah
    b, maka sintaks yang benar adalah :
    Luar a = new Luar();
    Luar.Inner b = a.new Inner();
f) Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat
   sendiri tanpa melalui kelas Luarnya, (Artinya kelas Inner tidak dapat
   mengakses attribute ataupun method non static milik kelas Luarnya).


Contoh Program dasar pada Innerclass :
Program InnerClass pada c# .
using System;
using inner;

namespace inner
{
  class kelaspendaftaran // sebagai kelas luar
  {
       public class kelasmusik // sebagai kelas dalam
       {
              public void piano()
              {
                     Console.WriteLine("Selamat datang di belajar musik bersama");
                     Console.WriteLine("=======<> R I Z K I <> PIANIS <>=======");
                     Console.WriteLine("=======<> B A N Y U W A N G I <>=======");
                    
              }
       }
  }



 class Program
  {
       static void Main(string[] args)
       {
              kelaspendaftaran.kelasmusik d = new kelaspendaftaran.kelasmusik();
              d.piano();
              Console.ReadKey(true);
       }
   }
}


Program InnerClass pada C++ .

#include <iostream>
#include <cstdlib>
#include <iostream>

using namespace std;

class kelaspendaftaran // sebagai kelas luar
{
    public : class kelasmusik // sebagai kelas dalam
    {
    public : void piano()
    {
        cout << "Selamat datang di belajar musik bersama" << endl;
        cout << "=======<> R I Z K I <> PIANIS <>=======" << endl;
        cout << "=======<> B A N Y U W A N G I <>=======" << endl;
    }
    };
};
int main(void) {
    kelaspendaftaran::kelasmusik d = kelaspendaftaran::kelasmusik();
    d.piano();
    system("PAUSE");
}

Program InnerClass pada Java .
package inner;
class kelaspendaftaraan //sebagai kelasLuar
{
    class kelaspiano  //sebagai kelasDalam
    {
    void piano(){
    System.out.println("Selamat datang di belajar musik bersama");
    System.out.println("=======<> R I Z K I <> PIANIS <>=======");
    System.out.println("=======<> B A N Y U W A N G I <>=======");

    }
    }
}
public class Main {

    public static void main(String[] args) {
    kelaspendaftaraan.kelaspiano d = new kelaspendaftaraan().new kelaspiano();
    d.piano();

    }
}


Teori Singkat Abstrak

Abstrak secara umum dapat kita artikan sebagai gambaran tentang sesuatu hal namun belum begitu jelas gambarannya. Sehingga masih butuh suatu proses lagi supaya gambaran tentang sesuatu tersebut menjadi lebih jelas(konkrit). kelas Abstrak tidak berbeda dengan kelas-kelas lainnya yaitu memiliki class members (method dan variabel). Sebuah class adalah abstrak jika salah satu methodnya dideklarasikan abstract. Method abstrak adalah method yang ditentukan dari dalam kelas tapi tidak disertai definisinya . Beberapa hal yang perlu diperhatikan adalah sebagai berikut:
·         Class abstrak tidak dapat dibuatkan instant atau objeknya menggunakan keyword new.
·         Sebuah class dapat dideklarasikan sebagai class abstrak walaupun tidak memiliki method abstrak.

Definisi kelas diletakkan pada masing – masing kelas turunan (subclass). Dalam hal ini setiap subclass dari kelas abstrak harus mendefinisikan method-method yang tergolong sebagai method abstrak. Untuk membuat kelas abstrak digunakan key word abstract dengan cara penulisan seperti berikut:
abstract public <nama method>{
   //variabel instant
  //method non abstrak
  //method abstrak
}

Contoh dari kelas abstrak adalah obyek bangun 2 dimensi (2D). Semua obyek bangun 2D dapat dihitung luas dan kelilingnya, tapi karena rumus untuk mendapatkan luas dan kelilingnya berbeda-beda untuk tiap – tiap bangun 2D maka method untuk menghitung luas dan keliling dibuat sebagai abstrak. Pada subclass – subclassnya baru akan diimplementasikan secara detail disertai penulisan rumus untuk masing – masing bangun 2D.

Program Abstrak pada Java .

package abstrack;

public class Main
{
    static Implementasi abstrak = new Implementasi();
    public static void main(String[] args)
    {

        String music1  = "Cara Bermain Musik Gitar : ";
                String music2  = "Cara Bermain Musik Piano: ";
                String cara1  = "Dipetik e,a,d,g,b,e";
                String cara2  = "Dipencet do,re,mi,fa,so,la,si,do";

                abstrak.ShowDta(music1,cara1);
                abstrak.ShowDta2(music2,cara2);
    }
 }
 abstract class A //Abstrak Class
 {
    public abstract void ShowDta(String music1,String cara1); // Abstrak method
    public void ShowDta2(String music2,String cara2)
    {
        System.out.println("----Alat Musik Piano----");
                System.out.println();
                System.out.println("Jenis musik               :"+music2);
                System.out.println("Cara dan nada        :"+cara2);
    }
 }
 class Implementasi extends A
 {
    public void ShowDta(String music1, String cara1)
    {
        System.out.println("----Alat Musik Gitar----");
                System.out.println();
                System.out.println("Jenis Musik     :"+music1);
                System.out.println("Cara dan Nada   :"+cara1);

                System.out.println();
    }
 }

Program Abstrak pada C-Sharp .

namespace abstrak
       {
              class Program
              {
              static Implementasi abstrak = new Implementasi();
              public static void Main(string[] args)
              {
                     string music1  = "Cara Bermain Musik Gitar :";
                     string music2  = "Cara Bermain Musik Piano :";
                     string cara1   = "Dipetik e,a,d,g,b,e";
                     string cara2   = "Dipencet do,re,mi,fa,so,la,si,do";
  
                     abstrak.ShowDta(music1,cara1);
                     abstrak.ShowDta2(music2,cara2);
                    
                     Console.Write("\nPress any key to continue . . . ");
                     Console.ReadKey(true);
              }
       }

       abstract class A //Abstrak Class
       {
       public abstract void ShowDta(string music1,string cara1); // Abstrak method
       public void ShowDta2(string music2,string cara2)
              {
               Console.WriteLine("----Alat Musik Piano----");
               Console.WriteLine();
               Console.WriteLine("Jenis musik      : {0}",music2);
               Console.WriteLine("Cara dan nada        : {0}",cara2);
              }
       }
       class Implementasi : A
       {
              public override void ShowDta(string music1, string cara1)
              {
               Console.WriteLine("----Alat Musik Gitar----");
               Console.WriteLine();
               Console.WriteLine("Jenis Musik      : {0}",music1);
               Console.WriteLine("Cara dan nada    : {0}",cara1);
               
               Console.WriteLine();
              }
       }
}

Program Abstrak pada Java .
#include <cstdlib>
#include <iostream>

using namespace std;
class A
{
    public : virtual void ShowDta(string music1,string cara1) = 0; // ---> Abstrak method
    public : void ShowDta2(string music2,string cara2)
    {
      cout<<endl;
      cout<<"----Alat Musik Piano----"<<endl;
      cout<<endl;
      cout<<"Jenis musik       : "<<music2<<endl;
      cout<<"Cara dan nada        : "<<cara2<<endl;
    }
};

class Implementasi : public A
{
 public : void ShowDta(string music1, string cara1)
 {
  cout<<"----Alat Musik Gitar----"<<endl;
  cout<<endl;
  cout<<"Jenis musik        : "<<music1<<endl;
  cout<<"Cara dan nada      : "<<cara1<<endl;
 }
};

int main(int argc,char*argv[])
{
    Implementasi abstrak;

     string music1  = "Cara Bermain Musik Gitar :";
     string music2  = "Cara Bermain Musik Piano :";
     string cara1   = "Dipetik e,a,d,g,b,e";
     string cara2   = "Dipencet do,re,mi,fa,so,la,si,do";

     abstrak.ShowDta(music1,cara1);
     abstrak.ShowDta2(music2,cara2);
}

0 komentar to “Bab V”

Posting Komentar