Berikut contoh polymorphisme:
public class Bangun {
int panjang;
int lebar;
int sisi;
public void tampil(int sisi){
int luas = sisi * sisi;
System.out.println("Luas Persegi : " + luas);
}
public void tampil(int panjang, int lebar){
int luas = panjang * lebar;
System.out.println("Luas Persegi Panjang : " + luas);
}
}
Perhatikan fungsi tampil yang di tulis tebal. Di sini peran overload akan tampak. Apabila temen - temen memanggil fungsi tampil(int sisi), maka yang akan tampil adalah luas dari persegi dan apabila temen - temen memanggil fungsi tampil(int panjang, int lebar), maka yang akan tampil adalah luas dari persegi panjang
Minggu, 29 Mei 2011
Overriding Pada Java
Karena besok ada kuis nih di kampus, untuk membantu temen - temen yang belum ngerti ane pengen ngasih contoh ovveriding buat temen - temen:
Buat 3 class terlebih dahulu. pada contoh kali ini adalah Lingkaran, Tabung, Kerucut:
public class Kerucut extends Lingkaran{
int tinggi;
int jari;
@Override
public void luas(){
int selimut = (int) Math.sqrt(Math.pow(this.tinggi,2) + Math.pow(this.jari,2));
int luas = (super.getLuasLingkaran(this.jari) + (selimut * (int) Math.PI * this.jari));
System.out.println("Luas : " + luas);
}
public void volume(){
int volume = (int)(0.333 * (super.getLuasLingkaran(this.jari) * tinggi));
System.out.println("Volume : " + volume);
}
}
perlu diketahui bahwa class berwarna merah adalah super class dari class yang berwarna biru dan hijau. Dari sini akan tampak kegunaan overriding. Perhatikan fungsi luas() pada setiap class. ketiga fungsi tersebut bertipe fungsi sama, nama fungsi sama, dan nilai kembaliannyapun sama.Namun , di sinilah overriding berperan karena fungsi luas() di dalam tabung akan menampilkan luas tabung dan fungsi luas() pada kerucut akan menampilkan luas kerucut. Semoga Bermanfaat.
Buat 3 class terlebih dahulu. pada contoh kali ini adalah Lingkaran, Tabung, Kerucut:
public class Lingkaran {
int r;
public int getLuasLingkaran(int r) {
return (int) Math.PI * r * r;
}
public void luas() {
int luas = getLuasLingkaran(this.r);
System.out.println("Luas : " + luas);
}
public int getKelilingLingkaran(int r) {
return (int) Math.PI * (r * 2);
}
public void keliling() {
int keliling = getKelilingLingkaran(this.r);
System.out.println("Keliling : " + keliling);
}
}
int r;
public int getLuasLingkaran(int r) {
return (int) Math.PI * r * r;
}
public void luas() {
int luas = getLuasLingkaran(this.r);
System.out.println("Luas : " + luas);
}
public int getKelilingLingkaran(int r) {
return (int) Math.PI * (r * 2);
}
public void keliling() {
int keliling = getKelilingLingkaran(this.r);
System.out.println("Keliling : " + keliling);
}
}
public class Tabung extends Lingkaran{
int tinggi;
int jari;
@Override
public void luas(){
int luas = (2 * super.getLuasLingkaran(this.jari)) + (tinggi * super.getKelilingLingkaran(this.jari));
System.out.println("Luas : " + luas);
}
public void volume(){
int volume = super.getLuasLingkaran(this.jari) * tinggi;
System.out.println("Volume : " + volume);
}
}
int tinggi;
int jari;
@Override
public void luas(){
int luas = (2 * super.getLuasLingkaran(this.jari)) + (tinggi * super.getKelilingLingkaran(this.jari));
System.out.println("Luas : " + luas);
}
public void volume(){
int volume = super.getLuasLingkaran(this.jari) * tinggi;
System.out.println("Volume : " + volume);
}
}
public class Kerucut extends Lingkaran{
int tinggi;
int jari;
@Override
public void luas(){
int selimut = (int) Math.sqrt(Math.pow(this.tinggi,2) + Math.pow(this.jari,2));
int luas = (super.getLuasLingkaran(this.jari) + (selimut * (int) Math.PI * this.jari));
System.out.println("Luas : " + luas);
}
public void volume(){
int volume = (int)(0.333 * (super.getLuasLingkaran(this.jari) * tinggi));
System.out.println("Volume : " + volume);
}
}
perlu diketahui bahwa class berwarna merah adalah super class dari class yang berwarna biru dan hijau. Dari sini akan tampak kegunaan overriding. Perhatikan fungsi luas() pada setiap class. ketiga fungsi tersebut bertipe fungsi sama, nama fungsi sama, dan nilai kembaliannyapun sama.Namun , di sinilah overriding berperan karena fungsi luas() di dalam tabung akan menampilkan luas tabung dan fungsi luas() pada kerucut akan menampilkan luas kerucut. Semoga Bermanfaat.
Sabtu, 28 Mei 2011
Segitiga Pascal Pada Java
Sebenarnya, menampilkan segitiga pascal dapat dilakukan hanya dalam fungsi main(public static void main(String[] args), namun cara ini lebih kompleks karena temen - temen harus mengatur fungsi faktorial sendiri di dalam fungsi main tersebut. Sebenarnya bisa, tapi lebih membingungkan. Sehubungan dengan kebingungan tersebut, pada artikel kali ini, akan ane buat fungsi - fungsi yang nantinya akan menjadi rumus menampilkan segitiga pascal tersebut. Fungsi ini ditunjukkan oleh script berwarna di bawah ini:
public class SegiTigaPascal
public int proc(int angka){
if(angka == 0){
return 1;
}
else
return angka;
}
public int minus(int x, int y){
if(x - y == 0){
return 1;
}
else
return x- y;
}
public int faktorial(int angka){
int faktorial = 1;
for(int x = 1; x <= angka; x++){
faktorial *= x;
}
return faktorial;
}
public static void main(String[] args) {
SegiTigaPascal panggil = new SegiTigaPascal();
int batas = 4;
int xFaktorial = 1;
int yFaktorial = 1;
int minFaktorial = 1;
int simpan;
int hasil = 0;
for (int x = 0; x <= batas; x++) {
xFaktorial *= panggil.proc(x);
for (int y = batas; y >= x; y--) {
System.out.print(" ");
}
for (int y = 0; y <= x; y++) {
yFaktorial *= panggil.proc(y);
minFaktorial = panggil.minus(x, y);
simpan = panggil.faktorial(minFaktorial);
hasil = xFaktorial/(yFaktorial * (simpan));
System.out.print(hasil + " ");;
}
yFaktorial = 1;
System.out.println("");
}
}
}
NB:
public class SegiTigaPascal
public int proc(int angka){
if(angka == 0){
return 1;
}
else
return angka;
}
public int minus(int x, int y){
if(x - y == 0){
return 1;
}
else
return x- y;
}
public int faktorial(int angka){
int faktorial = 1;
for(int x = 1; x <= angka; x++){
faktorial *= x;
}
return faktorial;
}
public static void main(String[] args) {
SegiTigaPascal panggil = new SegiTigaPascal();
int batas = 4;
int xFaktorial = 1;
int yFaktorial = 1;
int minFaktorial = 1;
int simpan;
int hasil = 0;
for (int x = 0; x <= batas; x++) {
xFaktorial *= panggil.proc(x);
for (int y = batas; y >= x; y--) {
System.out.print(" ");
}
for (int y = 0; y <= x; y++) {
yFaktorial *= panggil.proc(y);
minFaktorial = panggil.minus(x, y);
simpan = panggil.faktorial(minFaktorial);
hasil = xFaktorial/(yFaktorial * (simpan));
System.out.print(hasil + " ");;
}
yFaktorial = 1;
System.out.println("");
}
}
}
NB:
- Script berwarna biru adalah fungsi untuk mengembalikan nilai 1 apabila angka pada parameter adalah 0, Fungsi ini berlaku karena (entah saya yang gak tahu atau emang gak ada) java tidak menyediakan prosedur faktorial sendiri, sehingga fungsi ini akan berjalan apabila dibutuhkan hasil 0 faktorial.
- Sript berwarna merah adalah fungsi untuk menghitung hasil pengurangan. Hasil pengurangan ini diperlukan karena kombinasi nCr = n! / r!(n - r)!. Nah, fungsi ini yang berperan dalam menghitung (n - r)!.
- Script berwarna kuning adalah fungsi untuk menghitung faktorial.
Sabtu, 21 Mei 2011
Penerapan Link List
Okeh brad... Pada kesempatan kali ini ane mau sedikit share tentang link list sebagai lanjutan dari artikel sebelumnya. Kali ini ane mau share tentang penerapan link list dalam hal yang lebih luas yaitu penerapan link list dalam mencari data terkecil, terbesar, dan mengurutkan data yang berupa angka. Berikut script untuk mencari data terkecil:
Sebelumnya, buat class baru terlebih dahulu. Pada contoh kali ini nama classnya adalah LinkedList.
public class LinkedList {
int data;
LinkedList next;
public LinkedList(){
}
public LinkedList(int data){
this.data = data;
}
public void tampil(){
System.out.print(data + " ");
}
}
Setelah itu buat class baru lagi. Pada contoh kali ini adalah Process.
public class Process {
LinkedList awal;
int k = 0;
public void masuk(int data) {
LinkedList link = new LinkedList(data);
link.next = awal;
awal = link;
}
public void tampil() {
LinkedList link = awal;
while (link != null) {
link.tampil();
link = link.next;
}
}
public int min(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] > data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
Perhatikan pada blok yang berwarna merah, di dalamnya terdapat satu baris yang di tulis dengan huruf tebal dan berwarna hitam. Blok itu adalah blok yang digunakan untuk mencari data angka terkecil, apabila ingin mencari data angka terbesar, hanya tinggal mengganti dengan if(data[x] < data[y]).
public int max(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
Nah, sekarang bagaimana untuk mengurutkan data menggunakan link list??? Pada contoh kali ini, data yang akan diurutkan akan ditampilkan yaitu fungsi berupa void. Kalo temen – temen ingin mengembalikan nilai dari data yang temen – temen urutkan, silahkan dimodifikasi sendiri. Silahkan tambahkan script mengurutkan data dengan fungsi tampil() yang ada di class process. Berikut scriptnya:
public void tampil() {
LinkedList link = awal;
while (link != null) {
int n = 1;
link.tampil();
link = link.next;
k += n;
}
System.out.println("\nAscending");
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
int temp;
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] > data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}
}
System.out.print(data[x] + " ");
}
System.out.println("\nDescending");
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] < data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}
}
System.out.print(data[x] + " ");
}
}
Lalu buat class baru untuk menampilkan data – data yang ingin dimasukkan. Pada contoh kali ini nama classnya adalah Main.
public class Main {
public static void main(String[] args){
Process angky = new Process();
angky.masuk(4);
angky.masuk(8);
angky.masuk(3);
angky.masuk(1);
angky.masuk(2);
System.out.print(angky.min());
System.out.println("");
Process cahaya = new Process();
cahaya.masuk(4);
cahaya.masuk(8);
cahaya.masuk(3);
cahaya.masuk(1);
cahaya.masuk(2);
System.out.print(cahaya.max());
System.out.println("");
Process putra = new Process();
putra.masuk(4);
putra.masuk(8);
putra.masuk(3);
putra.masuk(1);
putra.masuk(2);
putra.tampil();
}
}
PENTING!!!
Tabulasi dalam java sangatlah penting, apabila temen – temen mengcopas script di atas, pasti nantinya tabulasi di atas akan lurus rata kiri. Solusinya (khusus yang menggunakan netbeans) yaitu setelah temen – temen mengcopas script di atas, tekan Shift + Alt + F. Secara otomatis netbeans akan mengatur tabulasi script yang tentu saja akan memudahkan pembacaan script.
Jumat, 20 Mei 2011
Selection sort
Ok, kali ini ane mau share tentang bagaimana sorting secara selection sort. Pada kesempatan kali ini ane coba jelasin selection sort dengan menambah penjelasan dalam program itu sendiri. Silahkan membuat class baru lalu copy script di bawah ini:
public static void main(String[] args) {
int[] data = {8, 4, 2, 6, 3, 7, 17, 28};
int tampung = 0;
for (int x = 0; x < data.length; x++) {
for (int y = x + 1; y < data.length; y++) {
System.out.println("\nmembandingkan " + data[x] + " dengan " + data[y]);
System.out.print("awalnya data[x] adalah " + data[x] + " lalu ");
if (data[x] > data[y]) {
tampung = data[x];
data[x] = data[y];
data[y] = tampung;
System.out.print("data[x] menjadi " + data[x] + ", data[y] menjadi " + data[y] + ". ");
}
else{
System.out.print("data[x] tidak ditukar karena tidak memenuhi kondisi if dan data[y] berlanjut. ");
}
}
System.out.println("");
}
}
Keterangan yang warna merah akan membantu temen" dalam mengerti tentang selection sort.
Semoga bermanfaat!!!
public static void main(String[] args) {
int[] data = {8, 4, 2, 6, 3, 7, 17, 28};
int tampung = 0;
for (int x = 0; x < data.length; x++) {
for (int y = x + 1; y < data.length; y++) {
System.out.println("\nmembandingkan " + data[x] + " dengan " + data[y]);
System.out.print("awalnya data[x] adalah " + data[x] + " lalu ");
if (data[x] > data[y]) {
tampung = data[x];
data[x] = data[y];
data[y] = tampung;
System.out.print("data[x] menjadi " + data[x] + ", data[y] menjadi " + data[y] + ". ");
}
else{
System.out.print("data[x] tidak ditukar karena tidak memenuhi kondisi if dan data[y] berlanjut. ");
}
}
System.out.println("");
}
}
Keterangan yang warna merah akan membantu temen" dalam mengerti tentang selection sort.
Semoga bermanfaat!!!
Senin, 02 Mei 2011
Perkalian Matriks
Berikut adalah contoh script perkalian matrix berordo 2 X 2:
public class Matrix {
public static void main(String[] args){
int a[][] = {{1,5},{2,8}};
int b[][] = {{6,7},{9,3}};
System.out.println("a * b");
int[][] temp = new int[a.length][a.length];//variable array 2D untuk menyimpan hasil a * b
int kali;//variable untuk menyimpan hasil perkalian
int tambah = 0;//variable untuk menyimpan hasil penjumlahan dari perkalian
for(int x = 0; x < a.length; x++){
for(int y = 0; y < a.length; y++){
for(int z = 0; z < a.length; z++){
kali = a[x][z] * b[z][y];
tambah += kali;
}
tempa[x][y] = tambah;
tambah = 0;//mengeset nilai tambah menjadi 0 agar perulangan berikutnya, variable tambah tidak membawa nilai sebelumnya
}
}
for(int x = 0; x < temp.length; x++){
for(int y = 0; y < temp.length; y++){
System.out.print(temp[x][y] + " ");//menampilkan hasil akhir matrix dari proses di atas
}
System.out.println("");
}
}
}
Contoh si atas merupakan contoh perkalian matrix 2 X 2, Temen - temen bisa nambahin sendiri sesuai keinginan temen - temen, script di atas berlaku untuk ordo 3 X 3, 4 X 4, 5 X 5,dst.
Semoga Bermanfaat!
public class Matrix {
public static void main(String[] args){
int a[][] = {{1,5},{2,8}};
int b[][] = {{6,7},{9,3}};
System.out.println("a * b");
int[][] temp = new int[a.length][a.length];//variable array 2D untuk menyimpan hasil a * b
int kali;//variable untuk menyimpan hasil perkalian
int tambah = 0;//variable untuk menyimpan hasil penjumlahan dari perkalian
for(int x = 0; x < a.length; x++){
for(int y = 0; y < a.length; y++){
for(int z = 0; z < a.length; z++){
kali = a[x][z] * b[z][y];
tambah += kali;
}
tempa[x][y] = tambah;
tambah = 0;//mengeset nilai tambah menjadi 0 agar perulangan berikutnya, variable tambah tidak membawa nilai sebelumnya
}
}
for(int x = 0; x < temp.length; x++){
for(int y = 0; y < temp.length; y++){
System.out.print(temp[x][y] + " ");//menampilkan hasil akhir matrix dari proses di atas
}
System.out.println("");
}
}
}
Contoh si atas merupakan contoh perkalian matrix 2 X 2, Temen - temen bisa nambahin sendiri sesuai keinginan temen - temen, script di atas berlaku untuk ordo 3 X 3, 4 X 4, 5 X 5,dst.
Semoga Bermanfaat!
Langganan:
Postingan (Atom)