Pemrograman JAVA


BAB  I
PENGENALAN BAHASA PEMROGRAMAN JAVA

1.1 Teknologi JAVA
·         Sebuah Bahasa Pemrograman
Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh bentuk aplikasi,desktop, web dan lainnya, sebagaimana dibuat dengan menggunakan bahasa pemrograman konvensional yang lain. Java adalah bahasa pemrograman yang berorientasi objek (OOP) dan dapat dijalankan pada berbagai platform sistem operasi dan bersifat open source.
·         Sebuah Development Environment
Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak tools : compiler, interpreter, penyusun dokumentasi, paket kelas dan sebagainya.

·         Sebuah Aplikasi
Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime Environment (JRE).

·         Sebuah Deployment Environment
Terdapat dua komponen utama dari Deployment Environment. Pertama adalah JRE, yang terdapat pada paket J2SDK, mengandung kelas–kelas untuk semua paket teknologi Java yang meliputi kelas dasar dari Java, komponen GUI dan sebagainya. Komponen yang lain terdapat pada Web Browser yang  menyediakan interpreter dan runtime environment dari teknologi Java.

1.2 Fitur dari JAVA

-       Java Virtual Machine (JVM)

JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM.

-       Garbage Collection
Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek–objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh programmer dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.

-       Code Security
Code Security terimplementasi pada Java melalui penggunaan Java Runtime Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code.
1.      class-loader
Menangani pemuatan kelas Java ke runtime interpreter. Proses ini menyediakan pengamanan dengan memisahkan kelas–kelas yang berasal dari local disk dengan kelas–kelas yang diambil dari jaringan.
2.      bytecode verifier
Membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan–aturan dasar bahasa Java.
3.      manajemen keamanan
Menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing.  Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi.


BAB  II
DASAR-DASAR PEMROGRAMAN JAVA

2.1 Penulisan Program Java
a.       Setiap program Java harus disimpan sebagai file yang diakhiri dengan ekstensi .java
b.      Nama file harus sama dengan nama dari class public. Sebagai contoh, apabila nama dari class public pada program adalah Hello, maka nama filenya adalah Hello.java
2.2 Komentar Program
Merupakan catatan yang ditulis pada sebuah code untuk tujuan dokumentasi,bukan bagian dari program dan tidak mempengaruhi jalannya program.
2.3 Statement
Satu atau beberapa baris code yang diakhiri dengan sebuah t  titik koma.
Contoh:
System.out.println(“Hello world”);
int a=5;
2.4 Identifier
·         merupakan t  (token) yang mewakili nama dari variabel, method, class, dll
·         Contoh dari identifier adalah: Hello, main, System, out.
·         Java identifier bersifat case-sensitive. Sebagai contoh, identifier Hello tidak sama dengan hello.
·         Identifier harus diawali dengan huruf, t  garis bawah “_”, t  dolar “$
·         Huruf dapat menggunakan huruf kecil atau huruf kapital.
·         Karakter selanjutnya dapat menggunakan angka dari 0 sampai 9.
·         Identifier tidak dapat menggunakan keyword Java, seperti class, public, void, dll.
2.5 Kata Kunci (Keyword)
·         Keyword merupakan identifier khusus yang sudah disediakan oleh Java untuk tujuan tertentu.
·         Keyword tidak dapat digunakan sebagai nama dari variabel, class, method ... dll.
2.6 Variabel
Variabel adalah item yang digunakan data untuk menyimpan pernyataan objek. Variabel memiliki tipe data dan nama.

2.7 Tipe Data
·         Boolean
·         Char
·         Byte, short, int, long
·         Float, double
2.8 Operator
·         Aritmatika (*, /, +, -, %)
·         Increment dan decrement (++, --)
·         Relasi (>, <, >=, <=, ==, !=)
·         Logika (&&, ||, !)
PERCOBAAN
PERCOBAAN 1 MENAMPILKAN DATA VARIABLE
public class OutputVariabel {
    public static void main(String[] args) {
        int value =10;
        char x;
        x='A';
        System.out.println(value);
        System.out.println("The value of x="+x);
      }
}
Hasil output :
10
The value x=A
PERCOBAAN 2 PENGGUNAAN OPERATOR ARITMETIKA
public class aritmatikaDemo {
    public static void main(String[] args) {
        //sedikit angka
        int i =37;
        int j =42;
        double x=27.475;
        double y=7.22;
        System.out.println("Variable values....");
        System.out.println("i="+i);
        System.out.println("j="+j);
        System.out.println("x="+x);
        System.out.println("y="+y);

        //penjumlahan angka
        System.out.println("Adding...");
        System.out.println("i+j="+(i+j));
        System.out.println("x+y="+(x+y));

        //pengurangan angka
        System.out.println("Subtracting...");
        System.out.println("i-j="+(i-j));
        System.out.println("x-y="+(x-y));

        //perkalian angka
        System.out.println("Multiplying...");
        System.out.println("i*j="+(i*j));
        System.out.println("x*y="+(x*y));

        //pembagian angka
        System.out.println("Dividing...");
        System.out.println("i/j="+(i/j));
        System.out.println("x/y="+(x/y));

        //menghitung modulus dari pembagian
        System.out.println("Computing the remainder...");
        System.out.println("i%j="+(i%j));
        System.out.println("x%y="+(x%y));

        //tipe penggabungan
        System.out.println("Mixing tipes...");
        System.out.println("j+y="+(j+y));
        System.out.println("i*x="+(i*x));
    }
}
Hasil Output:
Variable values....
i=37
j=42
x=27.475
y=7.22
Adding...
i+j=79
x+y=34.695
Subtracting...
i-j=-5
x-y=20.255000000000003
Multiplying...
i*j=1554
x*y=198.36950000000002
Dividing...
i/j=0
x/y=3.805401662049862
Computing the remainder...
i%j=37
x%y=5.815000000000002
Mixing tipes...
j+y=49.22
i*x=1016.575
PERCOBAAN 3 PENGGUNAAN OPERATOR RELASI

public class RelasiDemo {
    public static void main(String[] args) {
        //sedikit angka
        int i =37;
        int j =42;
        int k =42;
        System.out.println("Nilai variable....");
        System.out.println("i="+i);
        System.out.println("j="+j);
        System.out.println("k="+k);

        //lebih besar dari
        System.out.println("Lebih besar dari...");
        System.out.println("i>j="+(i>j));//false
        System.out.println("j>i="+(j>i));//true
        System.out.println("k>j="+(k>j));//false
        //lebih besar atau sama dengan
        System.out.println("Lebih besar atau sama dengan...");
        System.out.println("i>=j="+(i>=j));//false
        System.out.println("j>=i="+(j>=i));//true
        System.out.println("k>=j="+(k>=j));//true

        //lebih kecil dari
        System.out.println("Lebih kecil dari...");
        System.out.println("i<j="+(i<j));//true
        System.out.println("j<i="+(j<i));//false
        System.out.println("k<j="+(k<j));//false

        //lebih kecil atau sama dengan
        System.out.println("Lebih kecil atau sama dengan...");
        System.out.println("i<=j="+(i<=j));//true
        System.out.println("j<=i="+(j<=i));//false
        System.out.println("k<=j="+(k<=j));//true

        // Sama dengan
        System.out.println("sama dengan...");
        System.out.println("i==j="+(i==j));//false
        System.out.println("k==j="+(k==j));//true

        //Tidak sama dengan
        System.out.println("tidak sama dengan...");
        System.out.println("i!=j="+(i!=j));//true
        System.out.println("k!=j="+(k!=j));//false
    }}
