BAB 5(Inner & Abstract Class)

INNER CLASS
Inner Class adalah suatu Class yang didefinisikan di dalam Class lain. Dengan kata lain, Inner Class adalah anggota (member) dari Class lain, sama halnya seperti variable dan method. Hal ini mengakibatkan instance dari Inner Class dapat mengakses /berbagi dengan instance dari outer Class-nya. Instance dari Inner Class dapat mengakses semua member dari outer Class-nya, bahkan yang private.

Delegation Event Model

Delegasi event model menguraikan bagaimana program Anda dapat merespon interaksi dari user. Untuk memahami model, pertama-tama mari kita pelajari melalui tiga komponen utamanya.

  1. Event Source

    Event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.

  2. Event Listener/Handler

    Event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang berguna untuk user.

  3. Event Object

    Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object mempunyai tipe data mengenai salah satu dari class ini.

C#
*
* Created by SharpDevelop.
* User: user
* Date: 08/04/2013
* Time: 22:05
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;

namespace iner_sharp
{
public class luar
{
public byte y;

public void setA(byte angka)
{
y = angka;
}
public byte getA()
{
return y;
}

public class dalam
{
public byte x = 25;

public void liat(byte y)
{
Console.WriteLine("Angka y dari kelas luar = "+y);
Console.WriteLine("Angka x dari kelas dalam = "+x);
}
}
public void lihatdata()
{
dalam bb = new dalam();
bb.liat(y);
}
}

class Program
{
public static void Main(string[] args)
{
luar bc = new luar();
bc.setA(85);
bc.lihatdata();

Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}

Capture
C++

 #include <iostream>

using namespace std;

class luar
{
public : int y;
public : void setA(int angka)
{
y= angka;
}
public : int getA()
{
return y;
}
public : void lihatdata()
{
dalam mm;
mm.liat(y);
}
class dalam
{
public : void liat(int y)
{
int x = 25;
cout<<"Angka y dari kelas luar ="<<y<<endl;
cout<<"Angka x dari kelas dalam = "<<x;
}
};
};
int main()
{
luar kk;
kk.setA(85);
kk.lihatdata();
};

Capture1JAVA

 package iner_java;
import java.util.Scanner;
class luar
{
private int y;

public void setA(int angka)
{
y = angka;
}
public int getA()
{
return y;
}
class dalam
{
private int x = 85;

public void liat()
{
System.out.println("Angka y dari kelas luar = "+y);
System.out.println("Angka x dari kelas dalam = "+x);
}
}
public void lihatData()
{
dalam bb = new dalam();
bb.liat();
}
}
public class Main
{
public static void main(String[] args)
{
luar bc = new luar();
bc.setA(25);
bc.lihatData();
}
}

Capture2

ABSTRACT CLASS

Abstract class adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut.
Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan.
Namun Abstract class dapat mengimplementasikan method tersebut.
Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclass-nya.

Class Abstrak tidak berbeda dengan class – class lainnya yaitu memiliki class members (method dan variabel). Sebuah class adalah abstrak jika salah satu methodnya dideklarasikan abstrak. Method abstrak adalah method yang tidak memiliki implementasi. Contoh deklarasi method abstrak:

abstract public void cetak();

Beberapa hal yang perlu diperhatikan adalah sebagai berikut:

  1. Class abstrak tidak dapat dibuatkan instan atau objeknya menggunakan keyword new.
  2. Sebuah class dapat dideklarasikan sebagai class abstrak walaupun tidak memiliki method abstrak.
  3. Variabel dengan tipe class abstrak tetap bisa diciptakan, tetapi harus refer ke subclass dari class abtrak tersebut yang tentunya tidak abstrak.

C#

*
* Created by SharpDevelop.
* User: user
* Date: 08/04/2013
* Time: 22:51
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;

namespace abstrak_s
{

abstract class X
{
public abstract void LihatData(string sepeda_metic, string MIO);
public void LihatData2(string sepeda_bebek, string SUPRAX)
{
Console.WriteLine("jenis sepeda");
Console.WriteLine();
Console.WriteLine("Jenis        : {0}",sepeda_bebek);
Console.WriteLine("Merk        : {0}",SUPRAX);
}
}
class Implementasi : X
{
public override void LihatData(string sepeda_metic, string MIO)
{
Console.WriteLine("Type sepeda");
Console.WriteLine();
Console.WriteLine("Jenis    : {0}",sepeda_metic);
Console.WriteLine("merk   : {0}",MIO);
Console.WriteLine();
}

}

class Program
{
static Implementasi abstrak = new Implementasi();

public static void Main(string[] args)
{
string sepeda_metic = "MIO";
string sepeda_bebek = "SUPRAX";
string MIO = "YAMAHA";
string SUPRAX = "HONDA";

abstrak.LihatData(sepeda_metic,MIO);
abstrak.LihatData(sepeda_bebek,SUPRAX);

Console.ReadKey(true);
}
}
}

Capture1
C++

#include <iostream>
#include <iostream>
using namespace std;

class X
{
public : virtual void LihatData(string sepeda_metic,string mio) = 0;
public : void LihatData2(string sepeda_bebek,string suprax)
{
cout<<endl;
cout<<"Jenis sepeda<<endl;
cout<<endl;
cout<<"Jenis     : "<<sepeda_bebek<<endl;
cout<<"merk     : "<<suprax<<endl;
}
};

class Implementasi X
{
public : void LIhatData(string sepeda_metic, string mio)
{
cout<<"type sepeda"<<endl;
cout<<endl;
cout<<"Jenis      : "<<sepeda_mio<<endl;
cout<<"merk      : "<<mio<<endl;
}
};

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

string sepeda_metic  = "mio";
string sepeda_bebek  = "suprax";
string mio  = "YAMAHA";
string suprax  = "HONDA";

abstrak.LihatData(sepeda_metic,mio);
abstrak.LihatData2(sepeda_bebek,suprax);
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS
}

Capture
JAVA


package abstrak_java;

import java.util.Scanner;

abstract class X
{
public abstract void LihatData(String sepeda_metic,String mio);
public void LihatData2(String sepeda_bebek,String suprax)
{
System.out.println("jenis sepeda");
System.out.println();
System.out.println("Jenis    :"+sepeda_bebek);
System.out.println("merk    :"+suprax);
}
}
class Implementasi extends X
{
public void LihatData(String sepeda_metic, String mio)
{
System.out.println("type sepeda");
System.out.println();
System.out.println("Jenis    :"+sepeda_metic);
System.out.println("merk    :"+mio);
System.out.println();
}
}
public class Main
{
static Implementasi abstrak = new Implementasi();
public static void main(String[] args)
{

String sepeda_metic  = "mio";
String sepeda_bebek  = "suprax";
String mio  = "YAMAHA";
String suprax  = "HONDA";

abstrak.LihatData(sepeda_metic,mio);
abstrak.LihatData2(sepeda_bebek,suprax);
}
}

Capture2

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s