Rabu, 04 Juli 2012

Event Headling

Event handler adalah satu atau lebih method yang dijalankan ketika sebuah event terjadi pada pemrograman menggunakan Windows Form Aplication. Misalnya, ketika kita mengklik sebuah tombol maka akan terjadi sebuah event, event itu bisa mengakibatkan suatu window atau jendela tertutup, membuka window atau jendela baru dan masih banyak lagi. Apabila kita menggunakan Microsoft Visual Studio, jenis-jenis event bisa kita lihat pada tab propertis. .

Berikut adalah contoh program menurut versi :

Versi C# :


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace EventhandlingManual

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            this.button1.Click += new EventHandler(EvenHnd);

            this.button2.Click += new EventHandler(EvenHnd);

        }



        private void EvenHnd(object sender, EventArgs e)

        {

            Button button = sender as Button;

            if (button.Name == "button1")

            {

                MessageBox.Show("Tombol ! Success!!");

            }

            else if (button.Name == "button2")

            {

                MessageBox.Show("Tombol 2 Success!!");

            }
        }
    }
}
C# image

Versi Java :

package createhandling;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class testButton {
    public void test() {
	//mendeklarasikan beberapa buton
	JButton btn1=new JButton("button1");
        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JOptionPane.showMessageDialog(null, "Tombol 1 Success!!");
            }
        });
	JButton btn2=new JButton("button2");
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JOptionPane.showMessageDialog(null, "Tombol 2 Success!!");
            }
        });
        JPanel butonPanel=new JPanel();
	butonPanel.add(btn1);
	butonPanel.add(btn2);
	//coba//membuat pesan dengan label
	JLabel msg=new JLabel("contoh tombol",JLabel.CENTER);
	//membuat frame untuk menampilkan buton
	JFrame frame=new JFrame("form 1");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	JRootPane rootPane=frame.getRootPane();
	rootPane.setDefaultButton(btn1);
	//membuat layout dan dispalay
	Container c=frame.getContentPane();
	c.add(msg,BorderLayout.CENTER);
	c.add(butonPanel,BorderLayout.SOUTH);
	frame.setSize(200, 200);
	frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        testButton oye = new testButton();
        oye.test();
    }

}
Java image Link Download : Here !!!

Minggu, 17 Juni 2012

Multitread

Arti istilah Multithreading dianggap berkaitan erat dengan pengertian multi thread merupakan jalannya beberapa proses dengan urutan yang cepat (multitasking) dalam satu program. Multithreading ini merupakaan teknik pada manipulasi data dimana node-node pada struktur pohon data berisi penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur menjadi lebih efisien.

Kalau sebelumnya kita telah mempelajari tentang proses, namun seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan beberapa task secara bersamaan walaupun otaknya hanya satu.

Keuntungan MultiThreading

Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:

1. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.

2. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.

4. Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.

Model MultiThreading

Beberapa terminologi yang akan dibahas:

1. Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.

2. Thread Kernel: Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.

Model-Model MultiThreading:

1. Model Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.

2. Model One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.

3. Model Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Kesimpulan

Thread adalah alur kontrol dari suatu proses.

Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.

Tiga model Multithreading:
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.

Pembatalan Thread: Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya.

Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation.
2. Deffered cancellation.

Thread Pools menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil.

Thread Schedulling ada 2 macam:
1. Local Schedulling.
2. Global Schedulling.

Istilah thread di Linux adalah task.
Pembuatan Thread di Linux menggunakan System call clone().

Mirip seperti sistem operasi desktop, Symbian OS mampu melakukan operasi secara multithreading, multitasking dan pengamanan terhadap memori. Dan semua pemrograman pada Symbian dilakukan secara event-based, artinya hardware CPU menjadi tidak aktif ketika tidak ada inputan berupa aktivitas tertentu. Namun perlu dipahami sistem operasi ini memang ditujukan untuk diinstal pada peralatan mobile dengan keterbatasan sumber daya. Multithread dan multitasking memberikan kemampuan Symbian OS untuk menjalankan lebih dari satu aplikasi sekaligus. Namun khusus ini, adanya preemptive multitasking kernel akan memberi tiap-tiap program suatu pembagian waktu pemprosesan yang dilakukan bergantian dengan cepat sehingga nampak bagi pemakai seolah-olah proses ini dieksekusi secara bersamaan. Untuk itu telah didefinisikan penjadwalan berdasar prioritas tertentu untuk menentukan proses mana yang berjalan terlebih dahulu dan proses apa berikutnya serta berapa banyak waktu akan jadi diberi.

Berikut contoh program menurut versi nya :

Versi C#



using System;
using System.Threading;