Hasil output :
Nilai variable....
i=37
j=42
k=42
Lebih besar dari...
i>j=false
j>i=true
k>j=false
Lebih besar atau sama dengan...
i>=j=false
j>=i=true
k>=j=true
Lebih kecil dari...
i<j=true
j<i=false
k<j=false
Lebih kecil atau sama dengan...
i<=j=true
j<=i=false
k<=j=true
Sama dengan...
i==j=false
k==j=true
Tidak sama dengan...
i!=j=true
k!=j=false


PERCOBAAN 4 PENGGUNAAN OPERATOR LOGIKA DAN BOOLEAN AND

public class TesAND {
    public static void main(String[] args) {
        int i=0;
        int j=10;
        boolean test=false;

        //demonstrasi &&
        test=(i>10)&& (j++>9);
        System.out.println(i);
        System.out.println(j);
        System.out.println(test);

        //demonstrasi &
        test = (i>10)& (j++>9);
        System.out.println(i);
        System.out.println(j);
        System.out.println(test);
    }
}
Hasil Output :
11
false




PERCOBAAN 5 PENGGUNAAN OPERATOR LOGIKA DAN BOOLEAN OR

public class TestOR {
    public static void main(String[] args) {
        int i =0;
        int j=10;
        boolean test = false;

        //demostrasi ||
        test=(i<10)|| (j++>9);
        System.out.println(i);
        System.out.println(j);
        System.out.println(test);

        //demonstrasi |
        test=(i<10)|(j++>9);
        System.out.println(i);
        System.out.println(j);
        System.out.println(test);
    }
}
Hasil Output :
11
true



PERCOBAAN 6 PENGGUNAAN OPERATOR LOGIKA EKSKLUSIF OR

public class TestXOR {
    public static void main(String[] args) {
        boolean val1=true;
        boolean val2=true;
        System.out.println(val1^val2);

        val1=false;
        val2=true;
        System.out.println(val1^val2);

        val1=false;
        val2=false;
        System.out.println(val1^val2);

        val1=true;
        val2=false;
        System.out.println(val1^val2);
    }
}
Hasil Output :
false
true
false
true


PERCOBAAN 7 PENGGUNAAN OPERATOR LOGIKA NOT

public class TestNOT {
    public static void main(String[] args) {
        boolean val1=true;
        boolean val2=false;
        System.out.println(!val1);
        System.out.println(!val2);
    }
}
Hasil Output :
false
true



PERCOBAAN 8 PENGGUNAAN OPERATOR KONDISI (?:):
Contoh 1
public class KondisiOperator {
    public static void main(String[] args) {
        String status="";
        int grade=80;

        //mendapatkan status pelajar
        status= (grade>=60)?"Passed":"Fail";
        //print status
        System.out.println(status);
           }
}
Hasil Output :
Passed
Contoh 2
class KondisiOperator1 {
    public static void main(String[] args) {
        int score=0;
        char answer='a';
        score=(answer== 'a')? 10:0;
        System.out.println("Score="+score);
    }
}
Hasil Output :
Score=10




PERCOBAAN 9 PENGGUNAAN VARIABLE

public class Shirt {
    public int shirtID=0; //Default ID for the shirt
    public String description ="-description required-";//default
    public char colorCode = 'U';//The color codes are R=Red,B=Blue,U=Unset
    public double price =0.0;// Default price for all shirts
    public int quantityInStock=0;//

    public void displayShirtInformation(){
        System.out.println("Shirt ID :"+shirtID);
        System.out.println("Shirt Description :"+description);
        System.out.println("Color Code :"+colorCode);
        System.out.println("Shirt Price :"+price);
        System.out.println("Quantity in Stock :"+quantityInStock);
    }
    public static void main(String[] args) {
        Shirt shirt=new Shirt();
        shirt.displayShirtInformation();
    }
}

Hasil Output :
Shirt ID :0
Shirt Description :-description required-
Color Code :U
Shirt Price :0.0
Quantity in Stock :0
PERCOBAAN 10 TIPE DATA DAN ASSIGNMENT

public class Orang {
    /**Membuat instance baru dari Orang*/
    public int tahunUmur=18;

    public void hitungUmur(){
        int hariUmur=tahunUmur*365;
        long detikUmur=tahunUmur*365*24L*60*60;

        System.out.println("Umur anda adalah :"+hariUmur+"hari");
        System.out.println("Umur anda adalah :"+detikUmur+"detik");
     }
    public static void main(String[] args) {
        Orang o=new Orang();
        o.hitungUmur();
    }
}

Hasil Output :
Umur anda adalah :6570hari
Umur anda adalah :567648000detik



BAB III
INPUT DARI KEYBOARD

3.1 Menggunakan BufferedReader untuk mendapatkan input

Digunakan class BufferedReader yang berada di package java.io untuk mendapatkan input dari keyboard. Langkah-langkah yang diperlukan untuk mendapatkan input dari keyboard:
1.      Tambahkan di bagian paling atas code program : import java.io.*;
2.      Tambahkan statement berikut:
3.      BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );
4.      Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan fungsi readLine() untuk mendapatkan input dari keyboard. Fungsi tersebut harus diketik di dalam blok try-catch :

try{
String temp = dataIn.readLine();
}
catch( IOException e ){
System.out.println(“Error in getting input”); }
3.2 Menggunakan JOptionPane untuk mendapatkan input

Cara lain untuk mendapatkan input dari user adalah dengan menggunakan class JoptionPane yang didapatkan dari javax.swing package. JoptionPane memudahkan memunculkan dialog box st rd yang memberikan kepada user sebuah nilai atau menginformasikan sesuatu





PERCOBAAN

PERCOBAAN 1 MENGGUNAKAN CLASS BUFFEREDREADER

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class GetInputFromKeyboard {
    public static void main(String[] args) {
        BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));

        String name="";
        System.out.println("Please Enter Your Name :");

        try{
            name =dataIn.readLine();
        }catch (IOException e ){
            System.out.println("Error !");
        }
        System.out.println("Hello"+name+"!");
    }
}

Hasil Output :
Please Enter Your Name :
 Rosita
Hello Rosita!
PERCOBAAN 2 INPUT DARI KEYBOARD

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class GetInputFromKeyboard1 {
    public static void main(String[] args) {
        BufferedReader dataIn=new BufferedReader(new InputStreamReader(System.in));
        String name="",hoby="";

        try{
            System.out.println("Nama Anda :");
            name = dataIn.readLine();
            System.out.println("Hobi Anda :");
            hoby = dataIn.readLine();

        }catch(IOException e){
            System.out.println("Gagal membaca keyboard");
        }
        System.out.println("Jadi Anda Hoby "+hoby+".Hoby yang bagus Miss "+name);

    }
}

Hasil Output :
Nama Anda :
Sita
Hobi Anda :
baca
Jadi Anda Hoby baca.Hoby yang bagus Miss Sita




BAB IV
STRUKTUR KONTROL
4.1 Statement if
Pernyataan if akan menentukan sebuah pernyataan (atau blok kode) yang akan eksekusi jika dan hanya jika persyaratan bernilai benar(true).

