Senin, 18 Januari 2010

PROGRAM MENU HITUNG LUAS DENGAN JAVA

/* PROGRAM MENU HITUNG LUAS
* OLEH : I PUTU SUADNYANA
* NIM : 008 01 255
* =====STITNA======
*/
import java.io.*;
public class Luas {
// method LUAS SEGITIGA
public int segitiga(int a,int t){
float l=(float) ((0.5*a)*t);
return (int) l;
}
// method LUAS PERSEGI PANJANG
public int persegiPanjang(int p, int lb){
float l=p*lb;
return (int) l;
}
// method LUAS BUJUR SANGKAR
public int bujurSangkar(int s){
float l=s*s;
return (int) l;
}
// method LUAS LINGKARAN
public int lingkaran(int r, float phi){
float l=phi*(r*r);
return (int) l;
}
// method untuk input angka
public int inputAngka(){
String a;
int a2=0;
try {
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
a=br.readLine();
a2=Integer.parseInt(a);
}
catch (IOException e ){
System.err.println("Error" + e);
}
return a2;
}
// method pemilihan menu dan pemanggilan method2 sesuai pilihan
public void pilihmenu(int pil){
int a=0;
int t=0;
int p=0;
int lb=0;
int s=0;
int r=0;
float l=0;
float phi=(float) 3.14;

switch(pil){
case 1 :
System.out.println();
System.out.println("[Luas Segitiga]");

System.out.print("Masukan Alasnya : ");
a=this.inputAngka();
System.out.print("Masukan Tingginya : ");
t=this.inputAngka();

l=this.segitiga(a,t);
System.out.println("----------------------------------- ");
System.out.println("Jadi Luas Segitiga adalah : " +l +" cm2");
System.out.println();
break;
case 2 :
System.out.println();
System.out.println("[Luas Persegi Panjang]");

System.out.print("Masukan panjangnya : ");
p=this.inputAngka();
System.out.print("Masukan lebarnya : ");
lb=this.inputAngka();

l=this.persegiPanjang(p,lb);
System.out.println("---------------------------------------");
System.out.println("Jadi Luas Persegi Panjang adalah : "+l +" cm2");
System.out.println();
break;
case 3 :
System.out.println();
System.out.println("[Bujur Sangkar]");

System.out.print("Masukan panjang sisinya : ");
s=this.inputAngka();

l=this.bujurSangkar(s);
System.out.println("-------------------------------------");
System.out.println("Jadi Luas Bujur Sangkar adalah : "+l +" cm2");
System.out.println();
break;
case 4 :
System.out.println();
System.out.println("[Luas Lingkaran]");

System.out.print("Masukan jari-jari lingkaran : ");
r=this.inputAngka();

l=this.lingkaran(r,phi);
System.out.println("-----------------------------------");
System.out.println("Jadi Luas Lingkaran adalah : "+l +" cm2");
System.out.println();
break;
case 5 :
System.out.println();
System.out.println("Anda Keluar");
break;

default :
System.out.println("----------------");
System.out.println("Anda Salah Pilih");
System.out.println("----------------");
}
}
// PROGRAM UTAMA
public static void main(String[] args){
int pil;
Luas ls= new Luas();
do {
System.out.println();
System.out.println("------------------");
System.out.println("MENU HITUNG LUAS:");
System.out.println("1. Segitiga");
System.out.println("2. Persegi Panjang");
System.out.println("3. Bujur Sangkar");
System.out.println("4. Lingkaran");
System.out.println("5. Keluar");
System.out.println("------------------");

System.out.print("Masukkan Pilihan : ");
pil=ls.inputAngka();
ls.pilihmenu(pil);

}while (pil!=5);
}

}

OUTPUTNYA :

------------------
MENU HITUNG LUAS:
1. Segitiga
2. Persegi Panjang
3. Bujur Sangkar
4. Lingkaran
5. Keluar
------------------
Masukkan Pilihan : 1

[Luas Segitiga]
Masukan Alasnya : 6
Masukan Tingginya : 7
-----------------------------------
Jadi Luas Segitiga adalah : 21.0 cm2


------------------
MENU HITUNG LUAS:
1. Segitiga
2. Persegi Panjang
3. Bujur Sangkar
4. Lingkaran
5. Keluar
------------------
Masukkan Pilihan : 4

[Luas Lingkaran]
Masukan jari-jari lingkaran : 10
-----------------------------------
Jadi Luas Lingkaran adalah : 314.0 cm2


------------------
MENU HITUNG LUAS:
1. Segitiga
2. Persegi Panjang
3. Bujur Sangkar
4. Lingkaran
5. Keluar
------------------
Masukkan Pilihan : 2

[Luas Persegi Panjang]
Masukan panjangnya : 12
Masukan lebarnya : 5
---------------------------------------
Jadi Luas Persegi Panjang adalah : 60.0 cm2


------------------
MENU HITUNG LUAS:
1. Segitiga
2. Persegi Panjang
3. Bujur Sangkar
4. Lingkaran
5. Keluar
------------------
Masukkan Pilihan : 3



