Rabu, 25 April 2012

Inheiretence

Inheiretence merupakan salah satu keampuhan dari OOP. Dengan pewarisan(Inheiretence), kita tidak perlu lagi membuat kode program yang sebelumnya sudah pernah kita buat. Pewarisan memungkinkan kita untuk menggunakan atau memperluas kelas lain dengan cara menciptakan kelas baru. Inheiretence juga memberikan kemudahan bagi kita untuk maintenance project, optimasi, memperbaiki ataupun improving. Dengan maintenance pada superclass (class induk) maka pada child class juga akan otomatis teroptimasi.


contoh : Mahasiswa dengan senat , BEM.


Suatu class yang mempunyai class turunan dinamakan parent class atau base class, dalam contoh di atas adalah mahasiswa, sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.


contoh : senat, Bem


Suatu subclass dapat mewarisi semuaatau sebagaian member yang dimiliki oleh parent class. Jadi dengan kata lain suatu subclass adalah tidak lain nya hanya memperluas (Extend) parent classnya.


Deklarasi Inheritance


menambah kata kunci /keyword extends setelah deklarasi nama class, kemudian diikuti dengan nama parent classnya, kata kunci / keyword extends tersebut memberitahu kompiler bahwa kita ingin melakukan perluasan class.


Berikut contoh program nurut versinya :


Versi C# :




using System;

namespace Inheritance_C_
{
class Induk {
private string var1 = "Demo Pewarisan";
public int var2 = 10;
public Induk () {
}
public void cetakData() {
}
}
class Anak : Induk {
public Anak() {
}
public void cetak() {
cetakData();
}
}
 class Program
 {
  public static void Main(string[] args)
  {
   Anak anak = new Anak();
   anak.cetak();
   anak.cetakData();
   Console.WriteLine("Inheritance Menggunakan C#");
   Console.WriteLine("isi var 2="+anak.var2);
   Console.ReadKey(true);
  }
 }
}
Inheritance C#


Versi Java :

package inheritance_java;

class Induk {
private String var1 = "Demo Pewarisan";
public int var2 = 10;
public Induk () {
}
public void cetakData(){
}
}
class Anak extends Induk {
public Anak() {
}
public void cetak() {
cetakData();
}
}
public class Main {

   
    public static void main(String[] args) {
        Anak anak = new Anak();
        anak.cetak();
        anak.cetakData();
     System.out.println("Inheritance Menggunakan Java");
        System.out.println("isi var 2="+anak.var2);
}
}
Inheritance Java

Versi C++ :

#include 
#include 

using namespace std;
class Induk {
private : string var1;
public : int var2;
public : Induk() {
var2 = 10;
}
public : void cetakData() {
}
};
class Anak : public Induk {
public : Anak() {
}
public : void cetak() {
cetakData();
}
};
int main(void) {
Anak anak;
anak.cetak();
anak.cetakData();
cout << "Inheritance Menggunakan C++" << endl;
cout << "isi var 2 = " << anak.var2 << endl;
system("PAUSE");
}

Inheritance C

Demikian penjelasan tentang inheiretence.
Untuk mendownload contoh program di atas dapat di download di bawah ini.


Polimorfisme - Overloading

Lanjut pada materi selanjut nya yaitu Overloading, langsung saja saya jelaskan tentang overloading.


Overloading
Overloading berarti Menuliskan kembali method dengan nama yang sama pada suatu class. tujuannya adalah memudahkan penggunaan/pemanggilan method dengan fungsionalitas yang mirip.
Tujuan overloading adalah untuk memudahkan penggunaan/pemanggilan method dengan fungsionalitas yang mirip.


Aturan Pendeklarasian Method Overloading

  • Nama method harus sama.
  • Daftar parameter harus berbeda.
  • Return type boleh sama, juga boleh berbeda