4.2 Statement if-else
Pernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false.

4.3 Statement if-else-if
Pernyataan pada bagian kondisi else dari blok if-else dapat menjadi struktur if-else yang lain. Kondisi struktur seperti ini mengijinkan kita untuk membuat seleksi persyaratan yang lebih kompleks

4. 4 Statement switch
Switch mengkonstruksikan cabang untuk beberapa kondisi dari nilai.

4. 5 Struktur Kontrol Perulangan
Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan
a.      While
Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok.
b.      do-while $
Do-while loop mirip dengan while-loop. Pernyataan di dalam do-while loop akan dieksekusi beberapa kali selama kondisi bernilai benar(true).
c.       for
Pernyataan for loop memiliki kondisi hampir mirip seperti struktur pengulangan sebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode yang sama sebanyak jumlah yang telah ditentukan

4.6 Pernyataan Percabangan
Tiga bentuk pernyataan percabangan yaitu :
a.      break
Pernyataan break tidak berlabel (unlabeled) digunakan untuk menghentikan jalannya pernyataan switch, pernyataan for, while atau do-while loop.
b.      Continue
Pernyataan continue memiliki dua bentuk: berlabel dan tidak berlabel.   Dapat menggunakan pernyataan continue untuk melanjutkan pengulangan yang sedang dijalankan oleh pernyataan for, while, atau do- while loop.
c.       Return
Pernyataan return digunakan untuk keluar dari sebuah method.





PERCOBAAN

PERCOBAAN 1 STATEMENT IF

public class Grade {
    public static void main(String[] args) {
        double grade=92.0;
        if(grade>=90){
            System.out.println("Excellent !! ");
        }
        else if ((grade<90)&& (grade>=80)){

System.out.println("Good Job !");
        }
        else if ((grade<80)&& (grade>=60)){
            System.out.println("Study harder !");
        }
        else {
            System.out.println("Sorry, you failed !");
        }
    }

Hasil Output :
Excellent !!




PERCOBAAN 2 STATEMENT SWITCH

public class Grade2 {
    public static void main(String[] args) {
        int grade =92;
        switch (grade){
            case 100:
                System.out.println("Excellent !");
                break;
            case 90:
                System.out.println("Good Job !");
                break;
            case 80:
                System.out.println("Study harded !");
                break ;
            default:
                System.out.println("Sorry, you failed !");
        }
    }
}

Hasil Output :
Sorry, you failed !



PERCOBAAN 3 STATEMENT BREAK

public class Grade3 {
    public static void main(String[] args) {
        String names[]={"Beah","Bianca","Lance","Belle","Nico","Yza","Gem","Ethan"};
        String searchName = "Yza";
        boolean foundName = false;
        for (int i=0; i< names.length;i++){
            if(names[i].equals(searchName)){
                foundName=true;
                break;
            }
        }
        if(foundName){
            System.out.println(searchName+" found !");
        }
        else{
            System.out.println(searchName+"not found");
        }
    }
}


Hasil Output:
Yza found !




PERCOBAAN 4 LABELED BREAK STATEMENT
public class Grade4 {
    public static void main(String[] args) {
        String names[]={"Beah","Bianca","Lance","Beah"};
        int count =0;
        for (int i=0;i<names.length;i++){
            if(!names[i].equals("Beah")){
                continue;//skip next statement
            }
            count++;
        }
        System.out.println("There are "+count+" Beahs in the list");
     }
}

Hasil Output :
There are 2 Beahs in the list
PERCOBAAN 5 CONTINUE STATEMENT
public class Grade5 {
    public static void main(String[] args) {

        String name[]= {"Beah","Bianca","Lance","Beah"};
        int count = 0;
        for (int i=0;i<name.length;i++){
            if(!name[i].equals("Beah")){
                continue;// skip next statemen
            }
            count++;
        }
        System.out.println("There are "+count+" Beahs int the list");
    }
}
Hasil Output :
There are 2 Beahs int the list
PERCOBAAN 6 LABELED STATEMENT CONTINUE
public class Grade6 {
    public static void main(String[] args) {
        outerLoop:
            for (int i=0;i<2;i++){
                for (int j=0;j<2;j++){
                    System.out.println("Inside for (j)loop");//message 1
                    if (j==2) continue outerLoop;
                }
                System.out.println("Inside for (i) loop");//message 2
            }
    }
}

Hasil Output :
Inside for (j)loop
Inside for (j)loop
Inside for (i) loop
Inside for (j)loop
Inside for (j)loop
Inside for (i) loop




PERCOBAAN 7 WHILE

public class WhileElevator {
    public boolean doorOpen=false;
    public int currentFloor=1;
    public final int  TOP_FLOOR=5;
    public final int BOTTOM_FLOOR =1;
    public void openDoor(){
        System.out.println("Opening door.");
        doorOpen = true;
        System.out.println("Door is open.");
    }
    public void closeDoor(){
        System.out.println("Closing door");
        doorOpen = false;
        System.out.println("Door is closed");
    }
    public void goUp(){
        System.out.println("Going up one floor");
        currentFloor++;
        System.out.println("Floor: "+currentFloor);
    }
    public void goDown (){
        System.out.println("Going down one floor");
        currentFloor--;
        System.out.println("Floor: "+currentFloor);
    }
    public void setFloor(){
        int desiredFloor=5;
        while (currentFloor !=desiredFloor){
            if(currentFloor<desiredFloor){
                goUp();
            } else{
                goDown();
            }
        }
    }
}

public class WhileElevatorTest {
    public static void main(String[] args) {
        WhileElevator elevator = new WhileElevator();
        elevator.openDoor();
        elevator.closeDoor();
        elevator.setFloor();
    }
}

Hasil Output :
Opening door.
Door is open.
Closing door
Door is closed
Going up one floor
Floor: 2
Going up one floor
Floor: 3
Going up one floor
Floor: 4
Going up one floor
Floor: 5




PERCOBAAN 8 WHILE

public class WhileRectangle {
    public int height = 3;
    public int widht =10;
    public void displayRectangle(){
        int colCount=0;
        int rowCount=0;
        while(rowCount < height){
            colCount=0;
            while (colCount < widht){
                System.out.println("@");
                colCount++;
            }
            System.out.println();
            rowCount++;
            }
        }
}

public class WhileRectangleTest {
    public static void main(String[] args) {
       WhileRectangle rect = new WhileRectangle();
       rect.displayRectangle();

    }
}

Hasil Output :
@
@
@
@




PERCOBAAN 9 FOR

public class ForElevator {
    public boolean doorOpen=false;
    public int currentFloor=1;
    public final int  TOP_FLOOR=5;
    public final int BOTTOM_FLOOR =1;
    public void openDoor(){
        System.out.println("Opening door.");
        doorOpen = true;
        System.out.println("Door is open.");
    }
    public void closeDoor(){
        System.out.println("Closing door");
        doorOpen = false;
        System.out.println("Door is closed");
    }
    public void goUp(){
        System.out.println("Going up one floor");
        currentFloor++;
        System.out.println("Floor: "+currentFloor);
    }
    public void goDown (){
        System.out.println("Going down one floor");
        currentFloor--;
        System.out.println("Floor: "+currentFloor);
    }
    public void setFloor(){
        int desiredFloor=5;
        if (currentFloor>desiredFloor){
            for (int down=currentFloor;down !=desiredFloor;--down){
               goDown();}
        } else {
            for (int Up = currentFloor;Up !=desiredFloor;++Up ){
        goUp();}
        }
    }
}

public class ForElevatorTest {
    public static void main(String[] args) {
        ForElevator elevator = new ForElevator();
        elevator.openDoor();
        elevator.closeDoor();
        elevator.setFloor();
    }
}

Hasil Output :
Opening door.
Door is open.
Closing door
Door is closed
Going up one floor
Floor: 2
Going up one floor
Floor: 3
Going up one floor
Floor: 4
Going up one floor
Floor: 5



PERCOBAAN 10 NESTED FOR

public class ForRectangle {
    public int height = 3;
    public int widht =10;