namespace MultiThreet
{
 
class Program {
static void CetakThread2() {
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 2");
  Thread.Sleep(100);

 }
}
static void Cetakthread3() {
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 3");
  Thread.Sleep(1000);
 }
}
static void Main(string[] args)  {
 Thread thread2 = new Thread(CetakThread2);
 Thread thread3 = new Thread(Cetakthread3);
 thread2.Start();
 thread3.Start();
 int a = 50;
 for (int i = 0; i <= a; i++)
 {
  Console.WriteLine("Data 1");
 }
 Console.ReadKey(true);
 }
}
}

Versi Java


package multi;



class thrid extends Thread {

String nama;

public thrid(String a) {

nama = a;

}

public void run() {

for(byte i = 0; i<50; i++) {

System.out.println(nama);

}

}

}



public class Main {

public static void main(String[] args) {

thrid t = new thrid("Data 2");

thrid t2 = new thrid("Data 3");

t.start();

t2.start();

int a = 50;

for (int i = 0; i <= a; i++)

{

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

}

}

}

Link Download : Here !!!

Exception Handling

Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat dijalankan. Penanganan eksepsi pada perintah membawa pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi  adalah objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu bagian profram.

Saat suatu keadaan eksepsi muncul, suatu objeke xcep tio n dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil.


Dasar-dasar Penanganan Eksepsi

Penanganan eksepsi diatur dengan lima kata kunci :try,
catch, throw, throwsdan finally. Pada dasarnya try digunakan untuk
mengeksekusi suatu bagian program, dan jika muncul kesalahan, sistem akan melakukanth row suatu eksepsi yang dapat andaca tch berdasarkan tipe eksepsinya, atau yang anda berikanf in a lly dengan penangan default.

Versi C#

using System;

namespace exception_hadling

{

class Program {

private static string LoginUser() {

string usr;

Console.Write("Masukkan Username : ");

usr = Convert.ToString(Console.ReadLine());

return usr;

}

private static string LoginNIM() {

string nim;

Console.Write("Masukkan Nim : ");

nim = Convert.ToString(Console.ReadLine());

return nim;

}

private static void Konf(string userName, string passwrd) {

bool error;

error = true;

while (error == true) {

try {

while (userName != "iqbal" || passwrd != "1110100637") {

Console.WriteLine();

Console.WriteLine("#User Name dan/ atau Password salah!");

Console.WriteLine();

userName = LoginUser():

passwrd = LoginNIM();

}

error = false;

}

catch (Exception)  {

Console.WriteLine();

Console.WriteLine("#User Name dan/ atau Password salah!");

Console.WriteLine();

}

}

}

static void Main(string[] args) {

string userName;

string passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userN`me, passwrd);

Console.WriteLine();

Console.WriteLine("Username dan Password benar");

Console.ReadKey(true);

}

}

}

Versi Java :


package exceptionhadling;

import java.util.Scanner;

public class Main {

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

public static String LoginUser(){

String usr;

System.out.print("Masukkan Username : ");

usr = input.next();

return usr;

}

public static String LoginNIM() {

String nim;

System.out.print("Masukkan Nim : ");

nim = input.next();

return nim;

}

private static void Konf(String userName, String passwrd) {

Boolean error;

error = true;

while (error == true) {

try {

while (!userName.equalsIgnoreCase("iqbal") ||

!passwrd.equals("1110100637")) {

System.out.println();

System.out.println("#User Name dan/ atau Password salah!");

System.out.println();

userName = LoginUser();

passwrd = LoginNIM();

}

error = false;

}

catch (Exception e) {

System.out.println();

System.out.println("#User Name dan/ atau Password salah!");

System.out.println();

}

}

}

public static void main(String[] args) {

String userName;

String passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userName, passwrd);

System.out.println();

System.out.println("Username dan Password benar");

}

}


Versi C++ :

#include 

#include



using namespace std;



static string LoginUser() {

string usr;

cout << "Masukkan Username : ";

cin >> usr;

return usr;

}

static string LoginNIM() {

string nim;

cout << "Masukkan Nim : ";

cin >> nim;

return nim;

}

static void Konf(string userName, string passwrd) {

bool error;

error = true;

while (error == true) {

try {

while (userName != "iqbal" || passwrd != "1110100637") {

cout << endl;

cout << "#User Name dan/ atau Password salah!" << endl;

cout << endl;

userName = LoginUser();

passwrd = LoginNIM();

}

error = false;

}

catch (exception e) {

cout << endl;

cout << "#User Name dan/ atau Password salah!"<< endl;

cout << endl;

}

}

}

int main(void) {

string userName;

string passwrd;

userName = LoginUser();

passwrd = LoginNIM();

Konf(userName, passwrd);

cout << endl;

cout << "Username dan Password benar" << endl;

system("PAUSE");

}

Link Download : HERE !!!

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 !!!

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