Daftar Parameter Pada Overloading
  • Perbedaan daftar parameter bukan hanya terjadi pada perbedaan kebanyakan parameter, tetapi juga urutan dari parameter tersebut.
  • misal saja duah buah parameter sebagai berikut :

  1. function_member(int x, string n)
  2. function_member(string n,int x)

  • Dua parameter tersebut juga dianggap berbeda daftar parameternya
  • Daftar parameter tidak terkait dengan penamaan variabel yang ada dalam parameter.
  • misal saja 2 daftar parameter berikut :

  1. function_member(int x)
  2. function_member(int y)

  • Dua daftar parameter diatas dianggap sama karena yang berbeda hanya penamaan variabel parameternya.
Berikut contoh program menurut versinya :

Versi C# :

namespace polimorfismeOverload_C_
{
class OvrLoadConstruktor
{
public OvrLoadConstruktor(){
Console.WriteLine("      Metode Overload konstruktor           ");
Console.WriteLine("Penamaan Class sama dengan parameter berbeda");
Console.WriteLine("============================================");
Console.WriteLine();
}
public OvrLoadConstruktor(string judul, string isi)  {
Console.WriteLine(judul);
Console.WriteLine(isi);
Console.WriteLine();
}
public OvrLoadConstruktor(int a, int b) {
int hasil = a + b;
Console.WriteLine("Hasil penambahan " + a + " dan " + b + " adalah : " + hasil);
}
}
class Program {
static void Main(string[] args) {
string judul = "overload konstruktor versi c#";
string isi = "Stikom Banyuwangi";
int nilai1 = 10, nilai2 = 20;
OvrLoadConstruktor kon = new OvrLoadConstruktor();
OvrLoadConstruktor kon2 = new OvrLoadConstruktor(judul, isi);
OvrLoadConstruktor kon3 = new OvrLoadConstruktor(nilai1,nilai2);
Console.WriteLine();
Console.ReadKey(true);
}
}
}
overload C#


Versi Java :

package polimorfismeoverload_java;
class OvrLoadConstruktor {
public OvrLoadConstruktor() {
System.out.println("      Metode Overload konstruktor        ");
System.out.println("Penamaan Class sama dengan parameter berbeda");
System.out.println("============================================");
System.out.println();
}
public OvrLoadConstruktor(String judul, String isi) {
System.out.println(judul);
System.out.println(isi);
System.out.println();
}
public OvrLoadConstruktor(int a, int b) {
int hasil = a + b;
System.out.println("Hasil penambahan " + a + " dan " + b + " adalah : " + hasil);
}
}
public class Main {
public static void main(String[] args) {
String judul = "overload konstruktor versi Java";
String isi = "Stikom Banyuwangi";
int nilai1 = 10, nilai2 = 20;
OvrLoadConstruktor kon= new OvrLoadConstruktor();
OvrLoadConstruktor kon2 = new OvrLoadConstruktor(judul, isi);
OvrLoadConstruktor kon3 = new OvrLoadConstruktor(nilai1,nilai2);
}
}
overload java


Versi C++ :

using namespace std;
class OvrLoadConstruktor {
public : OvrLoadConstruktor() {
cout << "      Metode Overload konstruktor             " << endl;
cout << "Penamaan Class sama dengan parameter berbeda" << endl;
cout << "============================================" << endl;
cout << endl;
}
public : OvrLoadConstruktor(string judul, string isi) {
string a = judul;
cout << judul << endl;
cout << isi << endl;
cout << endl;
}
public : OvrLoadConstruktor(int a, int b) {
int hasil = a + b;
cout << "Hasil penambahan " << a << " dan " << b << " adalah : " << hasil << endl;
}
};
int main(void) {
string judul = "overload konstruktor versi C++";
string isi = "Stikom Banyuwangi";
int nilai1 = 10, nilai2 = 20;
OvrLoadConstruktor kon;
OvrLoadConstruktor kon2 = OvrLoadConstruktor(judul, isi);
OvrLoadConstruktor kon3 = OvrLoadConstruktor(nilai1,nilai2);
system("PAUSE");
}