    public void displayRectangle(){
       for ( int rowCount=0;rowCount<height;rowCount++){
        for ( int colCount=0;colCount<widht;colCount++){
            System.out.println("@");
        }
           System.out.println();
       }
    }
}

public class ForRectangleTest {
    public static void main(String[] args) {
        ForRectangle rect = new ForRectangle();
        rect.displayRectangle();
            }
}

Hasil Output :
@
@
@
@
@
@
@
@
Dst

PERCOBAAN 11 DO-WHILE
public class DoWhileElevator {
    public boolean doorOpen=false;
    public int currentFloor=1;
    public final int  TOP_FLOOR=5;
    public final int BOTTOM_FLOOR =1;
    public void openDoor(){
        System.out.println("Opening door.");
        doorOpen = true;
        System.out.println("Door is open.");
    }
    public void closeDoor(){
        System.out.println("Closing door");
        doorOpen = false;
        System.out.println("Door is closed");
    }
    public void goUp(){
        System.out.println("Going up one floor");
        currentFloor++;
        System.out.println("Floor: "+currentFloor);
    }
    public void goDown (){
        System.out.println("Going down one floor");
        currentFloor--;
        System.out.println("Floor: "+currentFloor);
    }
    public void setFloor(){
        int desiredFloor=5;
        do{
        if (currentFloor < desiredFloor){
            goUp();
        }
        else if(currentFloor<desiredFloor){
                goDown();
            }
        }
        while (currentFloor != desiredFloor);
    }
}
public class DoWhileElevatorTest {
    public static void main(String[] args) {
        DoWhileElevator elevator = new DoWhileElevator();
        elevator.openDoor();
        elevator.closeDoor();
        elevator.setFloor();
    }
}
Hasil Output :
Opening door.
Door is open.
Closing door
Door is closed
Going up one floor
Floor: 2
Going up one floor
Floor: 3
Going up one floor
Floor: 4
Going up one floor
Floor: 5
LATIHAN
1.      Membaca Bilangan
public class MembacaBilangan {
    public static void main(String[] args) {
        double bilangan =10;
        if (bilangan<=10){
            System.out.println("Angka Terdaftar");
        }
        else{
            System.out.println("Invalid Number");
        }
    }
}

Hasil Output :
Angka Terdaftar
2.      Cetak Seratus Kali

public class CetakNamaSeratusKali {
    public static void main(String[] args) {
        int[]nama=new int[100];
        for(int i =0;i<100;i++){
            System.out.println("Rosita");
        }
    }
}

Hasil Output :
Rosita
Rosita
Rosita
Rosita
Dst sampai 100 kali
3.      Perpangkatan

class Matematika {
    static public double kuadrat (double nilai){
        return nilai*nilai;
    }
}
public class Perpangkatan {
    public static void main(String[] args) {
        double bilangan=Matematika.kuadrat(25);
        System.out.println(bilangan);
    }
}

Hasil Output :
625.0



BAB V
ARRAY

Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa ruang. Array adalah sebuah variabel/sebuah lokasi tertentu yang memiliki satu nama sebagai identifier, namun identifier ini dapat menyimpan lebih dari sebuah nilai.

PERCOBAAN
PERCOBAAN 1 PENGAKSESAN ELEMENT ARRAY

public class ArraySample {
    public static void main(String[] args) {
        int[] ages=new int[100];
        for (int i=0;i<100;i++){
            System.out.print(ages[i]);
        }
    }
}

Hasil Output :
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000





PERCOBAAN 2 PANJANG ARRAY

public class ArraySample2 {
    public static void main(String[] args) {
        int[]ages=new int[100];
        for (int i=0;i<ages.length;i++){
            System.out.println(ages[i]);
        }
    }
}

Hasil Output :
0
0
0
Dst

PERCOBAAN 3 ARRAY MULTIDIMENSI

public class ArraySample3 {
    public static void main(String[] args) {
        //Elemen 512x128 dari integer array
        int [][]twoD=new int [512][128];

        //karakter array 8x16x24
        char[][][] threeD=new char [8][16][24];

        //string array 4 barisx2kolom
        String[][] dogs={{"terry","brown"},
        {"Kristin","white"},
        {"Toby","grey"},
        {"Fido","Black"}
        };
        System.out.println(dogs [0][0]);
    }
}
Hasil Output :
terry
PERCOBAAN 4 MENGGUNAKAN ARRAY ARGS PADA METHOD MAIN

public class ArgsTest {
    public static void main(String[] args) {
        System.out.println("args[0]="+args[0]);
        System.out.println("args[1]="+args[1]);
    }
}




LATIHAN
1.      Menampilkan Jumlah Hari
public class JumlahHari {
    public static void main(String[] args) {
         String[] hari ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
         //Menampilkan elemen array
         for (int i =0;i < hari.length;i++)
         System.out.println(hari[i]);
     }
}
Hasil Output :
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday




2.      Buku Alamat

public class Lat6C {
    public static void main(String[] args) {
        String[][] data= new String[2][3];
        int n=0;
        data[0][0]="Florence";
        data[0][1]="135-1234";
        data[0][2]="Medan";

        data[1][0]="Joyce";
        data[1][1]="983-3333";
        data[1][2]="Jakarta";

        data[2][0]="Becca";
        data[2][1]="456-3322";
        data[2][2]="Bandung";

        for(n=0;n<=2;n++){
        System.out.println("Nama    :"+data[n][0]);
        System.out.println("Tel.#   :"+data[n][1]);
        System.out.println("Address :"+data[n][2]);}
        System.out.println("");
            }
}

Hasil Output :
Nama      : Florence
Tel.#       :135-1234
Address  : Medan
Nama      : Joyce
Tel.#       :983-3333
Address  : Jakarta

Nama      : Becca
Tel.#       : 456-3322
Address  : Bandung




BAB VI
MEMBUAT CLASS SENDIRI

PERCOBAAN

PERCOBAAN 1 MEMBUAT CLASS SENDIRI

public class StudentRecord {
    private String name;
    private String address;
    private int age;
    private double mathGrade;
    private double englishGrade;
    private double scienceGrade;
    private double average;
    private static int studentCount;
   
