Senin, 28 Mei 2012

Abstract Class

Abstract class merupakan suatu class yang memiliki minimal satu abstract methode (method yang belum terdapat implementasinya) dan tidak dapat diinstantiasi. Kelas turunan harus mengimplementasikan semua method abstract. Kata kunci abstract tidak dapat digunakan untuk konstruktor dan method static.

ANOLOGI CLASS YANG ABSTRACT

Suatu class dapat diinstansiasi menjadi objek, misal class Dosen damat di instansiasi menjadi wilis, bayu, lina, namun tidak mungkin dapat menginstansiasi class MahlukHidup, class  hewan, dan class manusia, sebab class tersebut terlalu umun (Abstract), class seperti inilah yang disebut class abstract. dibutuhkan class turunan yang lebih khusus.

ANOLOGI METHOD YANG ABSTRACT


Bila class MahlukHidup mempunyai method bernafas, maka tidak dapat ditentukan cara suatu mahluk hidup tersebut bernafas (dengan paru - paru, insang, atau stomata), method seperti inilah yang disebut method abstract. Dibutuhkan class turunan yang khusus dan method override dari method yang abstract.

Berikut adalah contoh program menurut versinya :

Versi C# :


using System;

namespace AbstractClass_C_
{
abstract class Mahasiswa { // kelas induk
	private String nama, nim;
	public void getdatax()
	{
		Console.Write(" Input Nama  : ");
		nama = Console.ReadLine();
		Console.Write(" Input NIM   : ");
		nim = Console.ReadLine();
	}
	public void putdatax() 
		{
		Console.WriteLine(" Nama        : " + nama);
		Console.WriteLine(" NIM         : " + nim);
		}
	}
class mhs1 : Mahasiswa { // kelas turunan
	private String matkul;
	int nilai;
	//Mahasiswa mhs = new Mahasiswa();
	public void getdata() 
	{
		getdatax();
		Console.Write(" Mata Kuliah : ");
		matkul = Console.ReadLine();
		Console.Write(" Nilai Ujian : ");
		nilai = int.Parse(Console.ReadLine());
	}
	public void putdata() {
		putdatax();
		Console.WriteLine(" Mata Kuliah  : " + matkul);
		Console.WriteLine(" nilai       : " + nilai);
	}
}
////kelas abstrak//
class mhs2 : Mahasiswa {
}
class Program {
	static void Main(string[] args) {
		mhs1 m1 = new mhs1();
		mhs2 b1 = new mhs2();
		Console.WriteLine();
		Console.WriteLine("Input Data Mahasiswa 1");
		m1.getdatax();
		Console.WriteLine("\nInput Data Mahasiswa 2");
		b1.getdatax();
		Console.WriteLine("\nData Mahasiswa 1");
		m1.putdatax();
		Console.WriteLine("\nData Mahasiswa 2");
		b1.putdatax();
		Console.ReadKey(true);
		}
	}
}

Versi Java :




package abstractclassjava;



import java.util.*;

abstract class Mahasiswa { // kelas induk

public Scanner input = new Scanner(System.in);

private String nama;

long nim;

public void getdatax() {

        System.out.print(" Input Nama  : ");

        nama = input.next();

        System.out.print(" Input NIM   : ");

        nim = input.nextLong();

    }

void putdatax(){

        System.out.println(" Nama        : " + nama);

        System.out.println(" NIM         : " + nim);

    }

}

class mhs1 extends Mahasiswa { // kelas turunan

private String matkul;

int nilai;

//Mahasiswa mhs = new Mahasiswa();

public void getdata() {

    getdatax();

    System.out.print(" Mata Kuliah : ");

    matkul = input.next();

    System.out.print(" Nilai Ujian : ");

    nilai = input.nextInt();

}

void putdata() {

        putdatax();

        System.out.println(" Mata Kuliah  : " + matkul);

        System.out.println(" nilai          : " + nilai);

    }

}

////kelas abstrak//

class mhs2 extends Mahasiswa {

}