overload c


Sekian dulu penjelasan tentang polimorfisme overloading.
contoh program di atas dapat di download di bawah ini

Polimorfisme - Overriding

Dalam pemrograman berorientasi object kita mengenal suatu istilah yaitu “Polimorfisme”, yaitu suatu teknik dalam programming yang lebih mengarahkan kita untuk memprogram secara general dari pada secara spesifik. Sebagai contoh seumpama kita memiliki 3 class berbeda yaitu: “Motor”, “Mobil” dan “Pesawat”. Dimana ketiga class tersebut adalah turunan dari class “Kendaraan”. Dalam kelas kedaraan terdapat suatu method yaitu “Move()”, akan tetapi apakah method “Move()” akan memberikan hasil yang sama pada tiga class tersebut. Dimana jika method “Move()” dipanggil pada class “Motor” akan menghasilkan perpindahan 30Km, jika pada class “Mobil” akan menghasilkan perpindahan 70Km dan jika dipanggil pada class “Pesawat” akan menghasilkan perpindahan 300Km. Hal inilah yang kita sebut sebagai Polimorfisme, yaitu penggunaan method yang sama, yang akan menghasilkan suatu hasil yang berbeda tergantung class yang menggunakan method tersebut.



Overriding

Overriding digunakan oleh Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuannya adalah supaya  subclass memiliki tingkah laku yang lebih spesifik. Ini dilakukan dengan  cara mendeklarasikan kembali method milik parent class di subclass.

  • Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass.
  • tujuan : subclass memiliki tingkah laku yang lebih spesifik.
  • dilakukan dengan cara mendeklarasikan kembali method milik parent class di subclass.
  • Deklarasi method pada subclass harus sama dengan yang terdapat di super class.  kesamaan pada :

  1. nama
  2. return type (untuk return type : class A atau merupakan subclass dari A)
  3. daftar marameter (jumlah, type, dan urutan)

  • method pada parent class disebut overriden method
  • method pada subclass disebut overriding method

berikut contoh program menurut versinya

versi C# :

 using System;

namespace polimorfismeOverriding
{
 class overriding
 {
  public int nilai1,nilai2;
  public void input(int a, int b)
  {
   nilai1=a;
   nilai2=b;
  }
  public virtual void show()
  {
   int hasil;
   hasil=nilai1+nilai2;
   Console.WriteLine("override 1");
   Console.WriteLine("Hasil penjumlahan {0} dan {1} = {2}",nilai1,nilai2,hasil);
  }
 }
 class riding : overriding
 {
  public override void show()
  {
   int hasil;
   hasil=nilai1+nilai2;
   Console.WriteLine("override 2");
   Console.WriteLine("Hasil penjumlahan {0} dan {1} = {2}",nilai1,nilai2,hasil);
  }
 }
 class Program
 {
  public static void Main(string[] args)
  {
   overriding over = new overriding();
   over.input(3,4);
   over.show();
   
   over=new riding();
   over.input(5,6);
   over.show();
   Console.ReadKey(true);
  }
 }
}


over C#

Versi Java :

package polimorfismeoverrid_java;
class OvrRide {
public int Nilai1, Nilai2;
public void Input(int x, int y) {
Nilai1 = x;
Nilai2 = y;
}
public void show() {
int hasil = Nilai1 + Nilai2;
System.out.println("Override 1");
System.out.print("Hasil Penjumlahan " + Nilai1 + " dan " + Nilai2 + " = " + hasil);
System.out.println();System.out.println();
}
}
class Ride extends OvrRide {
@Override
public void show() {
int hasil = Nilai1+Nilai2;
System.out.println("Override 2");
System.out.print("Hasil Penjumlahan " + Nilai1 + " dan " + Nilai2 + " = " + hasil);
System.out.println();
}
}
public class Main {

    
    public static void main(String[] args) {
        OvrRide over = new OvrRide();
        over.Input(3, 4);
        over.show();
        over = new Ride();
        over.Input(5, 6);
        over.show();
    }

}
over java