    /**
     * Menghasilkan nama dari siswa
     */
    public String getName(){
        return name;
    }
    /**
     * Mengubah nama siswa
     */
    public void setName(String temp){
        name=temp;
    }
    // area penulisan kode lain
    /**
     * Menghitung rata-rata nilai Matematika, Bahasa Inggris,,**Ilmu Pasti
     */
    public double getAverage(){
        double result=0;
        result = (mathGrade+englishGrade+scienceGrade)/3;
                return result;
    }
    /**
     * Menghasilkan jumlah instance StudentRecord
    */
    public static int getStudentCount(){
        return studentCount;
    }
}
public class StudentRecordExample {
    public static void main(String[] args) {
         //membuat 3 object StudentRecord
        StudentRecord annaRecord=new StudentRecord();
        StudentRecord beahRecord=new StudentRecord();
        StudentRecord crisRecord=new StudentRecord();
            //Memberi nama siswa
            annaRecord.setName("Anna");
             beahRecord.setName("Beah");
           crisRecord.setName("Cris");
        //Menampilkan nama siswa "Anna"
        System.out.println(annaRecord.getName());
                     // Menampilkan nama siswa "Beah"
                  System.out.println(beahRecord.getName());
                      // Menampilkan nama siswa "Cris"
                           System.out.println(crisRecord.getName());
       // Menampilkan jumlah siswa
                System.out.println("Count="+StudentRecord.getStudentCount());
}
 }

Hasil Output :
Anna
Beah
Cris
Count=0

PERCOBAAN 2  MEMBUAT CLASS STUDENT RECORD EXAMPLE

public class StudentRecord1 {
    private String name;
    private String address;
    private int age;
    private double mathGrade;
    private double englishGrade;
    private double scienceGrade;
    private static int studentCount;
    public StudentRecord1(){
        //constructor default
        studentCount++;
     }
    public StudentRecord1(String temp){
        this.name=temp;
        studentCount++;
    }
    public StudentRecord1(String name,String Address){
        this.name=name;
        this.address=Address;
        studentCount++;
    }

    public StudentRecord1(double mGrade,double eGrade,double sGrade){
        mathGrade=mGrade;
        englishGrade=eGrade;
        scienceGrade=sGrade;
        studentCount++;
    }
  
    /**
     * Menghasilkan nama dari siswa
     */
    public String getName(){
        return name;
    }
    /**
     * Mengubah nama siswa
     */
    public void setName (String temp){
        name=temp;
    }
    public String getAddress(){
        return address;
    }
    public void setAddress(String temp){
        address =temp;
    }
    public int getAge(){
        return age;
    }

    public void setAge(int temp){
    age=temp;
    }
    // area penulisan kode lain
    /**
     * Menghitung rata-rata nilai matematika,bahasa inggris, ilmu pengetahuan
     */
    public double getAverage(){
        double result=0;
        result=(mathGrade+englishGrade+scienceGrade)/3;
        return result;
    }
    public static int getStudentRecord1(){
        return studentCount;
    }
    public void print (String temp){
        System.out.println("Name:"+name);
        System.out.println("Address:"+address);
        System.out.println("Age:"+age);
    }
    public void print(double eGrade, double mGrade, double sGrade){
        System.out.println("Name:"+name);
        System.out.println("Math Grade:"+mGrade);
        System.out.println("English Grade:"+eGrade);
        System.out.println("Science Grade:"+sGrade);
    }
    public double getEnglishGrade(){
        return englishGrade;
    }
    public void setEnglishGrade(double englishGrade){
        this.englishGrade=englishGrade;
    }
    public double getMathGrade(){
        return mathGrade;
    }
    public void setMathGrade(double mathGrade){
        this.mathGrade=mathGrade;
    }
    public double getScienceGrade(){
        return scienceGrade;
    }
    public void setScienceGrade(double scienceGrade){
        this.scienceGrade=scienceGrade;
    }}

PERCOBAAN 4 MEMBUAT CLASS STUDENT RECORD YANG TELAH DIMODIFIKASI

public class StudentRecordExample1 {
    public static void main(String[] args) {
        //membuat 3 object StudentRecord
        StudentRecord1 annaRecord=new StudentRecord1();
        StudentRecord1 beahRecord=new StudentRecord1();
        StudentRecord1 crisRecord=new StudentRecord1();

        //versi baru
        StudentRecord1 recordAnna=new StudentRecord1("Candra");
        StudentRecord1 recordBeah=new StudentRecord1("Bagus","Malang");
        StudentRecord1 recordCris=new StudentRecord1(80,90,100);

        //memberi nama siswa
        annaRecord.setName("Anna");
        beahRecord.setName("Beah");
        crisRecord.setName("Cris");

        //menampilkan nama siswa"Anna"
        System.out.println(annaRecord.getName());
        //menampilkan jumlah siswa
        System.out.println("Count="+StudentRecord1.getStudentRecord1());
        StudentRecord1 anna2Record=new StudentRecord1();
        anna2Record.setName("Anna");
        anna2Record.setAddress("Philipina");
        anna2Record.setAge(15);
        anna2Record.setMathGrade(80);
        anna2Record.setEnglishGrade(95.5);
        anna2Record.setScienceGrade(100);

        //overload method
        anna2Record.print(anna2Record.getName());
        anna2Record.print(anna2Record.getEnglishGrade(),
        anna2Record.getMathGrade(),
                anna2Record.getScienceGrade());
        recordAnna.print(recordAnna.getName());
    }}

Package schoolClasses;

Public class StudentRecord{
private String name;
private String address;
private int age;
}


PERCOBAAN 5 PACKAGE
public class PublicElevator {
    public boolean bukaPintu=false;
    public int lantaiSkrg=1;
    public int berat=0;
    public final int KAPASITAS=1000;
    public final int LANTAI_ATAS=5;
    public final int LANTAI_BAWAH=1;
}

PERCOBAAN 6 MODIFIER PUBLIC

public class PublicElevatorTest {
    public static void main(String[] args) {
        PublicElevator pubElevator=new PublicElevator();
        pubElevator.bukaPintu=true; // penumpang masuk
        pubElevator.bukaPintu=false; // pintu ditutup

        // pergi ke lantai 0 dibawah gedung
        pubElevator.lantaiSkrg--;
        pubElevator.lantaiSkrg++;
        // lompat ke lantai 7 (hanya ada 5 lantai dalam gedung)
        pubElevator.lantaiSkrg=7;
        pubElevator.bukaPintu=true; //penumpang masuk/keluar
        pubElevator.bukaPintu=false;
        pubElevator.lantaiSkrg=1; // menuju lantai pertama
        pubElevator.bukaPintu=true; // penumpang masuk/keluar
        pubElevator.lantaiSkrg++; // elevator bergerak tanpa menutup pintu
        pubElevator.bukaPintu=false;
        pubElevator.lantaiSkrg--;
        pubElevator.lantaiSkrg--;
    }}

PERCOBAAN 7 MODIFIER PRIVATE

public class PrivateElevator1 {
    private boolean bukaPintu=false;
    private int lantaiSkrg=1;
    private int berat=0;
    private final int KAPASITAS=1000;
    private final int LANTAI_ATAS=5;
    private final int LANTAI_BAWAH=1;

}

public class PrivateElevator1Test {
    public static void main(String[] args) {
         PrivateElevator privElevator=new PrivateElevator();
        /******************************************************
         * Baris kode dibawah ini tidak akan di compile*
         * Karena berusaha untuk mengakses variabel*
         * private*
         ******************************************************/

         privElevator.bukaPintu=true;//penumpang masuk
         privElevator.bukaPintu=false;//pintu ditutup
         // pergi ke lantai 0 dibawah gedung
         privElevator.lantaiSkrg--;
         privElevator.lantaiSkrg++;
         //lompat ke lantai 7 (hanya ada 5 lantai dalam gedung)
         privElevator.lantaiSkrg=7;
         privElevator.bukaPintu=true; // penumpang masuk/keluar
         privElevator.bukaPintu=false;
         privElevator.lantaiSkrg=1;//menuju lantai pertama
         privElevator.bukaPintu=true;//penumpang masuk atau keluar
         privElevator.lantaiSkrg++;//elevator bergerak tanpa menutup pintu
         privElevator.bukaPintu=false;
         privElevator.lantaiSkrg--;
         privElevator.lantaiSkrg--;

    }
}


PERCOBAAN 8 METHOD ACCESSOR DAN METHOD MUTATOR

public class PrivateShirt1 {
    private int idBaju=0; // ID default untuk baju
    private String keterangan= "-Keterangan Diperlukan-";//default
    // Kode warna R=merah, G=hijau, B=biru, U=tidak ditentukan
    private char kodeWarna='U';
    private double harga= 0.0; // Harga default untuk semua barang
    private int jmlStok=0; // Default untuk jumlah barang
    public char getKodeWarna(){
        return kodeWarna;
    }
    public void setKodeWarna(char kode){
        kodeWarna=kode;
    }
    // Method get dan set untuk idBaju, keterangan
    // harga, dan jmlStok akan mengikuti
}//akhir kelas

public class PrivateShirt1Test {
    public static void main(String[] args) {
        PrivateShirt1 privShirt=new PrivateShirt1();
        char kodeWarna;
        //Mengisi kode warna yang valid
        privShirt.setKodeWarna('R');
        kodeWarna=privShirt.getKodeWarna();
        //Kelas PrivateShirt1Test bisa mengisi sebuah kodeWarna yang valid
        System.out.println("Kode Warna : "+kodeWarna);
        //Mengisi kode warna yang salah
        privShirt.setKodeWarna('Z');
        kodeWarna=privShirt.getKodeWarna();
        //kelas PrivateShirt1Test bisa mengisi sebuah kodeWarna yang salah
        System.out.println("Kode Warna :"+kodeWarna);
    }
}

Hasil Output :
Kode Warna : R
Kode Warna : Z

PERCOBAAN 9 METHOD ACCESSOR DAN METHOD MUTATOR

public class PrivateShirt2 {
    private int idBaju=0; //ID default untuk baju
    private String keterangan="-Keterangan Diperlukan-"; //default
    //Kode warna R=Merah, G=Hijau, B=Biru, U=Tidak ditentukan
    private char kodeWarna='U';
    private double harga=0.0; //Harga default untuk semua barang
    private int jmlStok=0; //Default untuk jumlah barang