[Bujur Sangkar]
Masukan panjang sisinya : 8
-------------------------------------
Jadi Luas Bujur Sangkar adalah : 64.0 cm2


------------------
MENU HITUNG LUAS:
1. Segitiga
2. Persegi Panjang
3. Bujur Sangkar
4. Lingkaran
5. Keluar
------------------
Masukkan Pilihan : 5

Anda Keluar


Sabtu, 09 Januari 2010

Permasalahan Polymorphism Umum

Polymorphism adalah salah satu dari tiga kemampuan yang mendasar yang dimiliki oleh OOP, setelah data abstraction dan inheritance.
Polymorphism

Melalui inheritance, kita bisa menciptakan sebuah hirarki obyek, baik simple atau kompleks sekali pun. Bayangkan hirarki kompleks seperti hirarki dunia hewan. Hirarkinya pasti berlapis-lapis, tetapi turunan sedalam apapun tetaplah seekor hewan. Polymorphism memungkinkan untuk menukar obyek dari turunan ke obyek superclass-nya. Katakan:
Animal ani = new Animal(); // variable bertipe Animal
ani = new Lion(); // sekarang bertipe Lion
Setelah baris kedua, memanggil method yang didefenisikan di Animal, akan memanggil implementasi method yang ada di Lion. Konsep OOP ini memungkinkan hasil pemanggilan method berubah/berbeda tergantung ke instance obyek mana dia direferensikan. Deklarasi di atas tidak tidak berlaku sebaliknya :
Lion lion = new Animal(); // tidak valid
Polymorphism menyediakan cara yang berbeda pada pemisahan interface dari implementasinya, untuk memasangkan ulang apa dari bagaimana. Polymorphism memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca, juga memberikan suatu kemampuan pada program untuk berkembang secara terus menerus baik pada tahap pengembangan awal ataupun pada saat ingin menambahkan kemampuan-kemampuan yang baru.
Program berikut ini mungkin akan tampak aneh. Mengapa kita secara sengaja melupakan tipe dari sebuah object ? Ini semua dapat terjadi bila kita melakukan upcast, dan menjadikannya kelihatan seperti kalau tune() secara langsung mengambil handle dari Wind sebagai sebuah argumen. Ini semua membuat sesuatu yang mendasar : Kalau kita melakukannya, kita harus menuliskan tune() yang baru untuk setiap Instrument didalam system kita. Anggap saja kita mengikuti alasan ini dan menambahkan instrument Stringed dan Brass :
//: Music2.java
// Overloading instead of upcasting
class Note2 {
private int value;
private Note2(int val) { value = val; }
public static final Note2
middleC = new Note2(0),
cSharp = new Note2(1),
cFlat = new Note2(2);
} // Etc.
class Instrument2 {
public void play(Note2 n) {
System.out.println(\"Instrument2.play()\");
}
}
class Wind2 extends Instrument2 {
public void play(Note2 n) {
System.out.println(\"Wind2.play()\");
}
}
class Stringed2 extends Instrument2 {
public void play(Note2 n) {
System.out.println(\"Stringed2.play()\");
}
}
class Brass2 extends Instrument2 {
public void play(Note2 n) {
System.out.println(\"Brass2.play()\");
}
}
public class Music2 {
public static void tune(Wind2 i) {
i.play(Note2.middleC);
}
public static void tune(Stringed2 i) {
i.play(Note2.middleC);
}
public static void tune(Brass2 i) {
i.play(Note2.middleC);
}
public static void main(String[] args) {
Wind2 flute = new Wind2();
Stringed2 violin = new Stringed2();
Brass2 frenchHorn = new Brass2();
tune(flute); // No upcasting
tune(violin);
tune(frenchHorn);
}
} ///:~
Kode diatas dapat dijalankan, tetapi disana ada kekurangan terbesar. Kita harus menuliskan metoda tipe yang spesifik untuk setiap class Instrument2 yang baru kita tambahkan. Ini semua berarti makin banyak kode yang akan kita tulis, tetapi juga berarti kalau kita ingin menambahkan sebuah metoda baru seperti tune() atau sebuah tipe baru dari Instrument, kita mendapatkan kalau perkerjaan kita makin banyak. Dengan menambahkan fakta bahwa kompiler tidak akan memberikan pesan-pesan kesalahan kalau kita lupa meng overload salah satu dari metoda-metoda kita dan seluruh proses pekerjaan dengan tipe menjadi tidak dapat ditangani.
Bukankah dapat menjadi lebih menyenangkan kalau kita hanya menuliskan satu metoda saja yang dapat mengambil class asal sebagai argumennya, dan bukan dari semua class-class turunannya. Itulah memang lebih memudahkan bila kita melupakan adanya class-class turunan, dan menuliskan kode yang hanya berkomunikasi dengan class asal?
Itulah apa yang disediakan oleh polymorphism. Walau bagaimanapun kebanyakan programmer (yang berasal dari latar belakang prosedural) mempunyai sedikit kesulitan untuk beradaptasi dengan polymorphism.
Kesimpulan
Dengan polymorphism pekerjaan seorang programmer dapat dimudahkan dengan menuliskan kode yang lebih sedikit. Untuk mengakses class-class turunan tidak dibutuhkan penulisan kode yang berlainan

Jumat, 08 Januari 2010

TUGAS P B O

1. Tugas Mencari Output Class FarmExample2
a. class Animal
public class Animal {
private int weight;
public Animal(int w) { weight=w; }
public void setWeight(int w) { weight = w; }
public int getWeight() { return weight; }
public void talk() {
System.out.println("An animal can't talk");
}
}

b. class Cow
public class Cow extends Animal {
public Cow() { super(100); }
public void talk() {
System.out.println("Moo!");
}
}

c. class Pig
public class Pig extends Animal{
public Pig() { super(40); }

}

d. class Sheep
public class Sheep extends Animal{
public Sheep() { super(65); }

}

e. Main Program/ Class FarmExample2
public class FarmExample2 {
public static void main(String[] args) {
Animal[] farm = {new Cow(), new Pig(),
new Sheep()};
int totalWeight = 0;
for (int i=0; i totalWeight += farm[i].getWeight();
System.out.println("The total weight of the animals is " + totalWeight);
}
}



Keluaran program:
The total weight of the animals is 205







2. Class Bebek
a. class Animal

public class Animal {
private int weight;
public Animal(int w) { weight=w; }
public void setWeight(int w) { weight = w; }
public int getWeight() { return weight; }
public void talk() {
System.out.println("An animal can't talk");
}
}

b. class Bebek
public class Bebek extends Animal{
int numberOfEggs;
public Bebek() {
super(4); // panggil constructor induk
numberOfEggs = 15;}
public void talk() {
System.out.println(" Bebek Berbunyi Kwek...kwek!");}
public int getNumberOfEggs() {
return numberOfEggs;}
public void setNumberOfEggs(int n) {
numberOfEggs = n;}
}

c. Main Program
public class FarmExample3 {
public static void main(String[] args) {
Animal[] farm = {new Bebek()};
for (int i=0; i farm[i].talk();
System.out.println(" Memiliki " +((Bebek)farm[i]).getNumberOfEggs()+ " Telur");
}
}
}


Keluaran program :
Bebek Berbunyi Kwek…kwek!
Memiliki 15 Telur


3. Java tidak mendukung Multiple Inheritance secara murni.
Mengapa?

Karena fitur yang ada pada bahasa Java saat ini belum mendukung adanya multiple inheritance secara murni, tetapi multiple inheritance dalam java bisa didapat dengan memamfaatkan fitur interface. Didalam java hanya mendukung adanya Single Inheritance secara murni. Multiple Inherintance secara murni bisa di dapat pada bahasa sejenis C, dan C++.

Outputnya :

Program C++ Untuk Menampilkan Bintang

Listing Program C++ untuk menampilkan deret bintang

#include
#include
void main()
{
int a,b,d,i,j;
cout<<"\t====================================\n";
cout<<"\t=====MENAMPILKAN DERET BINTANG======\n";
cout<<"\t====================================\n\n";
cout<<"(a) (b) (c) (d)\n";
for (d=1; d<=10; d++)
{ cout< for(i=1; i<=d; i++)
{ cout<<"*"; }
}
for (d=10; d>=1; d--)
{
if ( d==10)
{
gotoxy(15,7);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==9)
{
gotoxy(15,8);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==8)
{
gotoxy(15,9);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==7)
{
gotoxy(15,10);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==6)
{
gotoxy(15,11);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==5)
{
gotoxy(15,12);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==4)
{
gotoxy(15,13);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==3)
{
gotoxy(15,14);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==2)
{
gotoxy(15,15);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}
if ( d==1)
{
gotoxy(15,16);
for(j=1;j<=d;j++)
{ cout<<"*"; }
}

}
for (a=10;a>=1;a--)
{
if (a==10)
{
gotoxy(30,7);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==9)
{
gotoxy(31,8);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==8)
{
gotoxy(32,9);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==7)
{
gotoxy(33,10);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==6)
{
gotoxy(34,11);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==5)
{
gotoxy(35,12);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==4)
{
gotoxy(36,13);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==3)
{
gotoxy(37,14);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==2)
{
gotoxy(38,15);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==1)
{
gotoxy(39,16);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
}
for (a=1;a<=10;a++)
{
if (a==1)
{
gotoxy(55,7);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==2)
{
gotoxy(54,8);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==3)
{
gotoxy(53,9);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==4)
{
gotoxy(52,10);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==5)
{
gotoxy(51,11);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==6)
{
gotoxy(50,12);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==7)
{
gotoxy(49,13);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==8)
{
gotoxy(48,14);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==9)
{
gotoxy(47,15);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
if (a==10)
{
gotoxy(46,16);
for (b=1;b<=a;b++)
{ cout<<"*"; }
}
}
cout<<"\n\n\n\n\n";
cout<<"\t==========TUGAS STRUKTUR DATA==========\n";
cout<<"\t ====== I PUTU SUADNYANA ======\n";
cout<<"\t========== 008 01 255 ==========\n";
}