Versi C++ :

using namespace std;
class OvrRide {
public : int nilai1 , nilai2;
public : void Input(int a, int b) {
nilai1 = a;
nilai2 = b;
}
public : virtual void show(){
int hasil = nilai1 + nilai2;
cout << "Override 1" << endl;
cout << "Hasil penjumlahan " << nilai1 << " dan " << nilai2 << " = " << hasil;
cout << endl;cout << endl;
}
};
class Ride : public OvrRide {
public : void show(){
int hasil = nilai1 + nilai2;
cout << "Override 2" << endl;
cout << "Hasil penjumlahan " << nilai1 << " dan " << nilai2 << " = " << hasil;
cout << endl;cout << endl;
}
};
int main(int argc, char *argv[])
{
    OvrRide over;
    Ride ride;
    over.Input(3, 4);
    over.show();
    ride.Input(5, 6);
    ride.show();
    system("PAUSE");
    return EXIT_SUCCESS;
}
over c


Sekian dulu penjelasan tentang polimorfisme overriding
contoh program di atas dapat di download di bawah ini

Senin, 23 April 2012

Encapsulation

Sampai juga di bab encapsulation, dan apa itu encapsulation
tanpa basa basi langung saja saya jelaskan

Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.

Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.

Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Berikut ini adalah contoh program nurut versinya

dari versi C#

using System;

namespace EncapsulationC_
{
class nilai
{
int data1,data2;
public int nilai1
{
set{data1=value;}
get{return data1;}
}
public int nilai2
{
set {data2=value;}
get {return data2;}
}
public void data(string koment1,string koment2)
{
Console.WriteLine(koment1,data1);
Console.WriteLine(koment2,data2);
}
public void tampilhasil(string komentar)
{
Console.WriteLine(komentar,data1+data2);
}
}
class Program
{
public static void Main(string[] args)
{
int a= 1;
int b= 2;
nilai encapsulation = new nilai();
encapsulation.nilai1 = a;
encapsulation.nilai2 = b;
encapsulation.data("Nilai Data Pertama = {0}","Nilai Data Kedua = {0}");
encapsulation.tampilhasil("Hasil Penjumlahan = {0}");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
C#


Dari vesi Java

package encapsulationjava;

class nilai
{
int data1,data2;
public void setnilai1(int a)
{
this.data1=a;
}
public int getnilai1()
{
return data1;
}
public void setnilai2 (int b)
{
this.data2=b;
}
public int getnilai2()
{
return data2;
}
public void data(String kom1,String kom2)
{
System.out.println(kom1+getnilai1());
System.out.println(kom2+getnilai2());
}
public void hasilpenjumlahan(String data)
{
System.out.println(data+(getnilai1()+getnilai2()));
}
}
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int a= 1;
int b= 2;
nilai encapsulation = new nilai();
encapsulation.setnilai1(a);
encapsulation.setnilai2(b);
encapsulation.data("Data pertama = ","Data kedua = ");
encapsulation.hasilpenjumlahan("Hasil penjumlahan = ");
}

}
java


Dari versi C++

using namespace std;
class nilai
{
int data1,data2;
public :
void setnilai1(int a)
{
data1=a;
}
int getnilai1()
{
return data1;
}
void setnilai2 (int b)
{
data2=b;
}
int getnilai2 ()
{
return data2;
}
void data(string kom1,string kom2)
{
cout<<<< div=""><<<>

cout<<<< div=""><<<>

}
void hasil(string data)
{
cout<<<< div=""><<<>

}
};
int main(int argc, char *argv[])
{
int a=1;
int b=2;
nilai encapsulation;
encapsulation.setnilai1(a);
encapsulation.setnilai2(b);
encapsulation.data("Nilai data pertama = ","Nilai data Kedua = ");
encapsulation.hasil("Hasil penjumlahan = ");
system("PAUSE");
return EXIT_SUCCESS;
}
c


Sekian dulu penjelasan untuk bab Encapsulation
seperti biasa untuk temen-temen yang ga mw repot nyatet contoh program di atas bisa di download di bawah ini



Class, Method, Modifier

Setelah beres dengan OOP1 di smester terdahulu, akhirnya sampai juga di OOP2.
seperti episode sebelumnya saya sebagai seseorang yang juga belajar bahasa pemrograman akan menjelaskan di bab ini tentang apa itu Class, Method, dan Modifier.

Pengertian Class