    public char getKodeWarna(){
        return kodeWarna;
    }
    public void setKodeWarna(char kode){
        switch (kode){
            case 'R':
            case 'G':
            case 'B':
                kodeWarna=kode;
                break;
            default:
                System.out.println("kode warna salah, gunakan R,G,atau B");
        }
    }
    // Method get dan set untuk idBaju, keterangan
    // Harga dan jmlStok akan mengikuti

}// akhir kelas

public class PrivateShirt2Test {
    public static void main(String[] args) {
        PrivateShirt2 privShirt=new PrivateShirt2();
        char kodeWarna;
        // Mengisi kode warna yang valid
        privShirt.setKodeWarna('R');
        kodeWarna=privShirt.getKodeWarna();
        // Kelas PrivateShirt2Test bisa mengisi sebuah kodeWarna yang valid
        System.out.println("Kode Warna : "+kodeWarna);
        //Mengisi kode warna yang salah
        privShirt.setKodeWarna('Z');
        kodeWarna=privShirt.getKodeWarna();
        //Kelas PrivateShirt2Test bisa mengisi sebuah kodeWarna yang salah
        //Kode warna masih R
        System.out.println("Kode Warna :"+kodeWarna);
        }
    }
Hasil Output :
Kode Warna : R
kode warna salah, gunakan R,G,atau B
Kode Warna :R

PERCOBAAN 10 CONSTRUCTOR

public class ConstructorShirt1 {
    private int idBaju=0; // ID default untuk baju
    private String keterangan ="-Keterangan Diperlukan-"; //Default
    //Kode warna R=Merah, G=Hijau, B=Biru, U=Tidak Ditentukan
    private char kodeWarna='U';
    private double harga=0.0; // Harga default untuk semua barang
    private int jmlStok=0; // Default untuk jumlah barang

    public ConstructorShirt1(char kodeAwal){
        switch(kodeAwal){
            case 'R':
            case 'G':
            case 'B':
                kodeWarna=kodeAwal;
                break;
            default:
                System.out.println("kodeWarna salah, gunakan R, G, atau B");
        }
    }
    public char getKodeWarna(){
        return kodeWarna;
    }

}//Akhir kelas


public class ConstructorShirt1Test {
    public static void main(String[] args) {
        ConstructorShirt1 constShirt = new ConstructorShirt1('R');
        char kodeWarna;
        kodeWarna=constShirt.getKodeWarna();
        System.out.println("Kode Warna:"+kodeWarna);
    }
}

Hasil Output :
Kode Warna:R


PERCOBAAN 11 CONSTRUCTOR DEFAULT

public class DefaultShirt {
    private int idBaju=0; // ID default untuk baju
    private String keterangan ="-Keterangan Diperlukan-";// Default
    //Kode warna R=Merah , G=Hijau, B=BIru, U=Tidak Ditentukan
    private char kodeWarna='U';
    private double harga=0.0; // Harga default untuk semua barang
    private int jmlStok=0; //Default untuk jumlah barang