public class Main {

public static void main(String[] args) {

        mhs1 m1 = new mhs1();

        mhs2 b1 = new mhs2();

        System.out.println();

        System.out.println("Input Data Mahasiswa 1");

        m1.getdatax();

        System.out.println("\nInput Data Mahasiswa 2");

        b1.getdatax();

        System.out.println("\nData Mahasiswa 1");

        m1.putdatax();

        System.out.println("\nData Mahasiswa 2");

        b1.putdatax();

    }

}


Versi C++ :

using namespace std;

const int batas = 80;

using namespace std;

class Mahasiswa { // kelas induk

private:

char nama [batas];

unsigned long nim;

public:

void getdata() {

cout << " Input Nama  : ";

cin >> nama;

cout << " Input NIM   : ";

cin >> nim;

}

void putdata() {

cout << " Nama        : " << nama << endl;

cout << " NIM         : " << nim;

}

};

class mhs1 : public Mahasiswa { // kelas turunan

private:

char matkul [batas];

int nilai;

public:

void getdata() {

Mahasiswa::getdata();

cout << " Mata Kuliah : ";

cin >> matkul;

cout << " Nilai Ujian : ";

cin >> nilai;

}

void putdata() {

Mahasiswa::putdata();

cout << endl << " Mata Kuliah : "<< matkul;

cout << endl << " nilai     : "<< nilai;

}

};

class mhs2:public Mahasiswa { ////kelas abstrak//

};

int main() {

mhs1 m1;

mhs2 b1;

cout<

cout<<"Input Data Mahasiswa 1" << endl;

m1.getdata();

cout<<"\nInput Data Mahasiswa 2" << endl;

b1.getdata();

cout<<"\nData Mahasiswa 1" << endl;

m1.putdata();

cout<< endl << "\nData Mahasiswa 2" << endl;

b1.putdata();

cout << endl;

system("PAUSE");

}

Link Download : Here !!!

Inner Class



Apa itu Inner Class??
Merupakan kelas yang didefinisikan di dalam kelas. Kelas inner dapat mengakses data dan method dari kelas luar, meskipun data dan method tersebut bersifat private. Sebaliknya kelas luar tidak dapat mengakses data atau method dari kelas dalam yang bersifat private.
Ketentuan kelas inner :
  1. Kelas Luar yang mnegandung kelas inner bila dikompilasi akan menghasilkan dua file yaitu Luas.class dan Luas$Inner.class.
  2. Kelas Inner boleh tidak diberi nama disebut Anonymous Inner.
  3. Pada non-static, pembuatan objek inner class bila dilakukan di dalam method static, maka harus membuat objek kelas luar terlebih dahulu.
Contoh            :
                        Luar a = new Luar();  // membuat objek kelas luar
                        Dalam.Luar b = a.new Dalam();  // membuat objek kelas Dalam
Bila instantiasi dilakukan pada method non-static dari kelas luar, maka dapat dilakukan secara langsung seperti biasa.
Contoh            :           Dalam b = new Dalam();
Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat sendiri tanpa melalui kelas luarnya tetapi kelas inner tidak dapat mengakses atribut ataupun method non-static milik kelas.

Berikut adalah contoh program menutur versinya :

Versi C# :

using System;

using innerClass;



namespace innerClass

{

class classLuar {

public class classDalam {

public void komen(){

Console.WriteLine("Regular class inner regular menggunakan C#");

}

}

}

class Program {

static void Main(string[] args) {

classLuar.classDalam dalam = new classLuar.classDalam();

dalam.komen();

Console.ReadKey(true);

}

}

}

Versi Java :

package innerclass_java;



class classLuar {

class classDalam {

void komen(){

System.out.print("Regular class inner regular menggunakan Java");

}

}

}

public class Main {

public static void main(String[] args) {

classLuar.classDalam dalam = new classLuar().new classDalam();

dalam.komen();

}

}


Versi C++ :

#include

#include



using namespace std;



class classLuar {

public : class classDalam

{

public : void komen() {

cout << "Regular class inner regular menggunakan C++" << endl;

}

};

};

int main(void) {

classLuar::classDalam dalam = classLuar::classDalam();

dalam.komen();

system("PAUSE");

}


Link Download : HERE !!!

Twitter Delicious Facebook Digg Stumbleupon Favorites More