  • untuk membuat objek, dan berperan sebagai tipe data dari objek
  • sarana pengkapsulan kumpulan data/properti dan kumpulan method
Misal Diagram Class

class


Modifier sifatnya optional, menunjukkan sifat-sifat tertentu dari classnya, methodnya, atau attrubutenya.

10 keyword modifier1 :
1. akses (public, protected, default, private)
2. final
3. static
4. abstract
5. synchronized
6. native
7. storage (transient, volatile)
• 2 keyword modifier2, yaitu extends dan implements.

Method

  • Tingkah laku dari suatu objek
  • Letak di dalam classbody
  • Modifier boleh lebih dari satu (dipisah oleh spasi).
  • Method dpt tdk mempunyai nilai balik, disebut sebagai void, atau mempunyai nilai balik berupa tipe primitive Java atau class.
  • Pasangan tipe dan parameter dapat lebih dari satu (dipisah oleh koma).
Berikut ini adalah contoh program menurut versinya :

Dengan menggunakan C#
using System;

namespace class_metoth
{
class penjumlahan
{
public byte tambah(byte a,byte b)
{
byte c;
c=(byte)(a+b);
return c;
}
public void hasil(string data,byte hasil)
{
Console.WriteLine("{0}{1}",data,hasil);
}
}
class Program
{
public static byte nilai(string data)
{
byte i=0;
Console.Write(data);
i=byte.Parse(Console.ReadLine());
return i;
}
public static void Main(string[] args)
{
penjumlahan prosses=new penjumlahan();
byte a,b,c;
a=nilai("Nilai Pertama = ");
b=nilai("Nilai Kedua = ");
c= prosses.tambah(a,b);
prosses.hasil("Hasil penjumlahan = ",c);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}

C#

Dalam versi Java

package classMetoth_java;

import java.util.Scanner;

class penjumlahan
{
public static Scanner input = new Scanner(System.in);
public byte tambah(byte a,byte b)
{
byte c;
c=(byte)(a+b);
return c;
}
public void hasil(String data,byte hasil)
{
System.out.print(data);
System.out.print(hasil);
}
}

public class Main {
public static Scanner input = new Scanner(System.in);
public static byte nilai(String data)
{
byte i=0;
System.out.print(data);
i=input.nextByte();
return i;
}
public static void main(String[] args)
{
penjumlahan prossess=new penjumlahan();
byte a,b,c;
a=nilai("Nilai Pertama = ");
b=nilai("Nilai Kedua = ");
c=prossess.tambah(a, b);
prossess.hasil("Hasil Penjumlahan = ", c);
}

}

java

Dalam versi C++

using namespace std;
class penjumlahan{
public:
int tambah(int a,int b)
{
int c;
c= a+b;
return c;
}
void hasil(int data)
{
cout << "Hasil Penjumlahan = "<
}
};
int nilai()
{
int i = 0;
cout<<"Inputkan Nilai = ";
cin >> i;
return i;
}

int main(int argc, char *argv[])
{
penjumlahan prossess;
int a,b,c;
a=nilai();
b=nilai();
c=prossess.tambah(a,b);
prossess.hasil(c);
system("PAUSE");
return EXIT_SUCCESS;
}


c


Sekian dulu penjelasan untuk class,method, dan modifier.

untuk teman-teman yang ingin mendownload







Twitter Delicious Facebook Digg Stumbleupon Favorites More