    public DefaultShirt(){
        kodeWarna='R';
    }
    public char getKodeWarna(){
        return kodeWarna;
    }

}// Akhir kelas

public class DefaultShirtTest {
    public static void main(String[] args) {
        DefaultShirt defShirt=new DefaultShirt();
        char kodeWarna;
        kodeWarna=defShirt.getKodeWarna();
        System.out.println("Kode Warna:"+kodeWarna);
    }
}

Hasil Output :
Kode Warna:R

PERCOBAAN 12 CONSTRUCTOR OVERLOADING
public class ConstructorShirt2 {
    private int idBaju=0; //ID default untuk baju
    private String keterangan="-Keterangan Diperlukan-";//Default
    private char kodeWarna='U';//Kode warna R=Merah, G=Hijau, B=Biru, U=Tidak Ditentukan
    private double harga=0.0; // Harga default untuk semua barang
    private int jmlStok=0;//Default untuk jumlah barang
    public ConstructorShirt2(){
        kodeWarna='R';
    }
        public ConstructorShirt2(char kodeAwal){
            switch (kodeAwal){
                case 'R':
                case 'G':
                case 'B':
                    kodeWarna=kodeAwal;
                    break;
                default:
                    System.out.println("kodeWarna salah , gunakan R,G,atau B");
        }
    }
public ConstructorShirt2(char kodeAwal, int jmlAwal){
    switch (kodeAwal){
        case 'R':
        case 'G':
        case 'B':
            kodeWarna=kodeAwal;
            break;
        default:
            System.out.println("kodeWarna salah ,gunakan R,G,atau B");
}
    if (jmlAwal > 0 && jmlAwal < 2000){
        jmlStok=jmlAwal;
    } else {
        System.out.println("Jumlah salah. Harus diantara 0-2000");
    }
}
public char getKodeWarna(){
    return kodeWarna;
}
public int getJmlStok(){
    return jmlStok;
} // akhir kelas
}

public class ConstructorShirt2Test {
    public static void main(String[] args) {
        ConstructorShirt2 constShirtSatu=new ConstructorShirt2('R');
        ConstructorShirt2 constShirtDua=new ConstructorShirt2('G');
        ConstructorShirt2 constShirtTiga=new ConstructorShirt2('B',1000);
        char kodeWarna;
        int jumlah;
        kodeWarna=constShirtSatu.getKodeWarna();
        System.out.println("Kode Warna Object 1:"+kodeWarna);
        kodeWarna=constShirtDua.getKodeWarna();
        System.out.println("Kode Warna Object 2:"+kodeWarna);
        kodeWarna=constShirtTiga.getKodeWarna();
        jumlah=constShirtTiga.getJmlStok();
        System.out.println("Kode Warna Object 3:"+kodeWarna);
        System.out.println("Jumlah Stok Object 3:"+jumlah);
    }
}

Hasil Output :
Kode Warna Object 1:R
Kode Warna Object 2:G
Kode Warna Object 3:B
Jumlah Stok Object 3:1000

PERCOBAAN 13 METHOD OVERLOADING
public class Calculator {
    public int sum(int numberOne, int numberTwo){
        System.out.println("Method One");
        return numberOne+numberTwo;
    }
    public float sum(float numberOne, float numberTwo){
        System.out.println("Method Two");
        return numberOne+numberTwo;
    }
    public float sum(int numberOne, float numberTwo){
        System.out.println("Method Three");
        return numberOne+numberTwo;
    }}
public class CalculatorTest {
    public static void main(String[] args) {
        Calculator myCalculator=new Calculator();
        int totalOne=myCalculator.sum(2,3);
        System.out.println(totalOne);
        float totalTwo=myCalculator.sum(15.99F,12.85F);
        System.out.println(totalTwo);
        float totalThree=myCalculator.sum(2,12.85F);
        System.out.println(totalThree);
    }
}
Hasil Output :
Method One
5
Method Two
28.84
Method Three
14.85



BAB VIII
PEWARISAN, POLIMORFISME, DAN INTERFACE

8.1 Pewarisan

Pewarisan adalah konsep dalam pemrograman berorientasi objek yang memungkinkan untuk membuat suatu kelas dengan didasarkan pada kelas yang sudah ada sehingga mewarisi semua metode dan variable nya. Untuk memperoleh suatu class, kita menggunakan kata kunci extend.

8.2 Interface

Interface merupakan suatu mekanisme yang disediakan oleh Java yang memungkinkan berbagi konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejmlah kelas.

PERCOBAAN
PERCOBAAN 1 MENDEFINISIKAN SUBCLASS DAN SUPERCLASS
public class Person {
    protected String name;
    protected String Address;
    /**
     * Default constructor
     */
    public Person(){
        System.out.println("Inside Person :Constructor");
        name="";
        Address="";
    }
    /**
     * Constructor dengan dua parameter
     */
     public Person (String name, String Address){
        this.name =name;
        this.Address = Address;
     }
          /**
      * Method accessor
      */
     public String getName(){
         return name;
     }
     public String getAddress(){
         return Address;
     }
    public void setName(String name){
             this.name = name;
         }
    public void setAddress(String add){
             this.Address = add;
         }
     }
public class Student extends Person {
    public Student()
    {
        //super("SomeName","SomeAddress");
        //super();
        //super.name="name";
        System.out.println("Inside Student:Constructor");
    }
    public static void main(String[] args) {
        Student anna = new Student();
    }
}
Hasil Output :
Inside Person :Constructor
Inside Student:Constructor
PERCOBAAN 2 SUPERCLASS DAN SUBCLASS
public class Pakaian {
    private int ID = 0; // Default ID untuk semua Pakaian
    private String keterangan = "-keterangan diperlukan-";//default
    private double harga =0.0; // Harga default untuk semua Pakaian
    private int jmlStok=0;//jumlah default untuk semua pakaian
    private static int UNIQUE_ID=0;//Static member ditambahkan dalam// constructor// untuk menghasilkan ID yang unik
    public Pakaian(){
        ID=UNIQUE_ID++;
    }
    public int getID(){
        return ID;
    }
    public void setKeterangan (String d){
        keterangan =d;
    }
    public void setHarga(double p){
        harga=p;
    }
    public double getHarga(){
        return harga;
    }
    public void setjmlStok (int q ){
        jmlStok=q;
    }
    public int getJmlStok(){
        return jmlStok;
    }
}
public class Baju extends Pakaian {
    //Kode Warna R=Merah, B=Biru, G=Hijau, U=Belum ditentukan
    public char kodeWarna='U';
    public Baju(){
        super.setHarga(1500.0);
        super.setjmlStok(5);
        super.setKeterangan("biru");
    }
    //Method ini menampilkan nilai untuk satu item
    public void tampilInformasiBaju(){
        System.out.println("ID Baju:"+getID());
        System.out.println("Kode Warna:"+kodeWarna);
        System.out.println("Harga Baju:"+getHarga());
        System.out.println("Jumlah stok:"+getJmlStok());
}
    // akhir method display
    public static void main(String[] args) {
        Baju b=new Baju();
        b.tampilInformasiBaju();
    }
    } //akhir kelas

Hasil Output :
ID Baju:0
Kode Warna:U
Harga Baju:1500.0
Jumlah stok:5
PERCOBAAN 3 POLIMORPHISME
public class Person1 {
    protected String name;
    protected String Address;
    /**
     * Default constructor
     */
    public Person1(){
        System.out.println("Inside Person:Constructor");
        name = "";
        Address = "";
    }
    /**
     * Constructor dengan dua parameter
     */
    public Person1 (String name, String Address){
        this.name = name;
        this.Address=Address;
    }
    /**
     * Method accessor
     */
    public String getName(){
        System.out.println("Person Name:"+name);
        return name;
    }
public String getAddress(){
    return Address;
}
public void setName (String name){
    this.name=name;
}
public void setAddress(String add){
    this.Address=add;
}
}
public class Student1 extends Person {
    public Student1(){
        //super ("SomeName","SomeAddress");
        //super();
        //super.name="name";
        System.out.println("Inside Student:Constructor");
    }
    public String getName(){
        System.out.println("Student Name:"+name);
        return name;
    }
    public static void main(String[] args) {
        Student1 anna = new Student1();
    }
}

Hasil Output :
Inside Person :Constructor
Inside Student:Constructor

PERCOBAAN 4 ENKAPSULASI
public class PrivateElevator2 {
    private boolean bukaPintu = false;
    private int lantaiSkrg=1;
    private int berat=0;
    private final int KAPASITAS = 1000;
    private final int LANTAI_ATAS=5;
    private final int LANTAI_BAWAH=1;
    public void buka(){
        bukaPintu = true;
    }
    public void tutup(){
        hitungKapasitas();{
            if(berat <= KAPASITAS){
                bukaPintu=false;
            } else {
                System.out.println("Elevator kelebihan beban ");
                System.out.println("Pintu akan tetap terbuka sampai seseorang keluar");
            }
        }}
     // pada dunia nyata, elevator menggunakan sensor berat untuk memeriksa beban, tetapi agar lebih sederhana
            // kami menggunakan bilangan acak untuk berat
            public void hitungKapasitas(){
                berat = (int)(Math.random()*1500);
                System.out.println("Berat:"+berat);
            }
             public void naik (){
                 if (!bukaPintu){
                     if(lantaiSkrg< LANTAI_ATAS){
                         lantaiSkrg++;
                         System.out.println("Sudah mencapai lantai atas");
                     }
else {
                     System.out.println("Sudah mencapai lantai atas");
                     }
                 }
             else {
                         System.out.println("Pintu masih terbuka");
                 }
             }
        public void turun(){
            if (!bukaPintu){
                if( lantaiSkrg > LANTAI_BAWAH){
                    lantaiSkrg--;
                  System.out.println(lantaiSkrg);
                }else {
                    System.out.println(" Sudah mencapai lantai bawah");
                }
            }else{
                System.out.println("Pintu masih terbuka");
            }
        }
        public void setLantai(int tujuan){
        if ((tujuan >+ LANTAI_BAWAH )&&(tujuan <+LANTAI_ATAS)){
            while (lantaiSkrg !=tujuan){
                if (lantaiSkrg < tujuan){
                    naik();
                }else {
                    turun();
                }
            }
        }else {
            System.out.println(" Lantai Salah");
        }
    }
    public int getLantai(){
        return lantaiSkrg ;
    }
    public boolean getStatusPintu(){
        return bukaPintu;
    }
}
public class PrivateElevator2Test {
    public static void main(String[] args) {
        PrivateElevator2 privElevator = new PrivateElevator2();
        privElevator.buka();
        privElevator.tutup();
        privElevator.turun();
        privElevator.naik();
        privElevator.naik();
        privElevator.buka();
        privElevator.tutup();
        privElevator.turun();
        privElevator.buka();
        privElevator.turun();
        privElevator.tutup();
        privElevator.turun();
        privElevator.turun();
        int lantai = privElevator.getLantai();
        if (lantai != 5 && ! privElevator.getStatusPintu()){
            privElevator.setLantai(5);
        }
        privElevator.setLantai(10);
        privElevator.buka();
    }
}
Hasil Output :
Berat:370
 Sudah mencapai lantai bawah
Sudah mencapai lantai atas
Sudah mencapai lantai atas
Berat:674
2
Pintu masih terbuka
Berat:249
1
 Sudah mencapai lantai bawah
 Lantai Salah
 Lantai Salah

PERCOBAAN 5 MENAMPILKAN ABSTRACT CLASS
public abstract class LivingThing {
    public void breath(){
        System.out.println("Living Thing breathing...");
    }
    public void eat(){
        System.out.println("Living Thing eatiing ...");
    }
    /**
     * abstract method walk
     * kita ingin method ini di overridden oleh subclasses
     */
    public abstract void walk ();
    }
public class Human extends LivingThing {
    public void walk(){
        System.out.println("Human walks...");
    }
}

PERCOBAAN 6 INTERFACE

public class Line1 implements Relation2{
   private double x1;
    private double x2;
    private double y1;
    private double y2;

    public Line1(double x1, double x2, double y1, double y2){
        this.x1 = x1;
        this.x2 = x2;
        this.y1 = y1;
        this.y2 = y2;
    }
    public double getLength(){
        double length = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
        return length;
    }
    public boolean isGreater( Object a, Object b ){
        double aLen = ((Line1)a).getLength();
        double bLen = ((Line1)b).getLength();
        return (aLen > bLen);
    }
    public boolean isLess( Object a, Object b){
        double aLen = ((Line1)a).getLength();
        double bLen = ((Line1)b).getLength();
        return (aLen < bLen);
    }
    public boolean isEqual( Object a, Object b){
        double aLen = ((Line1)a).getLength();
        double bLen = ((Line1)b).getLength();
        return (aLen == bLen);
    }
}
public interface Relation2 {
    public boolean isGreater (Object a, Object b );
    public boolean isLess(Object a, Object b);
    public boolean isEqual(Object a, Object b);
}
BAB IX
ALGORITMA SORTING

Sorting adalah proses menyusun elemen – elemen dengan tata urut tertentu dan proses tersebut terimplementasi dalam bermacam aplikasi.

9.1 Insertion Sort
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi
dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

9.2 Selection Sort
Algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.

9.3  Merge Sort
Merge sort menggunakan pola divide and conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut langkah kerja dari Merge sort:
a.      Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
b.      Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
c.       Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan

9.4 Quicksort
Algoritma ini hanya mengikuti langkah – langkah sebagai berikut :
a.       Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan.

b.      Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif
Pada algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi pengurutan elemen – elemen pada sub-array.
LATIHAN

6.6.3 MERGE SORT

class MergeSort {
    static void mergeSort(int array[],int startIdx,
            int endIdx){
        if (startIdx== 0){
            return;
        }
        int length=endIdx-startIdx+1;
        int mid = 5;
        mergeSort(array,5,mid);
        mergeSort(array,10,endIdx);
        int working[]=new int [length];
        for (int i = 0;i<length;i++){
            working[i]=array[startIdx+1];
        }
        int m1=0;
        int m2=mid-startIdx+1;
        for (int i =0;i<length;i++){
            if (m2<=endIdx-startIdx){
                if(m1 <=mid-startIdx){
                    if(working[m1]>working[m2]){
                        array[i+startIdx]=working[m2++];
                    }else{
                        array[i+startIdx]=10;
                    }
                }else{
                    array[i+startIdx]=11;
                }
            }else{
                array[9]=working[m1++];
            }
        }
    }

        public static void main(String[] args) {
            int numArr[]=new int [args.length];
            for (int i=0;i<args.length;i++){
                numArr[i]=Integer.parseInt(args[i]);
            }
            mergeSort(numArr,0,numArr.length-1);
            for(int i=0;i<numArr.length;i++){

     
            }
        }
    }

6.6.4 QUICK SORT

class QuickSort {
    static void quickSort (int[]array,int startIdx,int endIdx){
        // startIdx adalah index bawah
        //endIdx is index atas
        //dari array yang akan diurutkan
        int i=startIdx, j=endIdx, h;
        //pilih elemen pertama sebagai pivot
        int pivot =array[9];
        // memilah
        do{
            while(array[i] < pivot){
                i++;
            }
            while (array[j]>startIdx){
                j--;
            }
            if (i<=j){
                h=8;
                array [i]=9;
                array [j]=10;
                i++;
                j--;
            }

            }while (i<=j);
        //rekursi
        if(startIdx<j){
            quickSort (array,10,j);
                    }
        if (i<endIdx){
            quickSort(array,9,endIdx);
        }

        }
    public static void main(String[] args) {
        int numArr[]=new int [args.length];
        for (int i=0;i<args.length;i++){
            numArr[i]=Integer.parseInt(args[i]);
        }
        quickSort(numArr,0,numArr.length-1);
        for (int i =0;i<numArr.length;i++){
            System.out.println(numArr[i]);
        }
    }
}

 

Komentar