Anda di halaman 1dari 268

RENCANA PELAKSANAAN PEMBELAJARAN (RPP)

Nama Sekolah : SMK Negeri 1 Gending


Mata Pelajaran : Menggunakan Bahasa Pemrograman Berorientasi Objek
Kelas : XII (Dua Belas)
Semester : 5 (Lima)
Jumlah Pertemuan : 4 Pertemuan

A. Standar Kompetensi :
Menerapkan Algoritma Pemrograman Tingkat Dasar

B. Kompetensi Dasar :
Menjelaskan dasar dasar pemrograman

C. Indikator :
1. Kognitif
a. Produk
1) Mendeskripsikan dasar penulisan program, tipe file penyimpanan
program, pembuatan komentar dalam baris program.
2) Menghafal formula untuk deklarasi dan inisialisasi variabel
3) Menjelaskan fungsi operator
b. Proses
1) Menganalisis penulisan program, tipe file program, dan komentar.
2) Mengidentifikasi tipe data yang sesuai dengan variabel yang akan
dibuat.
3) Menganalisis operator yang sesuai untuk kasus pemrograman
tertentu.
2. Afektif
a. Mengembangkan perilaku berkarakter, meliputi :
1) Jujur
2) Tanggung jawab
3) Disiplin
4) Percaya diri
5) Rasa ingin tahu
b. Mengembangkan keterampilan sosial, meliputi :
1) Bertanya
2) Menjadi pendengar yang baik

D. Tujuan Pembelajaran
1. Kognitif
a. Produk
1) Secara mandiri siswa dapat mendeskripsikan dasar penulisan
program, tipe file penyimpanan program, pembuatan komentar
dalam baris program pada pemrograman JAVA sesuai deskripsi
yang tercantum pada kunci LP1 produk.
2) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menguraikan syntax untuk pendeklarasian variabel dan inisialisasi
variabel pada pemrograman JAVA sesuai deskripsi yang tercantum
pada kunci LP1 Produk.
3) Secara mandiri siswa dapat mendeskripsikan tentang operator
dalam pemrograman JAVA dan fungsi kegunaannya sesuai
deskripsi yang tercantum pada kunci LP1 Produk.
b. Proses
1) Diberikan potongan syntax menggunakan bahasa pemrograman
JAVA. Siswa mampu menganalisis bagian-bagian penulisan
program yang kurang tepat, mendeteksi bagian komentar, serta
memberi tipe file yang sesuai dalam pemrograman JAVA
berdasarkan syntax yang sudah diberikan pada LP2 Proses sesuai
kunci LP2 Proses.
2) Diberikan soal cerita dimana di dalamnya terdapat beberapa tipe
data. Siswa mampu mengidentifikasi dan merancang variabel dan
tipe data yang paling sesuai berdasarkan soal yang telah diberikan
pada LP2 Proses sesuai kunci LP2 Proses.
3) Diberikan kasus pemrograman. Siswa secara mandiri dapat
menganalisis penggunaan operator yang sesuai untuk kasus yang
telah diberikan pada LP2 Proses sesuai kunci LP2 Proses.
2. Afektif
a. Karakter
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai pengamat membuat kemajuan dalam menunjukkan
perilaku berkarakter dengan LP3 Format Pengamatan Perilaku
Berkarakter, meliputi :
1) Jujur : siswa secara jujur mampu mengerjakan tugas-tugas tentang
dasar-dasar pemrograman yang diberikan
2) Tanggung jawab : siswa bertanggung jawab terhadap dirinya
sendiri untuk memahami pelajaran tentang dasar-dasar
pemrograman JAVA.
3) Disiplin : siswa disiplin dalam pengumpulan tugas dan kehadiran
di kelas
4) Percaya diri : Siswa secara individu mampu mengerjakan tugas
yang telah diberikan tanpa mencontek temannya.
5) Rasa ingin tahu : siswa mempunyai dorongan untuk mengetahui
hal-hal baru terkait dasar-dasar pemrograman JAVA.
b. Perilaku Sosial
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai membuat kemajuan dalam menunjukkan perilaku
berkarakter dengan LP4 Format Pengamatan Keterampilan Sosial,
meliputi :
1) Bertanya : siswa aktif bertanya ketika penjelasan guru dirasa
kurang memberi pemahaman pada dirinya.
2) Menjadi pendengar yang baik : dalam proses pembelajaran dasar-
dasar pemrograman menggunakan JAVA dengan model
pembelajaran langsung, siswa secara tenang mendengarkan
penjelasan dari guru.
E. Materi Pembelajaran
1. Konsep dasar dari pemrograman JAVA
2. Tipe data dan variabel kontrol pada pemrograman JAVA
3. Operator pada pemrograman JAVA

F. Alokasi Waktu : 12 x 45 menit (tiga pertemuan)

G. Metode Pembelajaran
1. Model Pembelajaran : Model Pembelajaran Langsung
2. Metode Pembelajaran : Penjelasan singkat dan pemberian tugas

H. Proses Belajar Mengajar

Tabel Proses Belajar Mengajar Pertemuan I : Konsep dasar pemrograman JAVA


Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memotivasi siswa dengan memberi penjelasan kepada peserta didik
tentang pemrograman JAVA yang berorientasi obyek dan apa saja
yang bisa dibuat dengan menggunakan pemrograman JAVA(Fase 1
MPL)
2. Menyampaikan inti tujuan afektif, kognitif, psikomotor, kinerja
dan keterampilan sosial untuk pelajaran konsep dasar
pemrograman JAVA (Fase 1 MPL)
Inti ( 150 menit)
1. Menyajikan informasi singkat dasar pemrograman JAVA terkait
cara penulisan atau syntax program, penulisan komentar dan cara
penyimpanan syntax (terkait tipe file) (Fase 2 MPL)
2. Mendemostrasikan kepada siswa sesuai informasi yang telah
diberikan pada poin no. 1 kemudian menjalankan program tersebut
(Fase 2 MPL)
3. Mendemonstrasikan program lain yang telah disiapkan, kemudian
siswa mengikuti langkah-langkah penulisan program tersebut dengan
disiplin dan rasa ingin tahu(Fase 3 MPL)
4. Memberikan latihan menggunakan LP1A Produk. siswa dengan
percaya diri dan jujur mengerjakan tugas yang diberikan. Mengawasi
pekerjaan masing-masing siswa, mencatat bagian-bagian yang dirasa
sulit bagi siswa (Fase 3 MPL)
5. Mengawasi siswa dalam mengerjakan tugas yang diberikan sambil
memperhatikan proses pengerjaan tiap individu dengan
mengembangkan perilaku berkarakter dan keterampilan sosial
mengacu pada LP1A : Produk, LP3 : Format Perilaku Berkarakter
dan LP4 : Keterampilan Sosial (Fase 4 MPL)
6. Mengumpulkan dan mengecek hasil pekerjaan siswa (Fase 4
MPL) 7. Memberikan kesempatan pada siswa untuk bertanya. Jika
tidak ada
yang bertanya, tanyakan ulang soal pada LP1 Produk secara lisan
untuk dijawab bersama-sama oleh siswa (Fase 4 MPL)
8. Memberikan tugas menggunakan LP2A Proses yang soalnya telah
disesuaikan dengan kehidupan sehari-hari dengan menghadirkan
beberapa soal cerita (Fase 5 MPL)
Penutup ( 15 menit)
1. Dengan melibatkan siswa Guru menutup pelajaran dengan
berterimakasih kepada siswa yang telah menjadi pendengar
yang baik serta memberi penghargaan kepada siswa yang
telah mengerjakan tugas LP1 Produk dan LP2 Proses dengan hasil
yang sempurna. Guru memberikan PR untuk mengerjakan soal LKS.

Tabel Proses Belajar Mengajar Pertemuan II : Tipe data dan variabel


kontrol pada pemrograman JAVA
Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memotivasi siswa dengan memberi penjelasan kepada peserta
didik dengan mengulang kembali pertemuan sebelumnya
bersama-sama(Fase 1 MPL)
2. Menyampaikan inti tujuan afektif, kognitif, psikomotor, kinerja
dan keterampilan sosial untuk pelajaran konsep dasar
pemrograman JAVA (Fase 1 MPL)
Inti ( 150 menit)
1. Menyajikan informasi singkat dasar pemrograman JAVA terkait
macam-macam tipe data dan bagaimana mengimplementasikannya
dalam bentuk pendeklarasian variabel (Fase 2 MPL)
2. Mendemostrasikan kepada siswa sesuai informasi yang telah
diberikan pada poin no. 1 kemudian menjalankan program tersebut
(Fase 2 MPL)
3. Mendemonstrasikan program lain yang telah disiapkan, kemudian
siswa mengikuti langkah-langkah penulisan program tersebut (Fase 3
MPL)
4. Memberikan latihan menggunakan LP1B Produk. Mengawasi
pekerjaan masing-masing siswa, mencatat bagian-bagian yang dirasa
sulit bagi siswa (Fase 3 MPL)
5. Mengawasi siswa dalam mengerjakan tugas yang diberikan sambil
memperhatikan proses pengerjaan tiap individu dengan
mengembangkan perilaku berkarakter dan keterampilan sosial
mengacu pada LP1B : Produk, LP3 : Format Perilaku Berkarakter
dan LP4 : Keterampilan Sosial (Fase 4 MPL)
6. Mengumpulkan dan mengecek hasil pekerjaan siswa (Fase 4
MPL) 7. Memberikan kesempatan pada siswa untuk bertanya. Jika
tidak ada yang bertanya, tanyakan ulang soal pada LP1B Produk secara
lisan
untuk dijawab bersama-sama oleh siswa (Fase 4 MPL)
8. Memberikan tugas menggunakan LP2B Proses yang soalnya
telah disesuaikan dengan kehidupan sehari-hari dengan
menghadirkan
Penutup beberapa soal cerita (Fase 5 MPL)
( 15 menit)
1. Dengan melibatkan siswa Guru menutup pelajaran dengan
berterimakasih kepada siswa yang telah menjadi pendengar
yang baik serta memberi penghargaan kepada siswa yang
telah mengerjakan tugas LP1 Produk dan LP2 Proses dengan hasil
yang sempurna. Guru memberikan PR untuk mengerjakan soal LKS.
Tabel Proses Belajar Mengajar Pertemuan III : Operator pada pemrograman JAVA
Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memotivasi siswa mengulang pembahasan pertemuan
sebelumnya bersama-sama(Fase 1 MPL)
2. Menyampaikan inti tujuan afektif, kognitif, psikomotor, kinerja
dan keterampilan sosial untuk pelajaran konsep dasar
pemrograman JAVA (Fase 1 MPL)
Inti ( 150 menit)
1. Menyajikan informasi singkat dasar pemrograman JAVA terkait
operator apa saja yang digunakan dalam pemrograman JAVA (Fase 2
MPL)
2. Mendemostrasikan kepada siswa sesuai informasi yang telah
diberikan pada poin no. 1 kemudian menjalankan program tersebut
(Fase 2 MPL)
3. Mendemonstrasikan program lain yang telah disiapkan, kemudian
siswa mengikuti langkah-langkah penulisan program tersebut (Fase 3
MPL)
4. Memberikan latihan menggunakan LP1C Produk. Mengawasi
pekerjaan masing-masing siswa, mencatat bagian-bagian yang dirasa
sulit bagi siswa (Fase 3 MPL)
5. Mengawasi siswa dalam mengerjakan tugas yang diberikan sambil
memperhatikan proses pengerjaan tiap individu dengan
mengembangkan perilaku berkarakter dan keterampilan sosial
mengacu pada LP1C : Produk, LP3 : Format Perilaku Berkarakter
dan LP4 : Keterampilan Sosial (Fase 4 MPL)
6. Mengumpulkan dan mengecek hasil pekerjaan siswa (Fase 4
MPL) 7. Memberikan kesempatan pada siswa untuk bertanya. Jika
tidak ada
yang bertanya, tanyakan ulang soal pada LP1 Produk secara lisan
untuk dijawab bersama-sama oleh siswa (Fase 4 MPL)
8. Memberikan tugas menggunakan LP2C Proses yang soalnya
telah disesuaikan dengan kehidupan sehari-hari dengan
menghadirkan
Penutup beberapa soal cerita (Fase 5 MPL)
( 15 menit)
1. Dengan melibatkan siswa Guru menutup pelajaran dengan
berterimakasih kepada siswa yang telah menjadi pendengar
yang baik serta memberi penghargaan kepada siswa yang
telah mengerjakan tugas LP1 Produk dan LP2 Proses dengan hasil
yang sempurna. Guru memberikan PR untuk mengerjakan soal LKS.

I. Penilaian Hasil Belajar


1. LP 1A, LP 1B, LP 1C : Produk dilengkapi kunci LP1
2. LP 2A, LP 2B, LP 2C : Proses dilengkapi kunci LP2
3. LP 3 : Format pengamatan perilaku berkarakter
4. LP 4 : Format Pengamatan Keterampilan Sosial
5. Tabel spesifikasi lembar penilaian
J. Sumber Pembelajaran
1. LP1 : Produk
2. LP2 : Proses
3. LP3 : Pengamatan perilaku berkarakter
4. LP3 : Pengamatan keterampilan sosial
5. JENI (JAVA Education Network Indonesia)
6. Tabel spesifikasi lembar penilaian
7. Silabus
MODUL SMK
Dasar-Dasar Pemrograman Berbasis Obyek
Menggunakan Bahasa Pemrograman Java

Mata Pelajaran : Merancang Aplikasi Teks Dan Desktop Berbasis


Obyek
Kelas : XII (Dua Belas) Rekayasa Perangkat Lunak
Standar kompetensi : Merancang Aplikasi Teks Dan Desktop Berbasis
Obyek
Kompetensi Dasar : Menjelaskan Dasar-Dasar Pemrograman
Tujuan Pembelajaran : 1. Siswa mampu mendeskripsikan dasar penulisan
program, tipe file penyimpanan program,
pembuatan komentar dalam baris program.
2. Siswa mampu menghafal formula untuk
deklarasi dan inisialisasi variabel
3. Siswa mampu menjelaskan fungsi operator
4. Siswa mampu menganalisis penulisan program,
tipe file program, dan komentar.
5. Siswa mampu mengidentifikasi tipe data yang
sesuai dengan variabel yang akan dibuat.
6. Siswa mampu menganalisis operator yang
sesuai untuk kasus pemrograman tertentu

A. Menganalisa Program JAVA


Sekarang, kita akan mencoba untuk menganalisa program Java pertama :
Baris pertama kode :
public class Hello
menandakan nama class yaitu Hello. Dalam Java, semua kode seharusnya
ditempatkan di dalam deklarasi class. kita melakukannya dengan menggunakan
kata kunci class. Sebagai tambahan, class menggunakan access specifier public,
yang mengindikasikan bahwa class kita mempunyai akses bebas ke class yang
lain dari package yang lain pula (package merupakan kumpulan class-class). Kita
akan membahas lebih dalam mengenai package dan access specifier pada
pembahasan selanjutnya.
Baris berikutnya yaitu yang terdiri atas kurung kurawal { menandakan awal
blok. Pada kode ini, kita menempatkan kurung kurawal pada baris selanjutnya
setelah deklarasi class, bagaimanapun, kita dapat juga meletakkan kurung kurawal
ini setelah baris pertam a dari kode yang kita tulis. Jadi, kita dapat menulis kode
kita sebagai berikut :
public class Hello
{
atau
public class Hello {
Tiga baris selanjutnya menandakan adanya komentar Java. Komentar adalah
sesuatu yang digunakan untuk mendokumentasikan setiap bagian dari kode yang
ditulis. Komentar bukan merupakan bagian dari program itu sendiri, tetapi
digunakan untuk tujuan dokumentasi.
Komentar itu sendiri dapat ditambahkan pada kode yang Anda tulis sebagai
petunjuk yang dapat membantu proses pembelajaran pemrograman yang baik.
/**
* My first java program
*/
Komentar dinyatakan dengan tanda /* dan */. Segala sesuatu yang ada
diantara tanda tersebut diabaikan oleh compiler Java, dan mereka hanya dianggap
sebagai komentar.
Baris selanjutnya,
public static void main(String[] args) {
atau dapat juga ditulis sebagai berikut,
public static void main(String[] args)
{
mengindikasikan nama suatu method dalam class Hello yang bertindak
sebagai method utama. Method utama adalah titik awal dari suatu program Java.
Semua program kecuali applet yang ditulis dalam bahasa Java dimulai dengan
method utama. Yakinkan untuk mengikuti kaidah penulisan tanda yang benar.
Baris selanjutnya juga merupakan komentar,
//Menampilkan string "Hello world" pada layar
Sekarang kita mempelajari 2 cara untuk membuat komentar. Cara pertama
adalah dengan menempatkan komentar dalam /* dan */, dan cara yang lain adalah
dengan menuliskan tanda // pada awal komentar.
Baris selanjutnya,
System.out.println("Hello world!");
menampilkan teks Hello World! pada layar. Perintah System.out.println(),
menampilkan teks yang diapit oleh tanda double pute ( ) pada layar.
Dua baris terakhir yang terdiri atas dua kurung kurawal digunakan untuk
menutup method utama dan masing-masing class secara berurutan.
Petunjuk Penulisan Program:
1. Program Java yang Anda buat harus selalu diakhiri dengan ekstensi file
.java.
2. Nama File seharusnya sesuai/sama dengan nama class public nya.
Sebagai contoh, jika nama class public Anda adalah Hello, Anda harus
menyimpan file tersebut dengan nama Hello.java.
3. Anda harus menulis komentar sebagai penjelasan pada kode yang Anda
tulis, yaitu komentar yang berisi keterangan mengenai baris perintah
pada class atau apa yang dijalankan oleh method yang Anda tulis
tersebut.

B. Komentar pada JAVA


Komentar adalah catatan yang ditulis pada kode dengan tujuan sebagai bahan
dokumentasi. Teks tersebut bukan bagian dari program dan tidak mempengaruhi
jalannya program.
Java mendukung tiga jenis komentar : C++ style komentar satu baris, C style
beberapa baris, dan komentar javadoc khusus
1. Penulisan Komentar C++ Style
Komentar C++ style diawali dengan //. Semua teks setelah // dianggap
sebagai komentar. Sebagi contoh,
// This is a C++ style or single line comments
2. Penulisan Komentar C Style
Komentar C-style atau juga disebut komentar beberapa baris diawali dengan
/* dan diakhiri dengan */. Semua teks yang ada diantara dua tanda tersebut
dianggap sebagai komentar. Tidak seperti komentar C++ style, komentar ini dapat
menjangkau beberapa baris. Sebagai contoh,
/* this is an example of a
C style or multiline comments */
3. Komentar Khusus javadoc
Komentar javadoc khusus digunakan untuk men-generate dokumentasi
HTML untuk program Java Anda. Anda dapat menciptakan komentar javadoc
dengan memulai baris dengan /** dan mengakhirinya dengan */. Seperti
Komentar C_style, dapat juga menjangkau beberapa baris. Komentar ini juga
dapat terdiri atas tag-tag untuk menambahkan lebih banyak informasi pada
komentar Anda. Sebagai contoh,
/**
This is an example of special java doc comments used for \n
generating an html documentation. It uses tags like:
@author Florence Balagtas
@version 1.2
*/

C. Tipe Data Primitive


Bahasa pemrograman Java mendefinisikan delapan tipe data primitif. Mereka
diantaranya adalah boolean (untuk bentuk logika), char (untuk bentuk tekstual),
byte, short, int, long (integral), double and float (floating point).
1. logika - boolean
Tipe data boolean diwakili oleh dua pernyataan : true dan false. Sebagai
contoh adalah,
boolean result = true;
Contoh yang ditunjukkan diatas, mendeklarasikan variabel yang dinamai
result sebagai tipe data boolean dan memberinya nilai true.
2. teksual char
Tipe data character (char), diwakili oleh karakter single Unicode. Tipe data
ini harus memiliki ciri berada dalam tanda single quotes( ). Sebagai contoh,
a //Huruf a
\t //A tab
Untuk menampilkan karakter khusus seperti ' (single quotes) atau " (double
quotes), menggunakan karakter escape \. Sebagai contoh,
'\'' //untuk single quotes
'\"' //untuk double quotes
Meskipun String bukan merupakan tipe data primitif (namun merupakan
suatu Class),kita akan memperkenalkan mengenai pada bagian ini. String
mewakili tipe data yang terdiri atas beberapa karakter. Mereka tidak termasuk tipe
data primitif, melainkan suatu class. Mereka memiliki literal yang terdapat
diantara tanda double quotes(). Sebagai contoh,
String message=Hello world!
3. Integral byte, short, int & long
Tipe data integral dalam Java menggunakan tiga bentuk- yaitu desimal, oktal
atau heksadesimal. Contohnya,
2 //nilai desimal 2
077 //angka 0 pada awal pernyataan mengindikasikan nilai
oktal
0xBACC //karakter 0x mengindikasikan nilai heksadesimal
Tipe-tipe integral memiliki default tipe data yaitu int. Anda dapat
merubahnya ke bentuk long dengan menambahkan huruf l atau L. Tipe data
integral memiliki range sebagai berikut:

Petunjuk Penulisan Program:


Dalam mendefinisikan suatu nilai long, lowercase L tidak dianjurkan karena
sangat sulit untuk membedakan dari digit 1.
4. Floating Point float dan double
Tipe Floating point memiliki double sebagai default tipe datanya. Floating-
point literal termasuk salah satunya desimal point atau salah satu dari pilihan
berikut ini,
E or e //(add exponential value)
F or f //(float)
D or d //(double)
Contohnya adalah,
3.14 //nilai floating-point sederhana (a double)
6.02E23 //A nilai floating-point yang besar
2.718F //A nilai float size sederhana
123.4E+306D //A nilai double yang besar dengan nilai
redundant D
Pada contoh yang ditunjukkan diatas, 23 setelah E pada contoh kedua bernilai
positif. Contoh tersebut sama dengan 6.02E+23. Tipe data Floating-point
memiliki range sebagai berikut:

D. Variabel
Variabel adalah item yang digunakan data untuk menyimpan pernyataan
objek. Variabel memiliki tipe data dan nama. Tipe data menandakan tipe nilai
yang dapat dibentuk oleh variabel itu sendiri. Nama variabel harus mengikuti
aturan untuk identifier.
1. Deklarasi dan Inisialisasi Variabel
Untuk deklarasi variabel adalah sebagai berikut,
<data tipe> <name> [=initial value];
Catatan: Nilainya berada diantara <> adalah nilai yang disyaratkan, sementara
nilai dalam tanda [] bersifat optional.
Berikut ini adalah contoh program yang mendeklarasikan dan
menginisialisasi beberapa variabel,
Petunjuk Penulisan Program:
a. Sangat baik untuk menginisialisasi variabel yang Anda buat seperti Anda
mendeklarasikannya.
b. Gunakan nama yang bersifat menggambarkan deskriptif untuk variabel
yang Anda buat, jika Anda ingin mempunyai variabel yang terdiri atas
nilai siswa, beri nama dengan nama grade dan jangan hanya beberapa
huruf random yang Anda pilih.
c. Deklarasikan satu variabel tiap baris kode. Sebagai contoh , deklarasi
variabel adalah sebagai berikut,
double exam=0;
double quiz=10;
double grade = 0;
Bentuk yang lebih disukai ketika melakukan deklarasi adalah,
double exam=0, quiz=10, grade=0;
2. Menampilkan Data Variabel
Untuk mengeluarkan nilai dari variabel yang diinginkan, kita dapat
menggunakan perintah sebagai berikut,
System.out.println()
System.out.print()

Berikut ini adalah contoh program,


Program tersebut akan mengeluarkan teks berikut pada layar,
10
The value of x=A
3. System.out.println() vs. System.out.print()
Apa yang membedakan diantara perintah System.out.println() and
System.out.print()? Yang pertama menambahkan baris baru pada akhir data untuk
dikeluarkan, sementara selanjutnya tidak.
Perhatikan pernyataan tersebut,
System.out.print("Hello ");
System.out.print("world!");
Pernyataan tersebut akan menghasilkan output berikut ini pada layar,
Hello world!
Sekarang perthatikan pernyataan berikut,
System.out.println("Hello ");
System.out.println("world!");
Pernyataan ini akan menghasilkan output sebagai berikut pada layar,
Hello
world!

E. Operator
Dalam Java, ada beberapa tipe operator. Ada operator aritmatika, operator
relasi, operator logika, dan operator kondisi. Operator ini mengikuti bermacam-
macam prioritas yang pasti sehingga compilernya akan tahu yang mana operator
untuk dijalankan lebih dulu dalam kasus beberapa operator yang dipakai bersama-
sama dalam satu pernyataan.
1. Operator Aritmatika
Berikut ini adalah dasar operator aritmatika yang dapat digunakan untuk
membuat suatu program Java,
Berikut ini adalah contoh program dalam penggunaan operator-operator ini :
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 hasil 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)); }
}

Berikut ini adalah output program,


Variable values...
i = 37
j = 42
x = 27.475
y = 7.22
i + j = 79
Adding...
x + y = 34.695
Subtracting...
i - j = -5
x - y = 20.255
Multiplying...
i * j = 1554
x * y = 198.37
Dividing...
i / j = 0
x / y = 3.8054
Computing the remainder...
i % j = 37
x % y = 5.815
Mixing tipes...
j + y = 49.22
i * x = 1016.58
Catatan: Ketika integer dan floating-point number digunakan sebagai
operand untuk operasi aritmatika tunggal, hasilnya berupa floating point. Integer
adalah converter secara implisit ke bentuk angka floating-point sebelum operasi
berperan mengambil tempat.
2. Operator Increment dan Decrement
Dari sisi operator dasar aritmatika, Java juga terdiri atas operator unary
increment (++) dan operator unary decrement (--). operator increment dan
decrement menambah dan mengurangi nilai yang tersimpan dalam bentuk
variabel angka terhadap nilai 1.
Sebagai contoh, pernyataan,
count = count + 1; //increment nilai count dengan nilai 1
pernyataan tersebut sama dengan,
count++;
Operator increment dan decrement dapat ditempatkan sebelum atau sesudah
operand. Ketika digunakan sebelum operand, akan menyebabkan variabel
diincrement atau didecrement dengan nilai 1, dan kemudian nilai baru digunakan
dalam pernyataan dimana dia ditambahkan. Sebagai contoh,
int i = 10,
int j = 3;
int k = 0;
k = ++j + i; //akan menghasilkan k = 4+10 = 14
Ketika operator increment dan decrement ditempatkan setelah operand, nilai
variabel yang lama akan digunakan lebih dulu dioperasikan lebih dulu terhadap
pernyataan dimana dia ditambahkan. Sebagai contoh,
int i = 10,
int j = 3;
int k = 0;
k = j++ + i; //akan menghasilkan k = 3+10 = 13
Petunjuk Penulisan Program:
Selalu membuat pernyataan yang mengandung operator increment dan
decrement untuk tetap dipahami secara mudah dan sederhana.
3. Operator Relasi
Operator Relasi membandingkan dua nilai dan menentukan keterhubungan
diantara nilai-nilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true atau
false.
Berikut ini adalah contoh program yang menggunakan operator Relasi,
public class RelasiDemo
{
public static void main(String[] args)
{ //beberapa nilai
int i = 37;
int j = 42;
int k = 42;
System.out.println("Nilai variabel...");
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 dari 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 dari 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
}
}
Berikut adalah hasil keluaran dari program ini :
Nilai variabel...
i = 37
j = 42
k = 42
Lebih besar dari...
i > j = false
j > i = true
k > j = false
Lebih besar dari 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 dari 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
4. Operator logika
Operator logika memiliki satu atau lebih operand boolean yang menghasilkan
nilai boolean.
Terdapat enam operator logika yaitu: && (logika AND), & (boolean logika
AND), || (logika OR), | (boolean logika inclusive OR), ^ (boolean logika exclusive
OR), dan ! (logika NOT).
Pernyataan dasar untuk operasi logika adalah,
x1 op x2
Dimana x1, x2 dapat menjadi pernyataan boolean. Variabel atau konstanta,
dan op adalah salah satu dari operator &&, &, ||, | atau ^. Tabel kebenaran yang
akan ditunjukkan selanjutnya, merupakan kesimpulan dari hasil dari setiap operasi
untuk semua kombinasi yang mungkin dari x1 dan x2.
a. && (logika AND) dan & (boolean logika AND)
Berikut ini adalah tabel kebenaran untuk && dan &,

Perbedaan dasar antara operator && dan & adalah bahwa &&
mensupports short-circuit evaluations (atau evaluasi perbagian), sementara
operator & tidak. Apa arti dari pernyataan tersebut?
Diberikan suatu pernyataan,
exp1 && exp2
&& akan mengevaluasi pernyataan exp1, dan segera mengembalikan
nilai false dan menyatakan bahwa exp1 bernilai false. Jika exp1 bernilai false,
operator tidak akan pernah mengevaluasi exp2 karena hasil operasi operator
akan menjadi false tanpa memperhatikan nilai dari exp2. Sebaliknya, operator
& selalu mengevaluasi kedua nilai dari exp1 dan exp2 sebelum
mengembalikan suatu nilai jawaban.
Berikut ini adalah suatu contoh source code yang menggunakan logika
dan boolean AND,
public class TestAND
{
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);
}
}
Output program tersebut adalah :
0
10
false
0
11
false
Catatan, bahwa j++ pada baris yang mengandung operator && tidak
dievaluasi sejak pernyataan pertama (i>10) yaitu telah bernilai sama dengan
false.
b. || (logika OR) dan | (boolean logika inclusive OR)
Berikut ini adalah tabel kebenaran untuk || dan |,

Perbedaan dasar antara operator || dan | adalah bahwa || mendukung short-


circuit evaluations (atau proses evaluasi sebagian), sementara | tidak. Apa
maksud dari pernyataan tersebut? diberikan suatu pernyataan,
exp1 || exp2
|| akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai
true dan menyatakan bahwa exp1 bernilai true. Jika exp1 bernilai true,
operator tidak akan pernah mengevaluasi exp2 karena hasil dari operasi
operator akan bernilai true tanpa memperhatikan nilai dari exp2.
Sebaliknya,operator | selalu mengevaluasi kedua nilai dari exp1 and exp2
sebelum mengembalikan suatu jawaban suatu nilai.
Berikut ini sebuah contoh source code yang menggunakan operator
logika dan boolean OR,

public class TestOR


{
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 keluaran dari program ini adalah,
0
10
true
0
11
true
Catatan, bahwa j++ pada baris yang terdiri atas operator || tidak
dievaluasi sejak
pernyataan pertama (i<10) yaitu telah bernilai sama dengan true.
c. ^ (boolean logika ExclusiveOR )
Berikut ini adalah tabel kebenaran untuk ^,

Hasil operasi operator exclusive OR adalah TRUE, jika dan hanya jika
satu operand bernilai TRUE dan yang lain bernilai False. Catatan jika kedua
operand harus selalu dievaluasi untuk menjumlahkan hasil dari suatu
exclusive OR.
Berikut ini adalah contoh source code yang menggunakan operator logika
exclusive 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 keluaran program tersebut adalah,
false
true
false
true

d. ! (logika NOT)
Logika NOT digunakan dalam satu argumen, dimana argumen tersebut
dapat menjadi suatu pernyataan, variabel atau konstanta. Berikut ini adalah
tabel kebenaran untuk operator not!,

Berikut ini adalah contoh source code yang menggunakan 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 keluaran program adalah sebagai berikut,
false
true

5. Operator Kondisi(?:)
Operator kondisi ?: adalah operator ternary. Berarti bahwa operator ini
membawa tiga argumen yang membentuk suatu ekspresi bersyarat. Struktur
pernyataan yang menggunakan operator kondisi adalah,
exp1?exp2:exp3
Dimana nilai exp1 adalah suatu pernyataan boolean yang memiliki hasil yang
salah satunya harus berupa nilai true atau false.
Jika exp1 bernilai true, exp2 merupakan hasil operasi. Jika bernilai false,
kemudian exp3 merupakan hasil operasinya.
Sebagai contoh, diberikan code sebagai berikut,
public class ConditionalOperator
{
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 keluaran dari program ini akan menjadi,
Passed
Berikut ini adalah flowchart yang menggambarkan bagaimana operator ?:
bekerja,

Berikut ini adalah program lain yang menggunakan operator ?: ,


class ConditionalOperator
{
public static void main( String[] args )
{ int score = 0;
char answer = 'a';
score = (answer == 'a') ? 10 : 0;
System.out.println("Score = " + score );
}
}
Hasil keluaran program adalah,
Score = 10

TABEL SPESIFIKASI LEMBAR PENILAIAN

Indikator LP dan Butir Soal Kunci LP dan Butir Soal


Produk :
1. Mendeskripsikan dasar penulisan LP 1A Produk Kunci LP 1A Produk
program, tipe file penyimpanan
program, pembuatan komentar dalam
baris program.
2. Menghafal formula untuk deklarasi dan
inisialisasi variabel LP 1B Produk Kunci LP 1B Produk
3. Menjelaskan fungsi operator

LP 1C Produk Kunci LP 1C Produk


Proses :
1. Menganalisis penulisan program, tipe LP 2A Proses Dapat melakukan rincian tugas
file program, dan komentar. sesuai format pada LP2A Proses
2. Mengidentifikasi tipe data yang sesuai Dapat melakukan rincian tugas
dengan variabel yang akan dibuat. LP 2B Proses sesuai format pada LP2B Proses
3. Menganalisis operator yang sesuai untuk Dapat melakukan rincian tugas
kasus pemrograman tertentu. sesuai format pada LP2C Proses
LP 2C Proses
Karakter :
1. Jujur LP 4 Karakter Seluruh seluruh rincian tugas itu
2. Tanggung jawab minimal memperoleh penilaian
3. Disiplin menunjukkan kemajuan dan
4. Percaya Diri dipercayakan kepada judgement
5. Rasa ingin tahu Penilai/Guru.
Keterampilan Sosial :
1. Bertanya LP 5 Keterampilan Seluruh seluruh rincian tugas itu
2. Menjadi pendengar yang baik Sosial minimal memperoleh penilaian
menunjukkan kemajuan dan
dipercayakan kepada judgement
Penilai/Guru
LP 1A: PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar


1. Buatlah perintah pada JAVA untuk membuat deklarasi class baru sesuai nama
Anda masing-masing dengan akses public. (skor maksimal 20)
2. Isikan pada class yang sudah Anda buat di awal dengan komentar yang
berisikan Saya sendang mengerjakan tugas. Saya pasti bisa
menyelesaikannya dengan baik dalam dua baris terpisah. (skor maksimal 15)
3. Tuliskan method utama pada baris program selanjutnya. (skor maksimal 20)
4. Tuliskan komentar Saya Berhasil ! tanpa tanda petik- (skor maksimal 10)
5. Tutup method utama dan class dan beri komentar pada masing-masing untuk
menjelaskan penutup mana yang untuk method utama dan mana yang untuk
class (skor maksimal 20)
6. Beri nama file dengan nama Anda untuk di simpan (skor maksimal 15)
KUNCI LP 1A PRODUK

1. Perintah untuk membuat class baru :


public class <nama siswa> {
ket : <nama siswa> seharusnya diisi sesuai nama masing-masing siswa
tanpa tanda petik dan kurung siku.
2. Perintah untuk membuat komentar dalam dua baris :
/**Saya sendang mengerjakan tugas.
Saya pasti bisa menyelesaikannya dengan baik*/
(bagaimanapun Siswa menulis, hal yang paling penting diperhatikan adalah
bagian /** pada pembuka dan */ pada penutup komentar)
3. Deklarasi method utama :
public static void main (String[] args){

4. Baris komentar :
//Saya berhasil !
Atau
/* Saya berhasil ! */
5. } //tutup method
utama } // tutup class
6. Nama file : <nama siswa>.java
Ket : <nama siswa> harusnya diisi dengan nama siswa tanpa kurung siku
Kriteria Penilaian Kinerja Produk
Kriteria
No. Rincian produk yang diamati

1. Membuat class baru 20 = membuat class dengan benar


0 = syntax pembuatan class salah
2. Komentar dalam dua baris 15 = syntax komentar benar
0 = syntax komentar class salah
3. Method utama 20 = syntax method utama benar
0 = syntax method utama salah
4. Komentar satu baris 10 = syntax komentar benar
0 = syntax komentar class salah
5. Penutup method dan class 20 = syntax penutup dan komentar benar
10 = syntax penutup benar, tidak ada komentar
0 = syntax penutup salah dan tidak ada komentar
6. Nama file 15 = nama file benar
0 = nama file salah
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

FORMAT ASESMEN KINERJA PRODUK


No. Rincian produk yang diamati Skor Maksimal Skor Asesmen

1. Membuat class baru 20


2. Komentar dalam dua baris 15
3. Method utama 20
4. Komentar satu baris 10
5. Penutup method dan class 20
6. Nama file 15
Jumlah skor 100
KRITERIA PENILAIAN KINERJA PRODUK

Kriteria
No. Rincian produk yang diamati

1. Membuat class baru 20 = membuat class dengan benar


0 = syntax pembuatan class salah
2. Komentar dalam dua baris 15 = syntax komentar benar
0 = syntax komentar class salah
3. Method utama 20 = syntax method utama benar
0 = syntax method utama salah
4. Komentar satu baris 10 = syntax komentar benar
0 = syntax komentar class salah
5. Penutup method dan class 20 = syntax penutup dan komentar benar
10 = syntax penutup benar, tidak ada komentar
0 = syntax penutup salah dan tidak ada komentar
6. Nama file 15 = nama file benar
0 = nama file salah
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 1B : PRODUK
Nama : __________________ Kelas :
________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar.


1. Dibawah ini yang bukan termasuk tipe data primitif dalam pemrograman
JAVA adalah :
a. Boolean c. Varchar
b. Short d. double
2. tipe data yang mempunyai ciri harus berada dalam tanda single quotes ( )
adalah :
a. float c. char
b. int d. double
3. pernyataan true dan false merupakan perwakilan dari tipe data :
a. short c. varchar
b. boolean d. int
4. 3.568 lebih tepat di deklarasikan menggunakan tipe data :
a. byte c. int
b. char d. double
5. tipe data integral dalam Java menggunakan tiga bentuk yaitu desimal, oktal
dan atau heksadesimal. di bawah ini yang merupakan nilai oktal adalah :
a. 2.14 c. 03475
b. 3.14E13 d. 0xB43CC
6. tipe data integral dalam Java menggunakan tiga bentuk yaitu desimal, oktal
dan atau heksadesimal. di bawah ini yang merupakan nilai heksadesimal
adalah :
a. 2.14 c. 03475
b. 3.14E13 d. 0xB43CC
7. default tipe data untuk tipe-tipe integral adalah :
a. int c. short
b. long d. double
8. Manakah pendeklarasian variabel yang benar dari pilihan di bawah ini :
a. int double; c. int result = C;
b. int A = 0x314; d. int A = 3.14;
9. Manakah pendeklarasian variabel yang benar dari pilihan di bawah ini :
a. boolean = true; c. char initial =J;
b. int char = A; d. result var = false;
10. Manakah pendeklarasian variabel yang benar dari pilihan di bawah ini :
a. int A; c. float name = J;
b. int A = 3.14; d. char name = Juli;
KUNCI LP 1B PRODUK

1. c
2. c
3. b
4. d
5. c
6. d
7. a
8. b
9. c
10. a

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen
LP 1C : PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar


1. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator aritmatika
untuk variabel OpX dan OpZ di bawah ini, jawablah kolom kegunaan yang
terletak di sebelahnya: (skor maksimal 20)

Penggunaan Kegunaan Contoh Penggunaan Hasil


OpX + OpZ
OpX * OpZ
OpX / OpZ
OpX % OpZ
OpX - OpZ

2. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator increment


dan decrement untuk variabel OpX dan OpZ di bawah ini, jawablah kolom
kegunaan yang terletak di sebelahnya: (skor maksimal 20)

Penggunaan Kegunaan Contoh Penggunaan Hasil


OpX++
++OpZ
OpX--
--OpZ

3. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator relasi


untuk variabel OpX dan OpZ di bawah ini, jawablah kolom kegunaan yang
terletak di sebelahnya: (skor maksimal 20)

Penggunaan Kegunaan
OpX > OpZ
OpX >= OpZ
OpX < OpZ
OpX <= OpZ
OpX == OpZ
OpX != OpZ
4. Terdapat variabel OpX dan OpZ dimana operator tersebut berupa pernyataan
boolean. Berdasarkan penggunaan operator logika untuk variabel OpX dan

OpZ di bawah ini, jawablah kesimpulan hasil operasi dalam bentuk boolean
yang terletak di sebelahnya: (skor maksimal 20)
a. Operator AND (&&)
OpX OpZ Hasil

TRUE TRUE

TRUE FALSE

FALSE TRUE

FALSE FALSE

b. Operator OR (||)
OpX OpZ Hasil

TRUE TRUE

TRUE FALSE

FALSE TRUE

FALSE FALSE

c. Operator ExclusiveOR(XOR)
OpX OpZ Hasil

TRUE TRUE

TRUE FALSE

FALSE TRUE

FALSE FALSE

d. Operator kebalikan/NOT (!)


OpX Hasil

TRUE

FALSE

5. Perhatikan operator kondisi di bawah ini :


Hasil_Ujian>=70?Lulus:Silahkan Remedial;
Jelaskan maksud dari pernyataan di atas! (skor maksimal 20)
KUNCI LP 1C PRODUK

1. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator aritmatika


untuk variabel OpX dan OpZ di bawah ini, jawablah kolom kegunaan yang
terletak di sebelahnya (Pada contoh penggunaan langsung gunakan nilai
sebagai contoh):

Penggunaan Kegunaan Contoh Hasil


Penggunaan
OpX + OpZ Menjumlahkan OpX dengan OpZ 22+7 29
OpX * OpZ Mengalikan OpX dengan OpZ 22*7 154
OpX / OpZ Membagi OpX dengan OpZ 22/7 3,33
OpX % OpZ Mencari modulus (sisa pembagian) OpX 22%7 1
dengan OpZ
OpX - OpZ Mengurangi OpX dari OpZ 22-7 15

2. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator increment


dan decrement untuk variabel OpX dan OpZ di bawah ini, jawablah kolom
kegunaan yang terletak di sebelahnya (Pada contoh penggunaan langsung
gunakan nilai sebagai contoh):

Penggunaan Kegunaan Contoh Hasil


Penggunaan
OpX++ Menambahkan nilai 1 pada op; 7++ 7
mengevaluasi nilai op sebelum
diincrementasi / ditambahkan
++OpZ Menambahkan nilai 1 pada op; ++7 8
mengevaluasi nilai op setelah
diincrementasi / ditambahkan
OpX-- Mengurangi nilai 1 pada op; 7-- 7
mengevaluasi nilai op sebelum
didecrementasi / dikurangi
--OpZ Mengurangi nilai 1 pada op; --7 6
mengevaluasi nilai op setelah
didecrementasi / dikurangi

3. Terdapat variabel OpX dan OpZ. Berdasarkan penggunaan operator relasi


untuk variabel OpX dan OpZ di bawah ini, jawablah kolom kegunaan yang
terletak di sebelahnya:

Penggunaan Kegunaan
OpX > OpZ Nilai OpX lebih besar dari pada OpZ
OpX >= OpZ Nilai OpX lebih besar atau sama dengan nilai OpZ
OpX < OpZ Nilai OpX kurang dari OpZ
OpX <= OpZ Nilai OpX kurang dari atau sama dengan OpZ
OpX == OpZ Nilai OpX sama dengan OpZ
OpX != OpZ Nilai OpX tidak sama dengan OpZ

4. Terdapat variabel OpX dan OpZ dimana operator tersebut berupa pernyataan
boolean. Berdasarkan penggunaan operator logika untuk variabel OpX dan
OpZ di bawah ini, jawablah kesimpulan hasil operasi dalam bentuk boolean
yang terletak di sebelahnya:
a. Operator AND (&&)
OpX OpZ Hasil

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE

b. Operator OR (||)
OpX OpZ Hasil

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE TRUE

c. Operator ExclusiveOR(XOR)
OpX OpZ Hasil

TRUE TRUE FALSE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE

d. Operator kebalikan/NOT (!)


OpX Hasil

TRUE FALSE

FALSE TRUE
5. Maksud dari pernyataan
Hasil_Ujian>=70?Lulus:Silahkan Remedial;
adalah bahwa :
a. Hasil_Ujian>=70 merupakan pernyataan boolean untuk memberikan
hasil true atau false (jika Hasil_Ujian bernilai >=70, maka akan
mengembalikan nilai true. begitu pula sebaliknya)
b. Lulus merupakan hasil operasi. jika pernyataan di awal (poin no 1)
bernilai true maka hasil operasi akan mengembalikan nilai Lulus
c. Silahkan Remedial merupakan hasil operasi. jika pernyataan di awal
(poin no 1) bernilai false maka hasil operasi akan mengembalikan
nilai Silahkan Remedial

Kriteria Penilaian Kinerja Produk

No. Rincian produk yang diamati Kriteria

1. Operator Aritmatika 20 =Menjawab keseluruhan isi tabel dengan benar


18 = Menjawab 4 dari 5 isi tabel dengan benar
15 = Menjawab 3 dari 5 isi tabel dengan benar
10 = Menjawab 2 dari 5 isi tabel dengan benar
5 = Menjawab 1 dari 5 isi tabel dengan benar
0 = jawaban belum tepat
2. Operator Increment dan 20 =Menjawab keseluruhan isi tabel dengan benar
Decrement 15 = Menjawab 3 dari 4 isi tabel dengan benar
10 = Menjawab 2 dari 4 isi tabel dengan benar
5 = Menjawab 1 dari 4 isi tabel dengan benar
0 = jawaban belum tepat
3. Operator relasi 20 =Menjawab keseluruhan isi tabel dengan benar
15 = Menjawab 4-5 dari 6 isi tabel dengan benar
10 = Menjawab 2-3 dari 6 isi tabel dengan benar
5 = Menjawab 1 dari 6 isi tabel dengan benar
0 = jawaban belum tepat
4. Operator Logika 20 =Menjawab keseluruhan isi tabel dengan benar
15 = Menjawab 3 dari 4 tabel dengan benar
10 = Menjawab 2 dari 4 tabel dengan benar
5 = Menjawab 1 dari 4 tabel dengan benar
0 = jawaban belum tepat
5. Operator (?:) 20 = menjawab soal dengan benar
15 = dua dari tiga poin jawaban benar
10 = salah satu dari tiga poin jawaban benar
0 = tidak ada poin jawaban yang benar
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen
FORMAT ASESMEN KINERJA PRODUK

No. Rincian produk yang diamati Skor Maksimal Skor Asesmen

1. Operator Aritmatika 20
2. Operator Increment dan Decrement 20
3. Operator relasi 20
4. Operator Logika 20
5. Operator (?:) 20
Jumlah skor 100
KRITERIA PENILAIAN KINERJA PRODUK

Kriteria
No. Rincian produk yang diamati

1. Operator Aritmatika 20 =Menjawab keseluruhan isi tabel dengan benar


18 = Menjawab 4 dari 5 isi tabel dengan benar
15 = Menjawab 3 dari 5 isi tabel dengan benar
10 = Menjawab 2 dari 5 isi tabel dengan benar
5 = Menjawab 1 dari 5 isi tabel dengan benar
0 = jawaban belum tepat
2. Operator Increment dan 20 =Menjawab keseluruhan isi tabel dengan benar
Decrement 15 = Menjawab 3 dari 4 isi tabel dengan benar
10 = Menjawab 2 dari 4 isi tabel dengan benar
5 = Menjawab 1 dari 4 isi tabel dengan benar
0 = jawaban belum tepat
3. Operator relasi 20 =Menjawab keseluruhan isi tabel dengan benar
15 = Menjawab 4-5 dari 6 isi tabel dengan benar
10 = Menjawab 2-3 dari 6 isi tabel dengan benar
5 = Menjawab 1 dari 6 isi tabel dengan benar
0 = jawaban belum tepat
4. Operator Logika 20 =Menjawab keseluruhan isi tabel dengan benar
15 = Menjawab 3 dari 4 tabel dengan benar
10 = Menjawab 2 dari 4 tabel dengan benar
5 = Menjawab 1 dari 4 tabel dengan benar
0 = jawaban belum tepat
5. Operator (?:) 20 = menjawab soal dengan benar
15 = dua dari tiga poin jawaban benar
10 = salah satu dari tiga poin jawaban benar
0 = tidak ada poin jawaban yang benar
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 2A : PROSES
Nama : __________________ Kelas :
________ No. Absen : __________________ Tanggal :
________

Prosedur :
1. Siapkan program Test seperti yang tercantum di bawah ini menggunakan
notepad++ pada layar proyektor atau tulis di whiteboard :

kemudian tunjukkan pada siswa bahwa program Test disimpan dalam file
seperti di bawah ini. Atau jika tidak menggunakan proyektor, beri keterangan
bahwa program ini disimpan pada direktori komputer dengan nama seperti di
bawah ini :

2. Tugasi siswa melakukan pengamatan terhadap program Test di atas dan cara
penyimpanannya.
3. Berikan siswa tugas untuk melakukan identifikasi kesalahan pada baris
program Test dan file penyimpanannya dan menuliskannya di lembar
jawaban serta alasan kesalahannya.
4. Tugasi siswa untuk memperbaiki potongan program Test dan file
penyimpanannya dan menuliskannya di lembar jawaban.
5. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.
Format Asesmen Kinerja Proses
No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh
sendiri guru
1. Dapat mengidentifikasi kesalahan yang terdapat 50
dalam program
2. Dapat memperbaiki program yang dicontohkan 50

Skor Total 100


KUNCI LP 2A PRODUK

1. Identifikasi kesalahan pada program :

a. Tulisan Public seharusnya tidak menggunakan huruf kapital pada awal


kata
b. Penulisan komentar pada baris ke 3 dan 4 seharusnya diawali dengan
karakter /** dan diakhiri dengan karakter */
c. setelah void seharusnya ada kata main sebagai method utama dalam class
Test
d. pendeklarasian komentar yang salah. tanda // seharusnya untuk komentar
yang hanya satu baris
e. tanda tutup kurung kurawal (}) kurang satu. karena pembukanya ada dua,
yakni pada class Test dan pada method utama
f. File penyimpanan seharusnya bernama sama dengan projectnya yakni
Test.
2. Perbaikan Kesalahan pada program :
public class Test
{
/**Identifikasilah kesalahan pada
baris program ini*/
public static void main(String[] args) {
// Mulai menaruh kode setelah perintah ini
System.out.println("Saya adalah Siswa kelas
XI");
/**Baris program sebelumnya berfungsi
untuk menampilkan
kata yang berada di dalam
petik*/ }
}
file disimpan dengan nama Test.java
KRITERIA PENILAIAN 2A KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Dapat mengidentifikasi kesalahan 50 = dapat mengidentifikasi 6 kesalahan program


yang terdapat dalam program dengan minimal 5 dari 6 penjelasan benar
40 = dapat mengidentifikasi 5 kesalahan program
dengan minimal 4 dari 6 penjelasan benar
30 = dapat mengidentifikasi 4 kesalahan program
dengan minimal 3 dari 6 penjelasan benar
20 = dapat mengidentifikasi 3 kesalahan program
dengan minimal 2 dari 6 penjelasan benar
10 = dapat mengidentifikasi 2 kesalahan program
dengan minimal 1 dari 6 penjelasan benar
Jika identifikasi benar tetapi penjelasan kurang tepat,
maka gunakan kriteria dengan memperhatikan
penjelasan yang dapat dijawab dengan tepat.
tambahkan poin 5 untuk setiap penjelasan diluar batas
minimal.
2. Dapat memperbaiki program yang 50 = dapat memperbaiki 5 atau 6 kesalahan program
dicontohkan 40 = dapat memperbaiki 4 kesalahan program
30 = dapat memperbaiki 3 kesalahan program
20 = dapat memperbaiki 2 kesalahan program
10 = dapat memperbaiki 1 kesalahan program

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 2B : PROSES
Nama : __________________ Kelas :
________ No. Absen : __________________ Tanggal :
________

Prosedur :
1. Diberikan soal cerita:
Pada sekolah SMK XYZ, guru mata pelajaran RPL membutuhkan sebuah
program yang dapat membantu guru menangani data siswa. Guru
menginginkan program yang dapat menyimpan data nama siswa, nomor induk
siswa, dan data nilai. data nilai ujian blok I, II, dan III, ujian semester, dan
data PR I, PR II, PR III(dalam skala 0-100) juga diharapkan dapat disimpan
dalam program tersebut. Kemudian dari data tersebut guru menginginkan
program dapat membuat rata-rata nilai, dan kemudian disimpan dalam
variabel tersendiri. Berdasarkan nilai rata-rata, kemudian didapat data siswa
tersebut lulus atau tidak, dan disimpan dalam variabel tersendiri.
2. Tugasi siswa untuk mengidentifikasi variabel apa saja yang dibutuhkan untuk
menyimpan data sesuai soal cerita pada poin 1.
3. Berikan siswa tugas untuk melakukan identifikasi tipe data yang sesuai
dengan variabel yang akan dibuat.
4. Format laporan dalam bentuk nama variabel fungsi tipe data
5. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.
Format Asesmen Kinerja Proses
No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
sendiri
1. Dapat mengidentifikasi variabel yang 25
diperlukan
2. Dapat menjelaskan fungsi masing-masing 25
variabel
3. Dapat mengidentifikasi tipe data yang sesuai 50
dengan variabel
Skor Total 100
Kunci LP 2B PROSES

No Nama Variabel Fungsi Tipe data

1. NamaSiswa Menyimpan nama siswa String

2. NomorIndukSiswa Menyimpan no induk siswa String

3. NUjianBlokI Menyimpan nilai ujian blok I Integer

4. NUjianBlokII Menyimpan nilai ujian blok II Integer

5. NUjianBlokIII Menyimpan nilai ujian blok III Integer

6. NujianSemester Menyimpan nilai ujian semester Integer

7. NPR_I Menyimpan nilai PR I Integer

8. NPR_II Menyimpan nilai PR II Integer

9. NPR_III Menyimpan nilai PR III Integer

10. RataRata Menyimpan nilai rata-rata Double

11. Predikat Menyimpan predikat lulus atau Boolean


tidak
KRITERIA PENILAIAN 2B KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Dapat mengidentifikasi variabel 25 = dapat mengidentifikasi 10-11 variabel dari kunci


yang diperlukan yang disediakan
20 = dapat mengidentifikasi 7-9 variabel dari kunci
yang disediakan
25 = dapat mengidentifikasi 5-6 variabel dari kunci
yang disediakan
10 = dapat mengidentifikasi 3-4 variabel dari kunci
yang disediakan
5 = dapat mengidentifikasi 1-2 variabel dari kunci
yang disediakan
2. Dapat menjelaskan fungsi masing- 50 = dapat menjelaskan 10-11 fungsi variabel dari
masing variabel kunci yang disediakan dengan benar
40 = dapat menjelaskan 7-9 fungsi variabel dari kunci
yang disediakan dengan benar
30 = dapat menjelaskan 5-6 fungsi variabel dari kunci
yang disediakan dengan benar
20 = dapat menjelaskan 3-4 fungsi variabel dari kunci
yang disediakan dengan benar
10 = dapat menjelaskan 1-2 fungsi variabel dari kunci
yang disediakan dengan benar
3. Dapat mengidentifikasi tipe data 50 = dapat mengidentifikasi 10-11 tipe data yang
yang sesuai dengan variabel sesuai dengan variabel dari kunci yang
disediakan dengan benar
40 = dapat mengidentifikasi 7-9 tipe data yang sesuai
dengan variabel dari kunci yang disediakan
dengan benar
30 = dapat mengidentifikasi 5-6 tipe data yang sesuai
dengan variabel dari kunci yang disediakan
dengan benar
20 = dapat mengidentifikasi 3-4 tipe data yang sesuai
dengan variabel dari kunci yang disediakan
dengan benar
10 = dapat mengidentifikasi 1-2 tipe data yang sesuai
dengan variabel dari kunci yang disediakan
dengan benar

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen
LP 2C : PROSES

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Prosedur :
1. Diberikan soal :
a. terdapat tiga angka. buatlah fungsi main untuk menghasilkan output nilai
rata-rata dari tiga angka tersebut.
b. terdapat tiga angka. buatlah fungsi main untuk menghasilkan output nilai
terbesar dari tiga angka tersebut.

2. Tugasi siswa untuk mengerjakan soal pada komputer dengan menggunakan


salah satu software JCreator, NetBeans, dll. Beri beberapa catatan, yaitu :
a. gunakan variabel dan tipe data yang sesuai
b. deklarasikan terlebih dahulu variabel tersebut, kemudian diinisialisasi
dengan :
angka 1 = 15
angka 2 = 25
angka 3 = 20
rata-rata=20//ingat bahwa nilai rata-rata mungkin bukan bilangan bulat.
c. gunakan operator yang sesuai dengan soal .
d. untuk soal poin b, gunakan dua set operator ?: untuk memecahkan
permasalahan. angka untuk soal poin b samakan dengan poin b di atas.
dengan hasil output nilai terbesar adalah 25.
e. gunakan system.out.println(.); untuk menampilkan hasil operasi
3. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.
Format Asesmen Kinerja Proses
No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
1. Dapat menginisialisasi variabel dengan tipe 10
data yang sesuai dan nilainya (soal a)
2. Menggunakan operator yang sesuai 25
dengan soal (soal a)
3. Menghasilkan output yang sesuai 15
dengan permintaan (soal a)
4. Dapat menginisialisasi variabel dengan tipe 10
data yang sesuai dan nilainya (soal b)
5. Menggunakan operator yang sesuai 25
dengan soal (soal b)
6. Menghasilkan output yang sesuai 15
dengan permintaan (soal b)
Skor Total 100
KUNCI LP 2C PRODUK

1. Potongan program :
public class Rata{
public static void main(String[] args)
{ int nilai1 = 15;
int nilai2 = 25;
int nilai3 = 20;
float rata2;

rata2 = (nilai1+nilai2+nilai3)/3;
system.out.println(Nilai rata-rata yang dicari
adalah = + rata2);

}
}

OUTPUT :
Nilai rata-rata yang dicari adalah = 20
2. Potongan program :
public class Rata{
public static void main(String[] args)
{ int nilai1 = 15;
int nilai2 = 25;
int nilai3 = 20;
int max;
max=nilai1;
max=(nilai1>nilai2)?nilai1:nilai2;
max=(max>nilai3)?max:nilai3;
system.out.println(Nilai maksimal yang dicari
adalah = + max);

}
}
OUTPUT :
KRITERIA PENILAIAN 2C KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Dapat menginisialisasi variabel 10 = dapat menginisialisasi variabel dengan tepat


dengan tipe data yang sesuai dan 5 = masih terdapat bagian yang belum diinisialisasi
nilainya (soal a) dengan tepat
2. Menggunakan operator yang 25 = operator yang digunakan sesuai dengan
sesuai dengan soal (soal a) permintaan soal
15 = operator yang digunakan sesuai dengan
permintaan soal tetapi masih terdapat sedikit
kekurangan
5 = operator yang digunakan belum sesuai dengan
permintaan soal
3. Menghasilkan output yang sesuai 15 = output yang dihasilkan sesuai dengan soal
dengan permintaan (soal a) 5 = output yang dihasilkan belum sesuai dengan soal,
tetapi sudah terdapat output pada program
4. Dapat menginisialisasi variabel 10 = dapat menginisialisasi variabel dengan tepat
dengan tipe data yang sesuai dan 5 = masih terdapat bagian yang belum diinisialisasi
nilainya (soal b) dengan tepat
5. Menggunakan operator yang 25 = operator yang digunakan sesuai dengan
sesuai dengan soal (soal b) permintaan soal
15 = operator yang digunakan sesuai dengan
permintaan soal tetapi masih terdapat sedikit
kekurangan
5 = operator yang digunakan belum sesuai dengan
permintaan soal
6. Menghasilkan output yang sesuai 15 = output yang dihasilkan sesuai dengan soal
dengan permintaan (soal b) 5 = output yang dihasilkan belum sesuai dengan soal,
tetapi sudah terdapat output pada program

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 3 : FORMAT PENGAMATAN PERILAKU BERKARAKTER


Nama : __________________ Kelas :
________ No. Absen : __________________ Tanggal :
________

Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Perilaku Berkarakter


Rincian Tugas Kerja
No (D) (C) (B) (A)
(RTK)
1. Jujur
2. Tanggung jawab
3. Disiplin
4. Percaya Diri
5. Rasa Ingin Tahu
KRITERIA PENILAIAN PERILAKU BERKARAKTER

No Rincian Tugas Kinerja yang Diamati Rubrik


A: sangat jujur
B: jujur
1. Jujur
C: cukup jujur
D: kurang jujur
A: sangat bertanggung jawab
B: bertanggung jawab
2. Tanggung jawab
C: cukup bertanggung jawab
D: kurang bertanggung jawab
A: sangat disiplin
B: disiplin
3. Disiplin
C: cukup disiplin
D: kurang disiplin
A: sangat percaya diri
B: percaya diri
4. Percaya Diri
C: cukup percaya diri
D: kurang percaya diri
A: Memiliki rasa ingin tahu yang tinggi
B: Memiliki rasa ingin tahu
5. Rasa Ingin Tahu
C: cukup memiliki rasa ingin tahu
D: kurang memiliki rasa ingin tahu
LP 4 : FORMAT PENGAMATAN KETERAMPILAN SOSIAL

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Keterampilan Sosial


No Rincian Tugas Kerja (RTK) (D) (C) (B) (A)
1. Bertanya
3. Menjadi pendengar yang baik
KRITERIA PENILAIAN KETERAMPILAN SOSIAL

No Rincian Tugas Kinerja yang diamati Rubrik


A: selalu bertanya
Bertanya B: sering bertanya
1.
C: jarang bertanya
D: tidak pernah bertanya
A: sangat antusias mendengarkan
Menjadi pendengar yang baik B: antusias mendengarkan
2.
C: cukup antusias mendengarkan
D: kurang antusias mendengarkan

Gending, 27 Juli 2015


Mengetahui,
Kepala SMK Negeri I Gending Guru Mata Pelajaran

Drs. H. SAHUDI DITA AGUSTIN DAMAYANTI, S.ST


NIP. 19670809 199802 1 004
RENCANA PELAKSANAAN PEMBELAJARAN (RPP)

Nama Sekolah : SMK Negeri 1 Gending


Mata Pelajaran : Menggunakan Bahasa Pemrograman Berorientasi Objek
Kelas : XII (Dua Belas)
Semester : 5 (Lima)
Jumlah Pertemuan : 4 Pertemuan

A. Standar Kompetensi :
Merancang aplikasi teks dan desktop berbasis obyek

B. Kompetensi Dasar :
Menerapkan Fungsi

C. Indikator :
1. Kognitif
c. Produk
1) Menjelaskan struktur kontrol keputusan/pemilihan (if, else, dan
switch)
2) Menjelaskan struktur kontrol perulangan / looping
d. Proses
1) Merancang program yang didalamnya terdapat struktur kontrol
keputusan/pemilihan dengan mendapat inputan dari keyboard
2) Merancang program yang didalamnya terdapat struktur kontrol
perulangan dengan mendapat inputan dari keyboard
e. Psikomotor
1) Membuat program yang didalamnya terdapat penerapan struktur
kontrol keputusan/pemilihan dengan mendapat inputan dari
keyboard
2) Membuat program yang didalamnya terdapat penerapan struktur
kontrol perulangan dengan mendapat inputan dari keyboard
2. Afektif
c. Mengembangkan perilaku berkarakter, meliputi :
1) Jujur
2) Tanggung jawab
3) Kerjasama
4) Disiplin
d. Mengembangkan keterampilan sosial, meliputi :
3) Bertanya
4) Menyumbang ide atau berpendapat

D. Tujuan Pembelajaran
3. Kognitif
a. Produk
1) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menjelaskan struktur kontrol/pemilihan (if, else dan switch) pada
pemrograman JAVA sesuai deskripsi yang tercantum pada kunci
LP1 produk.
2) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menjelaskan struktur kontrol perulangan / looping (while, do-
while, for) pada pemrograman JAVA sesuai deskripsi yang
tercantum pada kunci LP1 Produk.
b. Proses
1) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
berkelompok mampu untuk merancang algoritma fungsi untuk
struktur kontrol/keputusan sesuai dengan program yang sudah
diberikan menggunakan bahasa pemrograman JAVA berdasarkan
format LP2 Proses sesuai kunci LP2 Proses.
2) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
berkelompok mampu untuk merancang algoritma fungsi untuk
struktur perulangan sesuai dengan program yang sudah diberikan
menggunakan bahasa pemrograman JAVA berdasarkan format
LP2 Proses sesuai kunci LP2 Proses.
c. Psikomotor
1) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
berkelompok mampu untuk membuat program dengan
menerapkan struktur kontrol keputusan/pemilihan
untuk menghasilkan program yang sesuai dengan apa yang
telah diberikan menggunakan bahasa pemrograman JAVA
dan menggunakan inputan dari keyboard berdasarkan format
LP3 Psikomotor sesuai kunci LP3 Psikomotor.
2) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
berkelompok mampu untuk membuat program dengan
menerapkan struktur kontrol perulangan untuk menghasilkan
program yang sesuai dengan apa yang telah diberikan
menggunakan bahasa pemrograman JAVA dan menggunakan
inputan dari keyboard berdasarkan format LP3 Psikomotor sesuai
kunci LP3 Psikomotor.

4. Afektif
c. Karakter
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai pengamat membuat kemajuan dalam menunjukkan
perilaku berkarakter dengan LP3 Format Pengamatan Perilaku
Berkarakter, meliputi :
1) Jujur : siswa secara jujur mampu mengerjakan tugas-tugas
tentang penerapan fungsi pada pemrograman JAVA
2) Tanggung jawab : siswa bertanggung jawab terhadap dirinya
sendiri untuk memahami pelajaran tentang penerapan fungsi pada
pemrograman JAVA.
3) Kerjasama : siswa memiliki kemampuan bekerjasama yang baik
antara satu sama lain, karena pembelajaran penerapan fungsi pada
pemrograman JAVA dilaksanakan secara berkelompok
menggunakan model pembelajaran berdasar masalah.
4) Disiplin : siswa disiplin dalam pengumpulan tugas dengan tepat
waktu dan kehadiran di kelas.
d. Perilaku Sosial
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai membuat kemajuan dalam menunjukkan perilaku
berkarakter dengan LP4 Format Pengamatan Keterampilan Sosial,
meliputi :
1) Bertanya : siswa aktif bertanya ketika penjelasan guru dirasa
kurang memberi pemahaman pada dirinya.
2) Menyumbang ide atau berpendapat : siswa aktif menyumbangkan
ide atau berpendapat dalam kegiatan berkelompok untuk
menyelesaikan masalah yang muncul pada saat pengerjaan tugas.

E. Materi Pembelajaran
1. Mendapatkan input dari keyboard pada pemrograman JAVA
2. Struktur kontrol keputusan untuk memilih bagian dari program yang akan
di eksekusi pemrograman JAVA
3. Struktur kontrol perulangan untuk mengkesekusi blok kode berulang-
ulang sesuai dengan jumlah tertentu yang diinginkan pemrograman JAVA

F. Alokasi Waktu : 8 x 45 menit (dua pertemuan)

G. Metode Pembelajaran
1. Model Pembelajaran : Model Pembelajaran Berdasar Masalah(MPBM)
2. Metode Pembelajaran: Penjelasan singkat dan pemberian tugas untuk
kelompok
H. Proses Belajar Mengajar
Tabel Proses Belajar Mengajar Pertemuan I : Input Dari Keyboard Dan
Struktur Kontrol Keputusan
Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
3. Memotivasi siswa dengan memberi penjelasan kepada
peserta didik tentang penggunaan struktur kontrol
keputusan dan apa saja yang bisa dibuat dengan
menggunakan struktur kontrol keputusan pada
pemrograman JAVA dengan menunjukkan aplikasi
jadi yang di dalamnya terdapat struktur kontrol
keputusan. Selanjutnya guru mengorientasikan kepada
masalah yang akan dicari pemecahannya oleh siswa
secara berkelompok. Masalah
tersebut adalah Mengkonsep dan
mengimplementasikan cara membuat aplikasi sesuai
dengan apa yang sudah diperlihatkan oleh guru di
awal pelajaran(Fase 1 MPBM)
4. Menyampaikan inti tujuan pembelajaran
Inti ( 130 menit) produk, proses, psikomotor,
9. Mengorganisasikan siswa untuk belajar dengan cara
memberikan Modul ajar : Penerapan fungsi pada
pemrograman JAVA untuk memperkuat pemahaman siswa
mengenai materi struktur dan penggunaan kontrol
keputusan. Sebagai panduan dalam pemecahan masalah
yang telah ditentukan. Guru meminta siswa untuk jujur
mengungkapkan hal-hal yang belum dimengerti dalam
Modul tersebut dan memberi kesempatan kepada siswa
lain untuk memberikan ide atau berpendapat untuk
memberi penjelasan terkait pertanyaan yang diajukan oleh
temannya. Guru mengingatkan supaya siswa dapat
memecahkan masalah terkait penerapan struktur dan
penggunaan kontrol keputusan pada pemrograman JAVA
dengan mudah harus mempelajari struktur kontrol
keputusan pada pemrograman JAVA. (Fase 2 MPBM)
10. Membimbing siswa untuk melakukan pendeskripsian
program baris demi baris dari hasil output yang dihasilkan
oleh program untuk dapat menganalisis syntax
pemrograman yang digunakan. Secara berkelompok siswa
diminta bekerja sama tentang pendeskripsian hasil output
program/aplikasi. Siswa diharapkan mampu memberikan
ide atau berpendapat pada saat diskusi kelompok
berlangsung (Fase 3 MPBM)
11. Selanjutnya siswa dibimbing untuk merencanakan dan
merancang program (algoritma fungsinya saja) untuk
membuat program sesuai dengan apa yang diberikan
oleh guru. (Fase 3 MPBM)
12. Guru membimbing siswa mengembangkan algoritma
yang telah dibuat untuk menjadi program utuh yang
dapat dijalankan dan memberikan hasil yang sesuai
dengan apa yang telah ditunjukkan pada awal
pertemuan. (Fase 3 MPBM)
13. Para siswa dibimbing untuk menyajikan hasil karya yaitu
program utuh yang telah jadi dan dapat dijalankan dengan
hasil output yang sesuai dengan apa yang diminta.
Kemudian para siswa diminta mempresentasikan hasil
14. Bersama siswa guru melakukan analisis dan evaluasi
proses pemecahan masalah penerapan fungsi pada
pemrograman JAVA dalam hal ini mengkritisi hasil
kerja yang telah dibuat oleh semua kelompok. (Fase 5
Penutup ( 35 menit)
1. Guru menugaskan siswa untuk mengerjakan LP 1 Produk
2. Guru menegaskan kepada siswa supaya memeriksa
kembali hasil program yang telah dibuat dan memastikan
bahwa masukan guru dan hasil diskusi sudah
dipertimbangkan untuk pengumpulan laporan. Guru
mengingatkan untuk mengumpulkan laporan hasil

Tabel Proses Belajar Mengajar Pertemuan II : Struktur Kontrol Perulangan


Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memotivasi siswa dengan memberi penjelasan kepada
peserta didik tentang penggunaan struktur kontrol
perulangan dan apa saja yang bisa dibuat dengan
menggunakan struktur kontrol perulangan pada
pemrograman JAVA dengan menunjukkan aplikasi
jadi yang di dalamnya terdapat struktur kontrol
perulangan. Selanjutnya guru mengorientasikan kepada
masalah yang akan dicari pemecahannya oleh siswa
secara berkelompok. Masalah
tersebut adalah Mengkonsep dan
mengimplementasikan cara membuat aplikasi sesuai
dengan apa yang sudah diperlihatkan oleh guru di
awal pelajaran(Fase 1 MPBM)
2. Menyampaikan inti tujuan pembelajaran produk, proses,
psikomotor,
Inti ( 130 menit)perilaku berkarakter dan keterampilan sosial
1. Mengorganisasikan siswa untuk belajar dengan cara
memberikan Modul ajar : Penerapan fungsi pada
pemrograman JAVA untuk memperkuat pemahaman siswa
mengenai materi struktur dan penggunaan kontrol
perulangan. Sebagai panduan dalam pemecahan masalah
yang telah ditentukan. Guru meminta siswa untuk jujur
mengungkapkan hal-hal yang belum dimengerti dalam
Modul tersebut dan memberi kesempatan kepada siswa
lain untuk memberikan ide atau berpendapat untuk
memberi penjelasan terkait pertanyaan yang diajukan oleh
temannya. Guru mengingatkan supaya siswa dapat
memecahkan masalah terkait penerapan struktur dan
penggunaan kontrol perulangan pada pemrograman JAVA
dengan mudah harus mempelajari struktur kontrol
perulangan pada pemrograman JAVA. (Fase 2 MPBM)
2. Membimbing siswa untuk melakukan pendeskripsian
program baris demi baris dari hasil output yang dihasilkan
oleh program untuk dapat menganalisis syntax
pemrograman yang digunakan. Secara berkelompok siswa
diminta bekerja sama tentang pendeskripsian hasil output
program/aplikasi. Siswa diharapkan mampu memberikan
ide atau berpendapat pada saat diskusi kelompok
berlangsung (Fase 3 MPBM)
3. Selanjutnya siswa dibimbing untuk merencanakan dan
merancang program (algoritma fungsinya saja) untuk
membuat program sesuai dengan apa yang diberikan
memberikan hasil yang sesuai dengan apa yang telah
ditunjukkan pada awal pertemuan. (Fase 3 MPBM)
5. Para siswa dibimbing untuk menyajikan hasil karya yaitu
program utuh yang telah jadi dan dapat dijalankan dengan
hasil output yang sesuai dengan apa yang diminta.
Kemudian para siswa diminta mempresentasikan hasil
pekerjaannya disertai dengan penjelasan tiap syntax di
hadapan seluruh siswa dan guru. Guru harus memberikan
umpan balik pada setiap rancangan penjelasan syntax yang
dibuat siswa supaya penjelasannya logis dan dapat
memberi pemahaman kepada teman-teman yang lain(Fase
4 MPBM)
6. Bersama siswa guru melakukan analisis dan evaluasi
proses pemecahan masalah penerapan fungsi pada
pemrograman
Penutup JAVA dalam hal ini mengkritisi hasil
( 35 menit)
1. Guru menugaskan siswa untuk mengerjakan LP 1 Produk
2. Guru menegaskan kepada siswa supaya memeriksa
kembali hasil program yang telah dibuat dan memastikan
bahwa masukan guru dan hasil diskusi sudah
dipertimbangkan untuk pengumpulan laporan. Guru
mengingatkan untuk mengumpulkan laporan hasil

I. Penilaian Hasil Belajar


1. LP 1A, LP 1B: Produk dilengkapi kunci LP1
2. LP 2A, LP 2B: Proses dilengkapi kunci LP2
3. LP 3A, LP3B : Psikomotor
4. LP 4: Format pengamatan perilaku berkarakter
5. LP 5: Format Pengamatan Keterampilan Sosial
6. Tabel spesifikasi lembar penilaian

J. Sumber Pembelajaran
1. LKS SMK 1 LP 2 Proses : Penerapan Fungsi Kontrol Pemilihan
2. LKS SMK 2 LP 2 Proses : Penerapan Fungsi Kontrol Perulangan
3. JENI (JAVA Education Network Indonesia)
4. Tabel spesifikasi lembar penilaian
5. Silabus
MODUL SMK
PENERAPAN FUNGSI
MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

Mata Pelajaran : Merancang Aplikasi Teks Dan Desktop Berbasis


Kelas Obyek : XII Rekayasa Perangkat Lunak
Standar kompetensi : Merancang Aplikasi Teks Dan Desktop Berbasis Obyek
Kompetensi Dasar : Menerapkan Fungsi
Tujuan Pembelajaran : 1. Siswa mampu menjelaskan struktur kontrol
keputusan/pemilihan (if, else, dan switch)
2. Siswa mampu menjelaskan struktur kontrol
perulangan / looping
3. Siswa mampu merencanakan dan merancang
program yang didalamnya terdapat struktur kontrol
keputusan/pemilihan dengan mendapat inputan dari
keyboard
4. Siswa mampu merencanakan dan merancang
program yang didalamnya terdapat struktur kontrol
perulangan dengan mendapat inputan dari keyboard
5. Siswa mampu membuat program yang didalamnya
terdapat penerapan struktur kontrol
keputusan/pemilihan dengan mendapat inputan dari
keyboard
6. Siswa mampu membuat program yang didalamnya
terdapat penerapan struktur kontrol perulangan
dengan mendapat inputan dari keyboard

A. Mendapatkan input Dari Keyboard


1. Menggunakan BufferedReader untuk mendapatkan input
Pada bagian ini, kita akan menggunakan class BufferedReader yang berada
di package java.io untuk mendapatkan input dari keyboard.
Berikut ini adalah langkah-langkah yang diperlukan untuk mendapatkan
input dari
keyboard:
a. Tambahkan di bagian paling atas code Anda:
import java.io.*;
b. Tambahkan statement berikut:
BufferedReader dataIn = new BufferedReader(new
InputStreamReader( System.in) );
c. Deklarasikan variabel String temporary untuk mendapatkan input, dan
gunakan fungsi readLine() untuk mendapatkan input dari keyboard.
Anda harus mengetikkannya di dalam blok try-catch:
try{
String temp =
dataIn.readLine(); }
catch( IOException e ){
System.out.println(Error in getting
input); }
Berikut ini adalah source code lengkapnya:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class GetInputFromKeyboard


{
public static void main( String[] args )
{ BufferedReader dataIn = new
BufferedReader(new
InputStreamReader( System.in) );
String name = "";
System.out.print("Please Enter Your
Name:");
try{
name =
dataIn.readLine(); }
catch( IOException e ){
System.out.println("Error!");
}
System.out.println("Hello " + name
+"!"); }
}

Berikutnya akan penjelasan setiap baris dari code tersebut:


Statement,
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
menjelaskan bahwa kita akan menggunakan class BufferedReader,
InputStreamReader dan IOException yang berada di java.io package.
Java Application Programming Interface (API) berisi ratusan class yang
sudah didefinisikan sebelumnya yang dapat digunakan untuk program
Anda. Class-class tersebut dikumpulkan di dalam packages.
Packages berisi class yang mempunyai fungsi yang saling berhubungan.
Seperti pada
contoh di atas, java.io package mengandung class-class yang
memungkinkan program untuk melakukan input dan output data.
Pernyataan di atas juga dapat ditulis
sebagai berikut,
import java.io.*;
yang akan mengeluarkan semua class yang berada dalam package, dan
selanjutnya kita
bisa menggunakan class-class tersebut dalam program kita.
Dua statement selanjutnya,
public class GetInputFromKeyboard
{
public static void main( String[] args ){
kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini
mendeklarasikan
class bernama GetInputFromKeyboard dan kita mendeklarasikan method
main.

Dalam statement,
BufferedReader dataIn = new BufferedReader(new
InputStreamReader( System.in) );
kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe class
BufferedReader. Jangan mengkhawatirkan tentang maksud dari syntax
saat ini. Kita akan menjelaskannya pada akhir pembahasan.
Sekarang, kita akan mendeklarasikan variabel String dengan identifier
name,
String name = "";
Pernyataan di atas merupakan tempat untuk menyimpan input dari user.
Nama variabel
diinisialisasi sebagai String kosong "". Sebaiknya kita selalu
menginisialisasi sebuah variabel setelah kita mendeklarasikannya.
Baris berikutnya adalah memberikan output sebuah String pada layar yang
menanyakan nama user.
System.out.print("Please Enter Your Name:");

Sekarang, blok di bawah ini merupakan try-catch block,


try{
name =
dataIn.readLine(); }
catch( IOException e ){
System.out.println("Error!");
}
Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada
pernyataan,
name = dataIn.readLine();
perlu dicatat bahwa Anda perlu menambahkan kode ini untuk
menggunakan method readLine() dari BufferedReader untuk
mendapatkan input dari user.
Selanjutnya kembali ke pernyataan,
name = dataIn.readLine();
method diatas memanggil dataIn.readLine(), mendapatkan input dari
user dan memberikan sebuah nilai String. Nilai ini akan disimpan ke dalam
variabel name, yang
akan kita gunakan pada statement akhir untuk menyambut user,
System.out.println("Hello " + name + "!");
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 standard yang


memberikan kepada user sebuah nilai atau menginformasikan sesuatu.
Diberikan kode berikut ini,
import javax.swing.JOptionPane;
public class GetInputFromKeyboard
{
public static void main( String[] args )
{ String name = "";
name =
JoptionPane.showInputDialog("Please
enter your name");
String msg = "Hello " + name + "!";
JOptionPane.showMessageDialog(null, msg);
}
}
Akan menghasilkan output,

Gambar 1. Mendapatkan Input Menggunakan JOptionPane

Gambar 2. Input Florence pada JOptionPane

Gambar 3. Menunjukkan Pesan Menggunakan JOptionPane

Statement pertama,
import javax.swing.JOptionPane;
Menjelaskan bahwa kita mengimpor class JoptionPane dari package
javax.swing. Bisa juga ditulis seperti,
import javax.swing.*;
Pernyataan,
name = JOptionPane.showInputDialog("Please enter your
name");
membuat sebuah input dialog JOptionPane, yang akan menampilkan
dialog dengan sebuah pesan, sebuah textfield dan tombol OK seperti pada
gambar. Hasil dari dialog tersebut adalah String dan disimpan ke dalam
variabel name.
Sekarang kita membuat pesan selamat datang, yang akan disimpan ke
dalam variabe
msg,
String msg = "Hello " + name + "!";
Baris selanjutnya adalah menampilkan sebuah dialog yang berisi sebuah
pesan dan
tombol OK,
JOptionPane.showMessageDialog(null, msg);

B. Struktur Kontrol
a. Struktur Kontrol Pemilihan
Struktur kontrol pemilihan adalah pernyataan dari Java yang mengijinkan
user untuk memilih dan mengeksekusi blok kode spesifik dan
mengabaikan blok kode yang lain.
i. Statement if
Pernyataan if akan menentukan sebuah pernyataan (atau blok kode)
yang akan eksekusi jika dan hanya jika persyaratan bernilai
benar(true).
Bentuk dari pernyataan if,
if( boolean_expression )
statement;
atau
if( boolean_expression )
{ statement1;
statement2;
. . .
}
dimana, boolean_expression adalah sebuah penyataan logika
(true/false) atau variabel bertipe boolean.
Gambar 4. Flowchart Statement If
Berikut ini adalah potongan kode dari pernyataan if:
int grade = 68;
if( grade > 60 )
System.out.println("Congratulations!");
atau
int grade = 68;
if( grade > 60 ){
System.out.println("Congratulations!");
System.out.println("You passed!");
}
Petunjuk Penulisan Program :
1. Boolean_expression pada pernyataan if harus merupakan
nilai boolean.Hal ini berarti persyaratan harus bernilai true
atau false.
2. Masukkan statement di dalam blok if. Contohnya,
if( boolean_expression )
{ //statement1;
//statement2;
}
ii. Statement if-else
Pernyataan if-else digunakan apabila kita ingin mengeksekusi
beberapa pernyataan dengan kondisi true dan pernyataan yang lain
dengan kondisi false.
Bentuk statement if-else,
if( boolean_expression )
statement;
else
statement;
dapat juga ditulis seperti,
if( boolean_expression )
{ statement1;
statement2;
. . .
}
else{
statement1;
statement2;
. . .
}
Berikut ini contoh code statement if-else,
int grade = 68;
if( grade > 60 )
System.out.println("Congratulations!");
else System.out.println("Sorry you failed");
atau
int grade = 68;
if( grade > 60 ){
System.out.println("Congratulations!");
System.out.println("You passed!");
}
else{
System.out.println("Sorry you
failed"); }

Gambar 5. Flowchart Statement If-Else


Petunjuk Penulisan Program :
1. Untuk menghindari kebingungan, selalu letakkan
sebuah pernyataan atau beberapa pernyataan di dalam blok
if-else didalam tanda kurawal {},
2. Anda dapat memiliki blok if-else yang bersarang. Ini
berarti anda dapat memiliki blok if-else yang lain di dalam
blok if-else. Contohnya,
if( boolean_expression ){
if( boolean_expression )
{ . . .
}
}
else{
. . .
}
iii. 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.
Bentuk statement if-else if,
if( boolean_expression1 )
statement1;
else if( boolean_expression2 )
statement2;
else
statement3;
Sebagai catatan : anda dapat memiliki banyak blok else-if sesudah
pernyataan if. Blok else bersifat opsional dan dapat dihilangkan.
Pada contoh yang ditampilkan di atas, jika boolean_expression1
bernilai true, maka program akan mengeksekusi statement1 dan
melewati pernyataan yang lain. Jika boolean_expression2 bernilai
true, maka program akan mengeksekusi statement2 dan melewati
statement3.
Gambar 6. Flowchart Statement If-Else-If
Berikut ini contoh code statement if-else-if
int grade = 68;
if( grade > 90 ){
System.out.println("Very
good!"); }
else if( grade > 60 )
{ System.out.println("Very
good!");
}
else{
System.out.println("Sorry you
failed"); }
iv. Kesalahan umum ketika menggunakan statement if-else
1. Kondisi pada statement if tidak mengevaluasi nilai logika
boolean. Contohnya :
//SALAH
int number = 0;
if( number ){
//some statements
here }
Variabel number tidak memiliki nilai Boolean.
2. Menggunakan operator = sebagai operator perbandingan yang
seharusnya adalah operator == . Contohnya,
//SALAH
int number = 0;
if( number = 0 ){
//Beberapa pernyataan
}
Seharusnya kode tersebut ditulis,
//BENAR
int number = 0;
if( number == 0 ){
//beberapa
pernyataan }
3. Penulisan elseif yang seharusnya ditulis sebagai else if.
v. Contoh statement if-else-else 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.");
}
}
}
vi. Statement switch
Cara lain untuk membuat cabang adalah dengan menggunakan kata
kunci switch. Switch mengkonstruksikan cabang untuk beberapa
kondisi dari nilai.
Bentuk statement switch,
switch( switch_expression )
{ case case_selector1:
statement1; //
statement2; //block
1 . . . //
break;
case case_selector2:
statement1; //
statement2; //block
2 . . . //
break;
. . .
default:
statement1; //
statement2; //block
n . . . //
break;
}
switch_expression adalah ekspresi integer atau karakter dan
case_selector1, case_selector2 dan seterusnya adalah konstanta unik
dari nilai integer atau karakter.
Ketika pernyataan switch ditemukan pada potongan kode program,
java pertamakali akan memeriksa switch_expression, dan menuju ke
case yang akan menyamakan nilai yang dimiliki oleh
switch_expression. Selanjutnya program akan
mengeksekusi pernyataan pada dari kode setelah case yang
ditemukan sampai menemui pernyataan break, selanjutnya
akan mengabaikan pernyataan yang lainnya hingga akhir dari
struktur dari pernyataan switch.
Jika tidak ditemui case yang cocok, maka program akan
mengeksekusi blok default. Sebagai catatan, bahwa bagian blok
default adalah opsional. Sebuah pernyataan switch bisa jadi tidak
memiliki blok kode default.
CATATAN:
Tidak seperti pada pernyataan if, beberapa pernyataan
pada struktur pernyataan switch akan dieksekusi tanpa
memerlukan tanda kurung kurawal ({}).
Ketika sebuah case pada pernyataan switch menemui kecocokan,
semua pernyataan pada case tersebut akan dieksekusi. Tidak
hanya demikian, pernyataan lain yang berada pada case
yang sesuai juga akan dieksekusi.
Untuk menghindari program mengeksekusi pernyataan pada
case berikutnya, kita menggunakan pernyataan break
sebagai pernyataan akhir pada setiap blok case.

Gambar 7. Flowchart Statement Switch


Petunjuk Penulisan Program :
1. Menentukan penggunaan pernyataan if atau pernyataan switch
adalah sebuah keputusan programmer. Programmer dapat
menentukan pernyataan yang mana yang akan dipakai
berdasarkan kemudahan membaca program dan faktor-faktor
yang lain.
2. Pernyataan if dapat digunakan untuk membuat
keputusan berdasarkan rentang nilai tertentu atau
kondisi tertentu, sedangkan pernyataan switch membuat
keputusan hanya berdasarkan nilai unik dari tipe integer atau
karakter.
vii. Contoh Statement switch
public class Grade
{
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
harder!" );
break;
default:
System.out.println("Sorry,you
failed.");
}
}
}

b. 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. Ada tiga macam jenis dari
struktur kontrol pengulangan yaitu while, do-while, dan for-loops.
i. while loop
Pernyataan while loop adalah pernyataan atau blok pernyataan yang
diulang-ulang sampai mencapai kondisi yang cocok.
Bentuk pernyataan while,
while( boolean_expression )
{ statement1;
statement2;
. . .
}
Pernyataan di dalam while loop akan dieksekusi berulang-ulang
selama kondisi
boolean_expression bernilai benar (true).
Contoh, pada kode dibawah ini,
int i = 4;
while ( i > 0 )
{ System.out.print(i)
; i--;
}
Contoh diatas akan mencetak angka 4321 pada layar. Perlu dicatat
jika bagian i-
-; dihilangkan, akan menghasilkan pengulangan yang terus menerus
(infinite loop). Sehingga, ketika menggunakan while loop atau
bentuk pengulangan yang lain, pastikan Anda memberikan
pernyataan yang membuat pengulangan berhenti pada suatu kondisi.
Berikut ini adalah beberapa contoh while loop,
Contoh 1:
int x = 0;
while (x<10)
{
System.out.println(x);
x++;
}
Contoh 2:
//infinite loop
while(true)
System.out.println(hello);
Contoh 3:
//no loops
// statement is not even executed
while (false)
System.out.println(hello);
ii. do-while loop
Do-while loop mirip dengan while-loop. Pernyataan di dalam do-
while loop
akan dieksekusi beberapa kali selama kondisi bernilai benar(true).
Perbedaan antara while dan do-while loop adalah dimana pernyataan
di dalam do-while loop akan dieksekusi sedikitnya satu kali.
Bentuk pernyataan do-while,
do{
statement1;
statement2;
. . .
}while( boolean_expression );
Pernyataan di dalam do-while loop akan dieksekusi pertama kali, dan
akan dievaluasi kondisi dari boolean_expression. Jika nilai pada
boolean_expression tersebut bernilai true, pernyataan di dalam do-
while loop akan dieksekusi lagi.
Berikut ini beberapa contoh do-while loop:
Contoh 1:
int x = 0;
do
{
System.out.println(x);
x++;
}while (x<10);
Contoh ini akan memberikan output 0123456789 pada layar.
Contoh 2:
//infinite loop
do{
System.out.println(hello);
} while (true);
Contoh di atas akan melakukan pengulangan terus menerus yang
menulis kata hello pada layar.
Contoh 3:
//one loop
// statement is executed once
do
System.out.println(hello);
while (false);
Contoh di atas akan memberikan output hello pada layar.

Panduan pemrograman:
1. Kesalahan pemrograman yang biasa terjadi ketika menggunakan
do-while loop adalah lupa untuk menulis titik koma (;) setelah
ekspresi while.
do{ ..
.
}while(boolean_expression)// salah>tidak ada
titik koma(;)
2. Seperti pada while loop, pastikan do-while loop anda berhenti
pada suatu kondisi.
iii. for loop
Pernyataan for loop memiliki kondisi hampir mirip seperti struktur
pengulangan
sebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode
yang sama
sebanyak jumlah yang telah ditentukan.
Bentuk dari for loop,
for (InitializationExpression; LoopCondition;
StepExpression){
statement1;
statement2;
. . .
}
dimana,
InitializationExpression inisialisasi dari variabel loop.
LoopCondition - membandingkan variabel loop pada nilai
batas
tertentu
. StepExpression - melakukan update pada variabel loop.
Berikut ini adalah contoh dari for loop,
int i;
for( i = 0; i < 10; i++ )
{ System.out.print(i);
}
Pada contoh ini, pernyataan i=0 merupakan inisialisasi dari variabel.
Selanjutnya, kondisi i<10 diperiksa. Jika kondisi bernilai true,
pernyataan di dalam for loop dieksekusi. Kemudian, ekspresi i++
dieksekusi, lalu akan kembali pada bagian pemeriksaan terhadap
kondisi i<10 lagi. Kondisi ini akan dilakukan berulang-ulang sampai
mencapai nilai yang salah (false).
Contoh tadi, adalah contoh yang sama dari while loop,
int i = 0;
while( i < 10 ){
System.out.print(i);
i++;
}

c. Pernyataan Percabangan
Pernyataan percabangan mengijinkan kita untuk mengatur aliran eksekusi
program. Java memberikan tiga bentuk pernyataan percabangan: break,
continue dan return.
i. Pernyataan Break
Pernyataan break memiliki dua bentuk: tidak berlabel (unlabeled)
dan berlabel (labeled).
1. Pernyataan break tidak berlabel (unlabeled)
Pernyataan break tidak berlabel (unlabeled) digunakan untuk
menghentikan jalannya pernyataan switch. Selain itu pernyataan
break unlabeled juga bisa digunakan untuk menghentikan
pernyataan-pernyataan for, while atau do-while loop.
Contohnya,
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." );
}
Pada contoh diatas, jika string Yza ditemukan, pengulangan
pada for loop akan dihentikan dan akan dilanjutkan ke
pernyataan berikutnya yang terletak setelah pernyataan for.
2. Pernyataan break berlabel (labeled)
Bentuk label dari pernyataan break akan menghentikan
pernyataan di luarnya, dimana sebelumnya harus diberikan label
yang sudah di spesifikasikan pada program pada pernyataan
break. Program berikut ini akan mencari nilai dalam array dua
dimensi. Terdapat dua pengulangan bersarang (nested loop).
Ketika sebuah nilai ditemukan, brea akan menghentikan
pernyataan yang diberi label searchLabel yang terletak di
luar pernyataan for loop.
int[][] numbers = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int searchNum = 5;
boolean foundNum = false;
searchLabel:
for( int i=0; i<numbers.length; i++ ){
for( int j=0; j<numbers[i].length; j++ )
{ if( searchNum == numbers[i][j] ){
foundNum = true;
break searchLabel;
}
}
}
if( foundNum ){
System.out.println( searchNum + "
found!" );
}
else{
System.out.println( searchNum + " not
found!" );
}
Pernyataan break menghentikan pernyataan yang diberi label;
dan tidak menjalankan aliran kontrol apapun pada label. Aliran
kontrol pada label akan diberikan secara otomatis pada
pernyataan yang terletak dibawah label.
ii. Pernyataan Continue
Pernyataan continue memiliki dua bentuk: berlabel dan tidak
berlabel. Anda dapat menggunakan pernyataan continue untuk
melanjutkan pengulangan yang sedang dijalankan oleh pernyataan
for, while, atau do- while loop.
1. Pernyataan continue tidak berlabel (unlabeled)
setelah pernyataan ini dituliskan dan memeriksa eksepresi logika
(boolean) yang mengkontrol pengulangan. Jika ekspresi logika
(boolean) masih bernilai true, maka pengulangan tetap
dilanjutkan. Pada dasarnya pernyataan ini akan melanjutkan
bagian pengulangan pada pernyataan loop.
Berikut ini adalah contoh dari penghitungan angka dari Beah
dalam suatu array.
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");
2. Pernyataan continue berlabel
Bentuk pernyataan continue berlabel (labeled) akan melanjutkan
pengulangan yang sedang terjadi dan dilanjuti ke pengulangan
berikutnya dari pernyataan pengulangan yang diberi label
(tanda).
outerLoop:
for( int i=0; i<5; i++ ){
for( int j=0; j<5; j++ )
{ System.out.println("Inside for(j)
loop"); //message1
if( j == 2 ) continue
outerLoop; }
System.out.println("Inside for(i)
loop"); //message2
}
Pada contoh ini, bagian message2 tidak pernah akan dicetak,
karena pernyataan continue akan melewati pengulangan.
iii. Pernyataan Return
Pernyataan return digunakan untuk keluar dari sebuah method.
Pernyataan return memiliki dua bentuk: memberikan sebuah nilai,
dan tidak memberikan nilai.
Untuk memberikan sebuah nilai, cukup berikan nilai (atau ekspresi
yang menghasilkan sebuah nilai) sesudah kata return. Contohnya,
return ++count;

atau
return "Hello";
Tipe data dari nilai yang diberikan harus sama dengan tipe dari
method yang dibuat. Ketika sebuah method void dideklariskan,
gunakan bentuk return yang tidak memberikan nilai. Contohnya,
return;
Kita akan membahas lebih lanjut tentang pernyataan return ketika
mempelajari tentang method.
LKS SMK 1 LP2 Proses : Penerapan Fungsi Kontrol Pemilihan

Rangkuman materi :
Struktur kontrol pemilihan terdiri dari :
a. If
b. If-else
c. If-else-if
d. If-else-else if
e. Switch

Tujuan : menerapkan fungsi yang tepat untuk baris program yang hilang sesuai
output yang dikehendaki

Langkah-langkah :
1. Bersama kelompokmu identifikasi baris program yang hilang pada
program
2. Diskusikan untuk mengisi baris program yang hilang tersebut dengan baris
program yang tepat agar sesuai dengan output yang dikehendaki.

Program 1, convert nilai ke dalam format teks untuk mengetahui derajat


kelulusan menggunakan if-else:

Gunakan fungsi if-else


di sini !
Output :
Jika grade >= 90 maka output tulisan : Exellent!
Jika grade < 90 dan grade>=80 maka output tulisan : Good Job!
Jika grade < 80 dan grade>=60 maka output tulisan : Study Harder!
Selain yang disebutkan di atas, output tulisan Sorry, you failed
Program 2 convert nilai ke dalam format teks untuk mengetahui derajat
kelulusan menggunakan switch:

Gunakan fungsi switch di sini !

Output
Jika grade = 100, output = Exellent!
Jika grade = 90, output = Good job!
Jika grade = 80, output = Study harder!
Selain itu, output = Sorry, you failed.
Format Asesmen Kinerja Proses
No. Rincian Tugas Kinerja Skor Maksimum Skor Asesmen
Oleh siswa Oleh
sendiri guru
1. Merancang fungsi yang sesuai 100
dengan output program
Skor Total 100
Kunci LKS SMK 1 LP2 Proses : Penerapan Fungsi Kontrol Pemilihan

Program 1, convert nilai ke dalam format teks untuk mengetahui derajat kelulusan
menggunakan if-else:

Program 2 convert nilai ke dalam format teks untuk mengetahui derajat kelulusan
menggunakan switch:
LKS SMK 2 LP2 Proses : Penerapan Fungsi Kontrol Perulangan

Rangkuman materi :
Struktur kontrol perulangan terdiri dari :
a. While
b. Do-while
c. for

Tujuan : menerapkan fungsi yang tepat untuk baris program yang hilang sesuai
output yang dikehendaki

Langkah-langkah :
1. Bersama kelompokmu identifikasi baris program yang hilang pada
program
2. Diskusikan untuk mengisi baris program yang hilang tersebut dengan baris
program yang tepat agar sesuai dengan output yang dikehendaki.

Program 1, mencari nama dari daftar nama yang ada :

Gunakan fungsi for


dan if di sini !

Output :
Dilakukan perulangan pada names[] untuk mencari nama Yza. Program
berjalan dengan baik bila nama ditemukan, dan output yang muncul Yza
found!.
Program 2 convert nilai ke dalam format teks untuk mengetahui derajat
kelulusan menggunakan switch:

Gunakan fungsi for di sini !

Output
Output yang dihasilkan adalah :
Format Asesmen Kinerja Proses
No. Rincian Tugas Kinerja Skor Maksimum Skor Asesmen
Oleh siswa sendiri Oleh guru
1. Merancang fungsi yang sesuai dengan 100
output program
Skor Total 100
Kunci LKS SMK 2 LP2 Proses : Penerapan Fungsi Kontrol Perulangan

Program 1, mencari nama dari daftar nama yang ada :

Program 2 convert nilai ke dalam format teks untuk mengetahui derajat


kelulusan menggunakan switch:
LP 1A : PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar


1. Apakah fungsi dari struktur kontrol pemilihan pada pernyataan dari
JAVA? (skor maksimal 10)
2. Buatlah struktur kontrol if dalam bentuk flowchart mulai dari start sampai
end. (skor maksimal 15)
3. Tuliskan bentuk statement di dalam blok if (gunakan 3 statement). (skor
maksimal 10)
4. Kapan statement if digunakan dan kapan statement if-else digunakan ?
(skor maksimal 10)
5. Buatlah struktur kontrol if-else dalam bentuk flowchart mulai dari start
sampai end. (skor maksimal 15)
6. Buatlah struktur kontrol if-else if dalam bentuk flowchart mulai dari start
sampai end. (skor maksimal 15)
7. Diberikan contoh statement if-else-else if sebagai berikut :
1 public class Grade

2 {

3 public static void main( String[] args )

4 {

5 double grade = 92.0;

6 if( grade >= 90 ){

7 System.out.println( "Excellent!" );

8 }

9 else if( (grade < 90) && (grade >= 80)){

10 System.out.println("Good job!" );

11 }

12 else if( (grade < 80) && (grade >= 60)){


13 System.out.println("Study harder!" );

14 }

15 else{

16 System.out.println("Sorry, you failed.");

17 }

18 }

19 }

Jika grade = 80, output apa yang akan keluar?


Jelaskan fungsi if pada baris berapa yang terpilih untuk mengeksekusi
grade = 80 (skor maksimal 10)

8. Buatlah struktur kontrol switch dalam bentuk flowchart mulai dari start
sampai end. (skor maksimal 15)
KUNCI LP 1A PRODUK

1. Fungsi dari struktur kontrol pemilihan pada pernyataan dari JAVA adalah
untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan
blok kode yang lain.

2. struktur kontrol if dalam bentuk flowchart mulai dari start sampai end.

3. Tuliskan bentuk statement di dalam blok if (gunakan 3 statement).


if( boolean_expression )
{ statement1;
statement2;
statement3;
}

4. Statement if digunakan ketika ingin mengeksekusi kode jika dan hanya


jika persyaratan bernilai benar (true).
statement if-else digunakan ketika ingin mengeksekusi beberapa
pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi
false.

5. Struktur kontrol if-else dalam bentuk flowchart mulai dari start sampai
end.
6. Struktur kontrol if-else if dalam bentuk flowchart mulai dari start sampai
end.

7. Output yang akan keluar : Good job !


Pada baris 6, fungsi if dengan grade>=90 tidak terpenuhi, maka program
menjalankan statement false. Pada baris 9 dilakukan pemilihan jika grade
> 90 atau grade >= 80. Karena grade = 80, maka yang statement true /
baris 10 yang dieksekusi.

8. Struktur kontrol switch dalam bentuk flowchart mulai dari start sampai
end.
Format Asesmen Kinerja Produk 1A

No. Rincian produk yang diamati Skor Maksimal Skor Asesmen

1. Fungsi struktur pemilihan


10
2. Flowchart struktur if
15
3. Bentuk statement if
10
4. Menjelaskan perbedaan penggunaan if dan if-else
10
5. Flowchart struktur if-else
15
6. Flowchart struktur if-else if 15
7. Mengidentifikasi baris program
10
8. Flowchart struktur switch
15
Jumlah skor 100
KRITERIA PENILAIAN KINERJA PRODUK 1A

Kriteria
No. Rincian produk yang diamati

1. Fungsi struktur pemilihan 10 = menjawab dengan penjelasan benar


8 = menjawab dengan penjelasan hampir benar
5 = menjawab dengan penjelasan kurang benar
2. Flowchart struktur if 15 = menggambar flowchart disertai dengan
keterangan masing-masing komponen benar
10 = menggambar flowchart dengan benar tetapi ada
keterangan komponen yang belum tepat
5 = ada komponen flowchart yang hilang
3. Bentuk statement if 10 = bentuk statement benar
5 = bentuk statement salah
4. Menjelaskan perbedaan 10 = penjelasan benar
penggunaan if dan if-else 8 = penjelasan mendekati benar
5 = penjelasan belum tepat
5. Flowchart struktur if-else 15 = menggambar flowchart disertai dengan
keterangan masing-masing komponen benar
10 = menggambar flowchart dengan benar tetapi ada
keterangan komponen yang belum tepat
5 = ada komponen flowchart yang hilang
6. Flowchart struktur if-else if 15 = menggambar flowchart disertai dengan
keterangan masing-masing komponen benar
10 = menggambar flowchart dengan benar tetapi ada
keterangan komponen yang belum tepat
5 = ada komponen flowchart yang hilang
7. Mengidentifikasi baris program 10 = output benar, disertai penjelasan yang benar
8 = output benar, tetapi penjelasan ada yang kurang
5 = output benar, tetapi tanpa penjelasan atau
penjelasan salah
0 = output salah
8. Flowchart struktur switch 15 = menggambar flowchart disertai dengan
keterangan masing-masing komponen benar
10 = menggambar flowchart dengan benar tetapi ada
keterangan komponen yang belum tepat
5 = ada komponen flowchart yang hilang
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 1B : PRODUK
Nama : __________________ Kelas :
________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar


1. Apakah yang dimaksud struktur kontrol perulangan pada pemrograman
JAVA? (skor maksimal 25)

2. Jelaskan pengertian pernyataan while loop. (skor maksimal 20)

3. Apa perbedaan while loop dengan do-while loop? (skor maksimal 25)

4. Pada for loop, bentuk statementnya adalah sebagai berikut :

for (InitializationExpression; LoopCondition;


StepExpression){
statement1;
statement2;
. . .
}

Jelaskan pengertian dari : InitializationExpression, LoopCondition, dan


StepExpression. (skor maksimal 30)
KUNCI LP 1B PRODUK

Kerjakan secara individu tanpa membuka bahan ajar


1. Struktur kontrol perulangan pada pemrograman JAVA adalah pernyataan
dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-
ulang sesuai dengan jumlah tertentu yang diinginkan.

2. Pengertian pernyataan while loop : pernyataan atau blok pernyataan yang


diulang-ulang sampai mencapai kondisi yang cocok.

3. Perbedaan while loop dengan do-while loop : pernyataan di dalam do-


while loop akan dieksekusi minimal satu kali, karena perulangan ini akan
melakukan (do) statement terlebih dahulu, kemudian mengecek
boolean_expr. Pada while loop ada kemungkinan tidak dieksekusi sama
sekali jika kondisi tidak memenuhi boolean_expr.

4. InitializationExpression inisialisasi dari variabel loop.


LoopCondition membandingkan variabel loop pada nilai batas
tertentu StepExpression melakukan update pada variabel loop.
Format Asesmen Kinerja Produk 1b

No. Rincian produk yang diamati Skor Maksimal Skor Asesmen

1. Pengertian struktur kontrol perulangan


25
2. Pengertian while loop
20
3. Perbedaan do-while loop dengan while loop
25
4. Pengertian pada for loop
30
Jumlah skor 100
KRITERIA PENILAIAN KINERJA PRODUK 1B

Kriteria
No. Rincian produk yang diamati

1. Pengertian struktur kontrol 25 = menjelaskan struktur kontrol dengan benar


perulangan 15 = ada beberapa bagian penjelasan yang belum
tepat
5 = penjelasan salah
2. Pengertian while loop 20 = menjelaskan pengertian while loop dengan benar
10 = ada beberapa bagian penjelasan yang kurang
tepat
5 = penjelasan salah
3. Perbedaan do-while loop 25 = menjelaskan perbedaan dengan benar
dengan while loop 15 = ada beberapa bagian penjelasan yang kurang
tepat
5 = penjelasan salah
4. Pengertian pada for loop 30 = semua penjelasan benar
20 = terdapat satu penjelasan yang salah atau kurang
tepat
10 = terdapat satu penjelasan yang salah atau kurang
tepat
5 = penjelasan salah
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 2A : PROSES
Nama : __________________ Kelas : ________
No. Absen : __________________ Tanggal : ________

Prosedur :
1. Kondisikan siswa membentuk kelompok kerja dengan 1 komputer untuk
masing-masing kelompok
2. Siapkan LKS SMK 1 : LP2 Proses Penerapan fungsi Kontrol Pemilihan
3. Berikan tugas kepada siswa untuk merancang fungsi sesuai dengan output
program pada LKS.
4. Penentuan skor kinerja siswa mengacu pada kunci LKS SMK 1 : LP2
Proses Penerapan fungsi dan format asesmen kinerja di bawah ini.
5. Berikan siswa kesempatan untuk mempelajari format asesmen ini sebelum
asesmen dilakukan.
6. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.

Format Asesmen Kinerja Proses


No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
sendiri
1. Merancang fungsi yang sesuai dengan 50
output program pada program 1
2. Merancang fungsi yang sesuai dengan 50
output program pada program 2
Skor Total 100
KRITERIA PENILAIAN 2A KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 1 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP
2. Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 2 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP
LP 2B : PROSES

Nama : __________________ Kelas : ________


No. Absen : __________________ Tanggal : ________

Prosedur :
1. Kondisikan siswa membentuk kelompok kerja dengan 1 komputer untuk
masing-masing kelompok
2. Siapkan LKS SMK 2 : LP2 Proses Penerapan fungsi Kontrol Perulangan
3. Berikan tugas kepada siswa untuk merancang fungsi sesuai dengan output
program pada LKS.
4. Penentuan skor kinerja siswa mengacu pada kunci LKS SMK 1 : LP2
Proses Penerapan fungsi dan format asesmen kinerja di bawah ini.
5. Berikan siswa kesempatan untuk mempelajari format asesmen ini sebelum
asesmen dilakukan.
6. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.

Format Asesmen Kinerja Proses


No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
sendiri
1. Merancang fungsi yang sesuai dengan output 50
program pada program 1
2. Merancang fungsi yang sesuai dengan output 50
program pada program 2
Skor Total 100
KRITERIA PENILAIAN 2B KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 1 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP
Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 2 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 3A : PSIKOMOTOR
Nama : __________________ Kelas : ________
No. Absen : __________________ Tanggal : ________

Prosedur :
1. Disiapkan sebuah komputer dan software netbeans untuk masing-masing
kelompok
2. Tugasi siswa untuk mengimplementasikan hasil diskusi kelompok pada LKS 1
SMK : LP2 Proses Penerapan Fungsi Kontrol Pemilihan pada software
netbeans
3. Amati siswa dalam mengerjakan tugas tersebut
4. Berikan skor kinerja kelompok dengan mengacu pada format asesment kinerja
di bawah ini.
5. Berikan format ini kepada siswa sebelum asesmen dilakukan
6. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.

Format Asesmen Kinerja Proses


No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
1. Membuka software netbeans 10
2. Mengetikkan baris program 1 15
3. Menjalankan program 1 15
4. Menghasilkan output yang sesuai dengan yang 15
ditugaskan
5. Mengetikkan baris program 1 15
6. Menjalankan program 1 15
7. Menghasilkan output yang sesuai dengan yang 15
ditugaskan
Skor Total 100
KRITERIA PENILAIAN 3A KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Membuka software netbeans 10 = dapat membuka software netbeans dengan baik


dan menjalankannya
5 = kelompok perlu bantuan dalam membuka software
dengan baik dan menjalankannya
2. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
3. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
4. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 1 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Pemilihan
5 = output tidak sesuai dengan LKS 1 SMK : LP 2
Penerapan Fungsi Kontrol Pemilihan
5. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
6. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
7. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 1 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Pemilihan
5 = output tidak sesuai dengan LKS 1 SMK : LP 2
Penerapan Fungsi Kontrol Pemilihan

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 3B : Psikomotor
Nama : __________________ Kelas : ________
No. Absen : __________________ Tanggal : ________

Prosedur :
1. Disiapkan sebuah komputer dan software netbeans untuk masing-masing
kelompok
2. Tugasi siswa untuk mengimplementasikan hasil diskusi kelompok pada LKS 2
SMK : LP2 Proses Penerapan Fungsi Kontrol Perulangan pada software
netbeans
3. Amati siswa dalam mengerjakan tugas tersebut
4. Berikan skor kinerja kelompok dengan mengacu pada format asesment kinerja
di bawah ini.
5. Berikan format ini kepada siswa sebelum asesmen dilakukan
6. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.

Format Asesmen Kinerja Proses


No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh siswa Oleh guru
1. Membuka software netbeans 10
2. Mengetikkan baris program 1 15
3. Menjalankan program 1 15
4. Menghasilkan output yang sesuai 15
dengan yang ditugaskan
5. Mengetikkan baris program 1 15
6. Menjalankan program 1 15
7. Menghasilkan output yang sesuai 15
dengan yang ditugaskan
Skor Total 100
KRITERIA PENILAIAN 3B KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Membuka software netbeans 10 = dapat membuka software netbeans dengan baik


dan menjalankannya
5 = kelompok perlu bantuan dalam membuka software
dengan baik dan menjalankannya
2. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
3. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
4. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 2 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Perulangan
5 = output tidak sesuai dengan LKS 2 SMK : LP 2
Penerapan Fungsi Kontrol Perulangan
5. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
6. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
7. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 1 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Pemilihan
5 = output tidak sesuai dengan LKS 1 SMK : LP 2
Penerapan Fungsi Kontrol Pemilihan

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor asesmen

LP 4 : FORMAT PENGAMATAN PERILAKU BERKARAKTER


Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Perilaku Berkarakter


Rincian Tugas Kerja
No (D) (C) (B) (A)
(RTK)
1. Jujur
2. Tanggung jawab
3. Kerjasama
4. Disiplin
KRITERIA PENILAIAN PERILAKU BERKARAKTER

No Rincian Tugas Kinerja yang Diamati Rubrik


A: sangat jujur
B: jujur
1. Jujur
C: cukup jujur
D: kurang jujur
A: sangat bertanggung jawab
B: bertanggung jawab
2. Tanggung jawab
C: cukup bertanggung jawab
D: kurang bertanggung jawab
A: sangat antusias bekerjasama
B: bekerjasama
3. Kerjasama
C: cukup bekerjasama
D: kurang bekerjasama
A: sangat disiplin
B: disiplin
4. Disiplin
C: cukup disiplin
D: kurang disiplin
LP 5 : FORMAT PENGAMATAN KETERAMPILAN SOSIAL

Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Keterampilan Sosial


No Rincian Tugas Kerja (RTK) (D) (C) (B) (A)
1. Bertanya
3. Menyumbang ide atau
berpendapat
KRITERIA PENILAIAN KETERAMPILAN SOSIAL

No Rincian Tugas Kinerja yang diamati Rubrik


A: selalu bertanya
Bertanya B: sering bertanya
1.
C: jarang bertanya
D: tidak pernah bertanya
A: sangat sering berpendapat
Menyumbang ide atau berpendapat B: sering berpendapat
2.
C: cukup sering berpendapat
D: kadang berpendapat

Gending, 27 Juli 2015


Mengetahui,
Kepala SMK Negeri I Gending Guru Mata Pelajaran

Drs. H. SAHUDI DITA AGUSTIN DAMAYANTI, S.ST


NIP. 19670809 199802 1 004
RENCANA PELAKSANAAN PEMBELAJARAN (RPP)

Nama Sekolah : SMK Negeri 1 Gending


Mata Pelajaran : Menggunakan Bahasa Pemrograman Berorientasi Objek
Kelas : XII (Dua Belas)
Semester : 5 (Lima)
Jumlah Pertemuan : 4 Pertemuan

A. Standar Kompetensi :
Merancang aplikasi teks dan desktop berbasis obyek

B. Kompetensi Dasar :
Menerapkan Pointer

C. Indikator :
1. Kognitif
a. Produk
1) Menjelaskan cara membuat dan menerapkan array
2) Menjelaskan array dinamis
3) Menjelaskan array multidimensi
b. Proses
Merancang pemrograman dengan menggunakan array
c. Psikomotor
Membuat pemrograman dengan array
2. Afektif
a. Mengembangkan perilaku berkarakter, meliputi :
1) Jujur
2) Tanggung jawab
3) Kerjasama
4) Disiplin
b. Mengembangkan keterampilan sosial, meliputi :
1) Bertanya
2) Menyumbang ide atau berpendapat
D. Tujuan Pembelajaran
1. Kognitif
a. Produk
1) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menjelaskan cara membuat dan menerapkan array pada
pemrograman JAVA sesuai deskripsi yang tercantum pada kunci
LP1 produk
2) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menjelaskan mengenai array dinamis pada pemrograman JAVA
sesuai deskripsi yang tercantum pada kunci LP1 produk.\
3) Secara mandiri dan tanpa membuka bahan ajar siswa dapat
menjelaskan mengenai array multidimensi pada pemrograman
JAVA sesuai deskripsi yang tercantum pada kunci LP1 produk.
b. Proses
1) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
individual mampu untuk merancang algoritma fungsi untuk
pemrograman menggunakan array sesuai dengan program yang
sudah diberikan menggunakan bahasa pemrograman JAVA
berdasarkan format LP2 Proses sesuai kunci LP2 Proses.
c. Psikomotor
1) Diberikan program/aplikasi java yang sudah jadi. Siswa secara
individual mampu untuk membuat program dengan menerapkan
array untuk menghasilkan program yang sesuai dengan apa yang
telah diberikan menggunakan bahasa pemrograman JAVA dan
menggunakan inputan dari keyboard berdasarkan format LP3
Psikomotor sesuai kunci LP3 Psikomotor.
2. Afektif
a. Karakter
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai pengamat membuat kemajuan dalam menunjukkan
perilaku berkarakter dengan LP3 Format Pengamatan Perilaku
Berkarakter, meliputi :
1) Jujur : siswa secara jujur mampu mengerjakan tugas-tugas tentang
penerapan fungsi pada pemrograman JAVA
2) Tanggung jawab : siswa bertanggung jawab terhadap dirinya
sendiri untuk memahami pelajaran tentang penerapan pointer pada
pemrograman JAVA.
3) Kerjasama : siswa memiliki kemampuan bekerjasama yang baik
antara satu sama lain, karena pembelajaran penerapan pointer pada
pemrograman JAVA dilaksanakan secara berkelompok
menggunakan model pembelajaran kooperatif.
4) Disiplin : siswa disiplin dalam pengumpulan tugas dengan tepat
waktu dan kehadiran di kelas.
b. Perilaku Sosial
Terlibat dalam proses belajar mengajar berpusat pada siswa, paling
tidak siswa dinilai membuat kemajuan dalam menunjukkan perilaku
berkarakter dengan LP4 Format Pengamatan Keterampilan Sosial,
meliputi :
1) Bertanya : siswa aktif bertanya ketika penjelasan guru dirasa
kurang memberi pemahaman pada dirinya.
2) Menyumbang ide atau berpendapat : siswa aktif menyumbangkan
ide atau berpendapat dalam kegiatan berkelompok untuk
menyelesaikan masalah yang muncul pada saat pengerjaan tugas.

E. Materi Pembelajaran
1. Membuat dan menerapkan array
2. Pemrograman dengan array
3. Array dinamis
4. Array multidimensi

F. Alokasi Waktu : 8 x 45 menit (dua pertemuan)


G. Metode Pembelajaran
1. Model Pembelajaran : Model Pembelajaran Kooperatif(MPK)
2. Metode Pembelajaran : Penjelasan singkat dan STAD (Student
Teams- Achievement Divisions)

H. Proses Belajar Mengajar


Tabel Proses Belajar Mengajar Pertemuan I : Kognitif
Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memotivasi siswa dengan memberi penjelasan kepada
peserta didik tentang penggunaan array dan apa saja
yang bisa dibuat dengan menggunakan array
pada pemrograman JAVA
dengan mendemonstrasikan aplikasi yang
di dalamnya terdapat unsur array. (Fase 1 MPK)
2. Menyampaikan inti tujuan pembelajaran produk, proses,
psikomotor, perilaku berkarakter dan keterampilan
sosial untuk pelajaran penerapan pointer
Inti ( pada
130 menit)
3. Mempresentasikan bahan ajar berupa ringkasan modul di
muka kelas menggunakan pengajaran langsung dan
diselingi dengan diskusi-ceramah dan harus jelas-jelas
memfokuskan pada unit STAD. (Fase 2 MPK)
4. Memberi waktu kepada siswa untuk mempelajari konsep
array pada pemrograman JAVA menggunakan modul atau
bahan ajar yang telah disediakan. (Fase 2 MPK)
5. Membentuk kelompok siswa terdiri dari maksimal lima
siswa yang mewakili heteroginitas kelas. Kelompok
siswa tersebut kemudian mendiskusikan materi
menggunakan modul. Jika ada yang belum dimengerti
siswa didorong untuk aktif bertanya. (Fase 3 MPK)
6. Menugaskan siswa untuk mengerjakan LP1 Produk secara
individual. Siswa didorong untuk jujur dan
bertanggung jawab dalam mengerjakan Penutup tugas LP 1
( 35 menit)
7. Menutup pertemuan dengan menegaskan kepada
siswa untuk bersungguh-sungguh memahami materi
yang diberikan secara individu karena pada pertemuan
selanjutnya akan diadakan kuis. Dimana nilai masing-
masing individu akan diakumulasikan untuk menjadi nilai
kelompok.

Tabel Proses Belajar Mengajar Pertemuan II : Afektif dan Psikomotor


Penilaian
Kegiatan
1 2 3 4
Pendahuluan ( 15 menit)
1. Memberikan apersepsi terkait pertemuan
sebelumnyayakni membahas mengenai array
(Fase 1 MPK)
2. Menjelaskan kepada siswa inti tujuan pembelajaran hari
ini yakni merancang dan membuat program dengan
menggunakan array. (Fase 1 MPK)
3. Menjelaskan kepada siswa kegiatan apa saja yang akan
penilaian kelompok kooperatif. (Fase 1 MPK)
Inti ( 130 menit)
7. Mengorganisasikan siswa untuk berkelompok seperti
pertemuan sebelumnya.
8. Menugaskan siswa untuk mempelajari LKS dan
menjawab pertanyaan yang ada di LKS secara
individual (Fase 3 MPK)
9. Mengarahkan siswa agar setelah selesai langkah no 2,
siswa dapat mengakses kunci jawaban LKS secara
berkelompok untuk pedoman mendiskusikan masalah
bersama dan membandingkan jawaban. Tim yang baik akan
berorientasi pada membetulkan setiap kekeliruan dan
miskonsepsi apabila teman sesama tim membuat kesalahan
(Fase 4 MPK)
10. Pelaksanaan kuis individual menggunakan LP2 Proses
untuk perancangan program menggunakan array. Hal ini
untuk menjamin agar siswa secara individual bertanggung
jawab untuk memahami bahan ajar tersebut (Fase 5 MPK)
11. Setiap siswa menyumbang poin kepada kelompoknya
dalam sistem penskoran. (Fase 5 MPK)
12. Mengakumulasikan poin masing-masing kelompok pada
Penutup ( 35 menit)
13. Menutup pelajaran dengan memberikan penghargaan
kepada individu dan kelompok yang telah bekerjasama
dengan baik dan memiliki hasil yang sangat memuaskan.
Penghargaan diberikan berdasarkan grade hasil akhir
penilaian (Superior, Super, Amazing, Wonderful) (Fase 6
MPK)

I. Penilaian Hasil Belajar


1. LP 1 : Produk dilengkapi kunci LP1
2. LP 2 : Proses dilengkapi kunci LP2
3. LP 3 : Psikomotor
4. LP 4 : Format pengamatan perilaku berkarakter
5. LP 5 : Format Pengamatan Keterampilan Sosial
6. Tabel spesifikasi lembar penilaian

J. Sumber Pembelajaran
1. LKS SMK 1 LP 2 Proses : Penerapan Fungsi Kontrol Pemilihan
2. LKS SMK 2 LP 2 Proses : Penerapan Fungsi Kontrol Perulangan
3. JENI (JAVA Education Network Indonesia)
4. Tabel spesifikasi lembar penilaian
5. Silabus
MODUL SMK
PENERAPAN POINTER
MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

Mata Pelajaran : Merancang Aplikasi Teks Dan Desktop Berbasis


Kelas : Obyek
Standar kompetensi : XI (Sebelas) Rekayasa Perangkat Lunak
Kompetensi Dasar : Merancang Aplikasi Teks Dan Desktop Berbasis
Obyek
Menerapkan Pointer
Tujuan Pembelajaran : 1. Siswa mampu menjelaskan cara membuat dan
menerapkan array
2. Siswa mampu menjelaskan array dinamis
3. Siswa mampu menjelaskan array multidimensi
4. Siswa mampu merancang pemrograman dengan
menggunakan array
5. Siswa mampu membuat pemrograman dengan
array

A. Membuat dan Menggunakan Array

Jika sekumpulan data digabungkan dalam satu unit, hasilnya adalah suatu
struktur data. Data struktur dapat berupa struktur yang sangat kompleks, akan
tetapi dalam banyak aplikasi, data struktur yang cocok hanya terdiri dari
kumpulan data berurutan. Struktur data sederhana seperti ini bisa berupa array
atau record.

Istilah "record" sebetulnya tidak digunakan pada Java. Suatu record pada
intinya mirip dengan objek pada Java yang hanya memiliki variabel instansi
tanpa metode instansi. Beberapa bahasa pemrograman lain yang tidak
mendukung objek biasanya mendukung record. Dalam bahasa C yang bukan
bahasa berorientasi objek, misalnya, memiliki tipe data record, dimana pada C
disebut "struct". Data pada record -- dalam Java, adalah variabel instansi suatu
objek -- disebut field suatu record. Masing-masing item disebut nama field.
Dalam Java, nama field adalah nama variabel instansi. Perbedaan sifat dari
suatu record adalah bahwa item pada record dipanggil berdasarkan namanya,
dan field yang berbeda dapat berupa tipe yang berbeda. Misalnya, kelas Orang
didefisikan sebagai :

class Orang
{ String
nama; int
nomorID;
Date tanggalLahir;
int umur;
}

maka objek dari kelas Orang bisa disebut juga sebagai record dengan 4 field.
Nama fieldnya adalah nama, nomorID, tanggalLahir dan umur. Lihat bahwa
tipe datanya berbeda-beda yaitu String, int, dan Date.

Karena record hanya merupakan bagian lebih kecil dari objek, kita tidak akan
bahas lebih lanjut di sini.

Seperti record, suatu array adalah kumpulan item. Akan tetapi, item pada
record dipanggil dengan nama, sedangkan item pada array dinomori, dan
masing-masing item dipanggil besarkan nomor posisi pada array tersebut.
Semua item pada array harus bertipe sama. Definisi suatu array adalah :
kumpulan item bernomor yang semuanya bertipe sama. Jumlah item dalam
suatu array disebut panjang array. Nomor posisi dari array disebut indeks item
tersebut dalam array. Tipe dari item tersebut disebut tipe dasar dari array.

Tipe dasar suatu array bisa berupa tipe Java apa saja, baik berupa tipe primitif,
nama kelas, atau nama interface. Jika tipe dasar suatu array adalah int, maka
array tersebut disebut "array int". Suatu array bertipe String disebut "array
String". Akan tetapi array bukan urutan int atau urutan String atau urutan nilai
bertipe apapun. Lebih baik jika array adalah urutan variabel bertipe int atau
String atau tipe lainnya.

Seperti biasa, ada dua kemungkinan kegunaan variabel : sebagai nama suatu
lokasi di memori, dan nama suatu nilai yang disimpan pada lokasi memori.
Setiap posisi pada array bersifat seperti variabel. Setiap posisi dapat
menyimpan nilai dengan tipe tertentu (yaitu tipe dasar array). Isinya
bisa
diganti kapanpun. Nilai tersebut disimpan di dalam array. Array merupakan
kontainer bukan kumpulan nilai.

Item pada array (maksudnya setiap anggota variabel dalam array tersebut)
sering juga disebut elemen array. Dalam Java, elemen array selalu dinomori
mulai dari nol. Yaitu, indeks dari elemen pertama suatu array adalah nol. Jika
panjang array adalah N, maka indeks elemen terakhir adalah N-1. Sekali array
dibuat, maka panjangnya tidak bisa diubah lagi.

Dalam Java, array adalah objek. Ada beberapa konsekuensi yang lahir dari
fakta ini. Array harus dibuat dengan operator new. Variabel tidak bisa
menyimpan array; variabel hanya bisa merujuk pada array. Variabel lain yang
bisa merujuk array juga bisa bernilai null yang berarti ia tidak merujuk pada
lokasi memori apapun. Seperti objek lain, array juga bagian dari suatu kelas,
di mana seperti kelas lain adalah kelas turunan dari kelas Object. Elemen array
pada dasarnya adalah variabel instansi dalam objek array, kecuali mereka
dipanggil dalam indeksnya bukan namanya.

Meskipun array berupa objek, ada beberapa perbedaan antara array dan objek
lainnya, dan ada beberapa fitur khusus Java untuk membuat dan menggunakan
array.

Misalnya A adalah variabel yang merujuk pada suatu array. Maka indeks k di
dalam A bisa dipanggil dengan A[k]. Item pertama adalah A[0], yang kedua
adalah A[i], dan seterusnya. A[k] adalah suatu variabel dan bisa digunakan
seperti variabel lainnya. Kita bisa memberinya nilai, bisa menggunakannya
dalam ekspresi, dan bisa diberikan sebagai parameter pada subrutin.
Semuanya akan didiskusikan di bawah nanti. Untuk sekarang ingat sintaks
berikut

variabel_array [ekspresi_integer]

untuk merujuk pada suatu array.

Meskipun setiap array merupakan suatu objek, kelas array tidak harus
didefinisikan sebelumnya. Jika suatu tipe telah ada, maka kelas array dari tipe
tersebut otomatis ada. Jika nama suatu tipe adalah TipeDasar, maka nama
kelas arraynya adalah TipeDasar[]. Artinya, suatu objek yang diciptakan dari
kelas TipeDasar[] adalah array dari item yang tiap itemnya bertipe TipeDasar.
Tanda kurung "[]" dimaksudkan untuk mengingat sintaks untuk mengambil
item di dalam suatu array. "TipeDasar[]" dibaca seperti "array TipeDasar".
Mungkin perlu juga dijelaskan bahwa jika KelasA adalah kelas turunan dari
KelasB maka KelasA[] otomatis menjadi kelas turunan KelasB[].

Tipe dasar suatu array dapat berupa tipe apapun yang ada atau sudah
didefinisikan pada Java. Misalnya tipe primitif int akan diturunkan kelas array
int[]. Setiap elemen di dalam array int[] adalah variabel yang memiliki tipe int
dan bisa diisi dengan nilai dengan tipe int. Dari kelas yang bernama String
diturunkan tipe array String[]. Setiap elemen di dalam array String[] adalah
variabel dengan tipe String, yang bisa diisi dengan nilai bertipe String. Nilai
ini bisa null atau referensi ke objek yang bertipe String (dan juga kelas
turunan dari String)

Mari kita lihat contoh lebih konkrotnya menggunakan array bilangan bulat
sebagai contoh pertama kita. Karena int[] adalah sebuah kelas, maka kita bisa
menggunakannya untuk mendeklarasikan variabel. Misalnya,

int[] daftar;

yang membuat variabel bernama daftar dengan tipe int[]. Variabel ini bisa
menunjuk pada array int, akan tetapi nilai awalnya adalah null (jika
merupakan variabel anggota suatu kelas) atau tak tentu (jika merupakan
variabel lokal di dalam suatu metode). Operator new digunakan untuk
membuat objek array baru, yang kemudian bisa diberikan kepada daftar.
Sintaksnya sama seperti sintaks sebelumnya, yaitu :

daftar = new int[5];

membuat array 5 buah integer. Lebih umum lagi, konstruktor "new


TipeDasar[N]" digunakan untuk membuat array bertipe TipeDasar[]. Nilai N
di dalam kurung menyatakan panjang array, atau jumlah elemen yang bisa
ditampung. Panjang array adalah variabel instansi di dalam objek array,
sehingga array tahu berapa panjangnya. Kita bisa mendapatkan panjang suatu
array, misalnya daftar menggunakan daftar.length (akan tetapi kita tidak bisa
mengubahnya)

Hasil dari pernyataan "daftar = new int[5];" dapat diilustrasikan sebagai


berikut

Gambar 1. Ilustrasi hasil dari pernyataan daftar=new int[5];

Perlu dicatat bahwa array integer secara otomatis diisi dengan nol. Dalam
Java, array yang baru dibuat akan selalu diisi dengan nilai tertentu: nol untuk
angka, false untuk boolean, karakter dengan nilai Unicode 0 untuk char dan
null untuk objek.

Elemen di dalam array daftar dapat dirujuk dengan daftar[0], daftar[1],


daftar[2], daftar[3], dan daftar[4] (ingat juga bahwa nilai indeks terbesar
adalah panjangnya array dikurang satu). Akan tetapi, referensi array
sebetulnya lebih umum lagi. Tanda kurung di dalam referensi array bisa berisi
ekspresi apapun yang nilainya suatu integer. Misalnya jika idks adalah
variabel bertipe int, maka daftar[idks] dan daftar[2*idks+3] secara sintaks
benar.

Contoh berikut akan mencetak semua isi integer di dalam array daftar ke layar
:
for (int i = 0; i < daftar.length; i++)
{ System.out.println( daftar[i] );
}
Perulangan pertama adalah ketika i = 0, dan daftar[i] merujuk pada daftar[0].
Jadi nilai yang disimpan pada variabel daftar[0] akan dicetak ke layar.
Perulangan kedua adalah i = 1, sehingga nilai daftar[i] dicetak. Perulangan
berhenti setelah mencetak daftar[4] dan i menjadi sama dengan 5, sehingga
kondisi lanjutan "i < daftar.length" tidak lagi benar. Ini adalah contoh umum
dari menggunakan perulangan untuk mengolah suatu array.

Penggunaan suatu variabel dalam suatu program menyatakan lokasi di


memori. Pikirkan sesaat tentang apa yang akan komputer lakukan ketika ia
menemukan referensi ke elemen suatu array daftar[k] ketika program berjalan.
Komputer harus menentukan lokasi memori di mana ia dijadikan referensi.
Untuk komputer, daftar[k] berarti : "Ambil pointer yang disimpan di dalam
variabel daftar. Ikuti pointer ini untuk mencari objek array. Ambil nilai k.
Pergi ke posisi ke-k dari array tersebut, dan di sanalah alamat memori yang
Anda ingin."

Ada dua hal yang bisa salah di sini. Misalnya nilai daftar adalah null. Dalam
kasus ini, maka daftar tidak memiliki referensi sama sekali. Percobaan
merujuk suatu elemen pada suatu array kosong adalah suatu kesalahan. Kasus
ini akan menampilkan pesan kesalahan "pointer kosong". Kemungkinan
kesalahan kedua adalah jika daftar merujuk pada suatu array, akan tetapi k
berada di luar rentang indeks yang legal. Ini akan terjadi jika k < 0 atau jika k
>= daftar.length. Kasus ini disebut kesalahan "indeks array keluar batas".
Ketika kita menggunakan array dalam program, kita harus selalu ingat bahwa
kedua kesalahan tersebut mungkin terjadi. Dari kedua kasus di atas, kesalahan
indeks array keluar batas adalah kesalahan yang lebih sering terjadi.

Untuk suatu variabel array, seperti variabel lainnya, kita bisa mendeklarasikan
dan mengisinya dengan satu langkah sekaligus, misalnya :

int[] daftar = new int[5];

Jika daftar merupakan variabel lokal dalam subrutin, maka perintah di atas
akan persis sama dengan dua perintah :
int[] daftar;
daftar = new int[5];

(Jika daftar adalah variabel instansi, tentukan kita tidak bisa mengganti "int[]
daftar = new int[5];" dengan "int[] daftar; daftar = new int[5];" karena ini
hanya bisa dilakukan di dalam subrutin)

Array yang baru dibuat akan diisi dengan nilai awal yang tergantung dari tipe
dasar array tersebut seperti dijelaskan sebelumnya. Akan tetapi Java juga
menyediakan cara untuk memberi isi array baru dengan daftar isinya. Dalam
pernyataan yang untuk membuat array, ini bisa dilakukan dengan
menggunakan penginisialiasi array (array initializer), misalny :

int[] daftar = { 1, 4, 9, 16, 25, 36, 49 };

akan membuat array baru yang berisi 7 nilai, yaitu 1, 4, 9, 16, 25, 36, dan 49,
dan mengisi daftar dengan referensi ke array baru tersebut. Nilai daftar[0]
berisi 1, nilai daftar[1] berisi 4, dan seterusnya. Panjang daftar adalah 7,
karena kita memberikan 7 nilai awal kepada array ini.

Suatu penginisialisasi array memiliki bentuk daftar angka yang dipisahkan


dengan koma dan diapit dengan tanda kurung kurawal {}. Panjang array
tersebut tidak perlu diberikan, karena secara implisit sudah bisa ditentukan
dari jumlah daftar angkanya. Elemen di dalam penginisialisasi array tidak
harus selalu berbentuk konstanta. Juga bisa merupakan variabel atau ekspresi
apa saja, asalkan nilainya bertipe sama dengan tipe dasar array tersebut.
Misalnya, deklarasi berikut membuat array dari delapan jenis Color beberapa
warna telah dibentuk dengan ekspresi "new Color(r,g,b);"

Color[] palette =
{
Color.black,
Color.red,
Color.pink,
new Color(0,180,0), // hijau gelap
Color.green,
Color.blue,
new Color(180,180,255), // biru muda
Color.white
};
Inisialisasi array bentuk seperti ini hanya bisa digunakan dalam deklarasi
suatu variabel baru, akan tetapi tidak bisa digunakan seperti operator pemberi
nilai (=) di tengah-tengah suatu program. Akan tetapi ada cara lain yang bisa
digunakan sebagai pernyataan pemberian nilai atau diberikan ke dalam
subrutin. Yaitu menggunakan jenis lain dari operator new untuk membuat atau
menginisialisasi objek array baru. (Cara ini agak kaku dengan sintaks aneh,
seperti halnya sintaks kelas anonim yang telah didiskusikan sebelumnya).
Misalnya untuk memberi nilai kepada suatu variabel daftar, kita bisa
menggunakan :

daftar = new int[] { 1, 8, 27, 64, 125, 216, 343 };

Sintaks umum dari bentuk operator new seperti ini adalah

new TipeDasar [ ] { daftar_nilai_nilai }

Ini adalah suatu ekspresi yang isinya merupakan objek, dan bisa digunakan
untuk banyak situasi di mana suatu objek dengan tipe TipeDasar dipentingkan.
Misalnya buatTombol merupakan metode yang mengambil array String
sebagai parameter, maka kita bisa menuliskan

buatTombol( new String[] { "Stop", "Jalan", "Berikut",


"Sebelum" } );

Catatan terakhir : untuk alasan sejarah, maka deklarasi

int[] daftar;

akan bernilai sama dengan

int daftar[];

di mana sintaks tersebut digunakan dalam bahasa C dan C++. Akan tetapi
sintaks alternatif ini tidak begitu masuk akan dalam Java, atau mungkin lebih
baik dihindari. Lagian, maksudnya adalah mendeklarasikan variabel dengan
tipe tertentu dan namanya adalah int[]. Akan lebih masuk akan untuk
mengikuti sintaks "nama_tipe nama_variabel" seperti pada bentuk bertama.
B. Pemrograman dengan Array

Array merupakan jenis struktur data yang sangat dasar dan sangat penting.
Teknik pengolahan array merupakan teknik pemrograman yang paling penting
yang kita harus kuasai. Dua jenis teknik pengolahan array -- pencarian dan
pengurutan -- akan dibahas kemudian. Bagian ini akan memperkenalkan
beberapa ide dasar pengolahan array secara umum.

Dalam banyak hal, pengolahan array berarti menggunakan operasi yang sama
kepada setiap elemen di dalam array. Biasanya sering dilakukan dengan
perulangan for. Perulangan untuk mengolah semua elemen dalam array A
dapat ditulis dalam bentuk :

// lakukan inisialiasi yang diperlukan sebelumnya


for (int i = 0; i < A.length; i++) {
. . . // proses
A[i] }

Misalnya, A adalah array dengan tipe double[]. Misalnya kita ingin


menjumlah semua nilai dalam array tersebut. Algoritma umum untuk
melakukannya adalah :

Mulai dengan 0;
Tambah A[0]; (proses elemen pertama di dalam A)
Tambah A[1]; (proses elemen kedua di dalam A)
.
.
.
Tambah A[ A.length - 1 ]; (proses elemen terakhir di
dalam A)

Dengan menggunakan pengetahuan yang kita telah pelajari tentang

perulangan, kita bisa ubah algoritma di atas menjadi bentuk perulangan for

seperti berikut:

double jumlah; // Jumlah nilai di dalam A


jumlah = 0; // Mulai dengan 0
for (int i = 0; i < A.length; i++)
jumlah += A[i]; // tambah A[i] ke dalam jumlah
untuk i = 0, 1, ..., A.length - 1
Lihat bahwa kondisi kelanjutan "i < A.length" menyatakan bahwa nilai i
terakhir yang akan diolah adalah A.length - 1 yaitu elemen terakhir dalam
array. Ingat bahwa kita menggunakan "<" bukan "<=" karena dengan "<="
komputer akan memberikan kesalahan indeks di luar batas.

Pada akhirnya, nanti Anda akan bisa membuat perulangan seperti di atas di
luar kepala. Kita akan lihat beberapa contohnya. Di sini perulangan akan
menghitung banyaknya elemen di dalam array A yang nilainya kurang dari nol
:

int hitung; // Untuk menghitung elemen


hitung = 0; // Mulai dengan nol
for (int i = 0; i < A.length; i++) {
if (A[i] < 0.0) // Jika elemen ini kurang dari
nol
hitung++; // tambah hitung dengan
1 }
// Di sini nilai "hitung" adalah banyaknya elemen yang
kurang dari 0.

Kita bisa mengganti "A[i] < 0.0" jika kita ingin menghitung banyaknya
elemen di dalam array yang memiliki sifat tertentu. Variasinya akan memiliki
tema yang sama. Misalnya kita ingin menghitung banyaknya elemen di dalam
array A yang sama dengan elemen sesudahnya. Elemen setelah A[i] adalah
A[i+1], sehingga kita bisa mengganti klausa if dengan "if (A[i] == A[i+1])".
Akan tetapi tunggu dulu : Tes ini tidak bisa digunakan apabila A[i] adalah
elemen terakhir dalam array, karena tidak ada lagi array sesudahnya.
Komputer akan menolak pernyataan ini. Sehingga kita harus berhenti satu
elemen sebelum array terakhir, sehingga menjadi

int hitung = 0;
// lihat kondisi for berubah dibandingkan dengan
contoh sebelumnya
for (int i = 0; i < A.length - 1; i++)
{ if (A[i] == A[i+1])
hitung+
+; }

Masalah umum lainnya adalah mencari nilai terbesar di dalam array A.


Strateginya adalah lihat semua isi array, catat nilai terbesar saat itu. Kita akan
simpan nilai terbesar yang kita temui dalam variabel maks. Pada saat kita
melihat elemen array satu per satu, kapanpun kita melihat nilai elemen
tersebut lebih besar dari maks kita akan mengganti nilai maks dengan nilai
yang lebih besar tersebut. Setelah semua elemen array diproses, maka maks
merupakan nilai elemen terbesar di dalam array tersebut. Pertanyaannya
adalah, apa nilai awal maks? Salah satu kemungkinannya adalah mulai dengan
nilai maks sama dengan A[0], baru kemudian melihat isi elemen array lainnya
mulai dengan A[1]. Misalnya,

double maks = A[0]; // nilai maks berisi elemen array


pertama
for (int i = 1; i < A.length; i++) { // i mulai dari
elemen kedua
if (A[i] > maks)
max = A[i];
}
// Di sini maks berisi nilai elemen array yang paling
besar

(Ada masalah yang lebih penting di sini. Java membolehkan array memiliki
panjang nol. Artinya bahkan A[0] pun tidak ada di dalam array, sehingga
memanggil A[0] akan menghasilkan kesalahan indeks keluar batas. Akan
tetapi array biasanya array dengan panjang nol biasanya sesuatu yang kita
ingin hindarkan dalam kehidupan sehari-hari. Lagian apa artinya mencari nilai
terbesar di dalam suatu array yang panjangnya nol?)

Contoh terakhir dari operasi array, misalnya kita ingin mengkopi suatu array.
Untuk mengkopi array A, tidak cukup untuk menggunakan perintah

double[] B = A;

karena perintah ini tidak membuat objek array baru. Yang dibuat di sini adalah
variabel baru yang merujuk pada objek yang sama dengan A. (Sehingga
perubahan yang terjadi pada A[i] akan juga menyebabkan B[i] berubah).
Untuk membuat array baru yang merupakan kopi dari array A, kita harus
membuat objek array baru, dan mengkopi isinya satu per satu dari array A ke
array baru, sehingga

// Buat objek array baru, yang panjangnya sama dengan


panjang A
double[] B = new double[A.length];
for (int i = 0; i < A.length; i++)
B[i] = A[i]; // Kopi setiap elemen dari A ke B

Mengkopi nilai dari satu array ke array yang lain adalah operasi umum
sehingga Java memiliki subrutin untuk melakukannya, yaitu
System.arraycopy(), yang merupakan subrutin anggota statik dari kelas
standar System. Deklarasinya memiliki bentuk seperti :

public static void arraycopy(Object arraySumber, int


indeksAwalSumber,
Object arrayTujuan, int indeksAwalTujuan, int
jumlah)

di mana arraySumber dan arrayTujuan bisa berbentuk array dengan tipe


apapun. Nilai akan dikopi dari arraySumber ke arrayTujuan. jumlah adalah
berapa banyak elemen yang akan dikopi. Nilai akan dikopi dari arraySumber
mulai dari posisi indeksAwalSumber dan akan disimpan pada arrayTujuan
mulai dari posisi indeksAwalTujuan. Misalnya kita akan mengkopi array A,
maka kita bisa menggunakan perintah

double B = new double[A.length];


System.arraycopy( A, 0, B, 0, A.length );

Suatu tipe array, misalnya double[] adalah tipe Java biasa, sehingga kita bisa
menggunakannya seperti tipe-tipe Java lainnya. Termasuk juga digunakan
sebagai parameter formal di dalam suatu subrutin. Juga bisa digunakan
sebagai tipe keluaran suatu fungsi. Misalnya, kita bisa menulis fungsi yang
membuat kopi array dengan tipe double sebagai berikut :

double[] kopi( double[] sumber ) {


// Membuat dan mengembalikan kopi array
sumber // Jika sumber null, maka kembalikan
null
if ( sumber == null )
return null;
double[] kpi; // Kopi array sumber
kpi = new double[sumber.length];
System.arraycopy( sumber, 0, kpi, 0,
sumber.length );
return
kpi; }

Rutin main() memiliki parameter dengan tipe String[] yang merupakan array
String. Ketika sistem memanggil rutin main(), string di dalam array ini adalah
parameter dari baris perintah. Jika kita menggunakan konsol, user harus
mengetikkan perintah untuk menjalankan program. User bisa menambahkan
input tambahan dalam perintah ini setelah nama program yang akan
dijalankan.

Misalnya, jika kelas yang memiliki rutin main() bernama programKu, maka
user bisa menjalankan kelas tersebut dengan perintah "java programKu" di
konsol. Jika kita tulis dengan "java programKu satu dua tiga", maka parameter
dari baris perintahnya adalah "satu", "dua", dan "tiga". Sistem akan
memasukkan parameter-parameter ini ke dalam array String[] dan
memberikan array ini pada rutin main().

Berikut ini adalah contoh program sederhana yang hanya mencetak parameter
dari baris perintah yang dimasukkan oleh user.

public class CLDemo {


public static void main(String[] args)
{ System.out.println("Anda memasukkan "
+
args.length
+ " parameter dari baris perintah");
if (args.length > 0) {
System.out.println("Parameter tersebut
adaah :");
for (int i = 0; i < args.length; i++)
System.out.println(" " + args[i]);
}
} // akhir main()
} // akhir kelas CLDemo

Perhatikan bahwa parameter args tidak mungkin null meskipun tidak ada
parameter yang dimasukkan. Jika tidak ada parameter dari baris perintah yang
dimasukkan, maka panjang array ini adalah nol.

Hingga sekarang, contoh yang telah diberikan adalah bagaimana mengolah


array dengan mengakses elemennya secara berurutan (sequential access).
Artinya elemen-elemen array diproses satu per satu dalam urutan dari awal
hingga akhir. Akan tetapi salah satu keuntungan array adalah bahwa array bisa
digunakan untuk mengakses elemennya secara acak, yaitu setiap elemen bisa
diakses kapan saja secara langsung.
Misalnya, kita ambil contoh suatu masalah yang disebut dengan masalah
ulang tahun: Misalnya ada N orang di dalam suatu ruangan. Berapa
kemungkinan dua orang di dalam ruangan tersebut memiliki ulang tahun yang
sama (yang dilahirkan pada tanggal dan bulan yang sama, meskipun tahunnya
berbeda)? Kebanyakan orang salah menerka jawabannya. Sekarang kita lihat
dengan versi masalah yang berbeda: Misalnya kita memilih orang secara acak
dan menanyakan ulang tahunnya. Berapa orang yang Anda harus tanya untuk
mendapatkan hari ulang tahun yang sama dengan orang sebelumnya?

Tentunya jawabannya akan tergantung pada faktor yang bersifat acak, akan
tetapi kita bisa simulasikan dengan program komputer dan menjalankan
beberapa kali hingga kita tahu berapa kira-kira orang harus dicek.

Untuk mensimulasikan percobaan ini, kita harus mencatat semua ulang tahun
yang kita sudah tanyakan. Ada 365 kemungkinan hari ulang tahun (Kita
abaikan sementara tahun kabisat). Untuk setiap kemungkinan hari ulang
tahun, kita perlu tahu, apakah hari ulang tahun tersebut telah digunakan?
Jawabannya adalah nilai boolean true atau false. Untuk menyimpan data ini,
kita bisa gunakan array dari 365 nilai boolean:

boolean[] sudahDitanya;
sudahDitanya = new boolean[365];

Tanggal-tanggal pada satu tahun dinomori dari 0 hingga 364. Nilai


sudahDitanya[i] akan bernilai true jika orang yang kita tanya berulang tahun
pada hari tersebut. Pada awalnya semua nilai pada array sudahDitanya[i]
bernilai false. Ketika kita memilih satu orang dan menanyakan hari ulang
tahunnya, misalnya i, kita akan mengecek terlebih dahulu apakah
sudahDitanya[i] bernilai true. Jika tidak maka orang ini adalah orang kedua
dengan ulang tahun yang sama. Artinya kita sudah selesai.

Jika sudahDitanya[i] bernilai false, maka belum ada orang sebelum ini yang
memiliki hari ulang tahun tersebut. Kita akan ganti sudahDitanya[i] dengan
true, kemudian kita akan tanyakan lagi kepada orang lain, dan begitu
seterusnya hingga semua orang di dalam ruangan ditanyakan.
static void masalahUlangTahun() {
// Melakukan simulasi dengan memilih seseorang
secara acak
// dan mengecek hari ulang tahunnya. Jika hari
ulang tahunnya
// sama dengan orang yang pernah kita tanya
sebelumnya,
// hentikan program dan laporkan berapa orang yang
sudah dicek

boolean[] sudahDitanya;
// Untuk mencatat ulang tahun yang sudah
ditanyakan
// Nilai true pada sudahDitanya[i] berarti orang
lain
// sudah ada yang berulang tahun pada hari i

int hitung;
// Jumlah orang yang sudah pernah ditanya

sudahDitanya = new boolean[365];


// Awalnya, semua nilai adalah false

hitung = 0;

while (true) {
// Ambil ulang tahun secara acak dari 0 hingga
364
// Jika ulang tahun telah ditanya sebelumnya,
keluar
// Jika tidak catat dalam array

int ultah; // Ulang tahun seseorang


ultah = (int)(Math.random()*365);
hitung++;
if ( sudahDitanya[ultah] )
break;
sudahDitanya[ultah] =
true; }

System.out.println("Ulang tahun yang sama


ditemukan setelah menanyakan " + hitung + " orang.");
} // akhir masalahUlangTahun()

Subrutin ini menggunakan fakta bahwa array boolean yang baru dibuat
memiliki seluruh elemen yang bernilai false. Jika kita ingin menggunakan
array yang sama untuk simulasi kedua, kita harus mereset ulang semua elemen
di dalamnya menjadi false kembali dengan perulangan for

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


sudahDitanya[i] = false;

Array paralel adalah menggunakan beberapa array dengan indeks yang sama.
Misalnya kita ingin membuat beberapa kolom secara paralel -- array x di
kolom pertama, array y di kolom kedua, array warna di kolom ketiga, dan
seterusnya. Data untuk baris ke-i bisa didapatkan dari masing-masing array
ini. Tidak ada yang salah dengan cara ini, akan tetapi cara ini berlawanan
dengan filosofi berorientasi objek yang mengumpulkan data yang
berhubungan di dalam satu objek. Jika kita mengikuti aturan seperti ini, amaka
kita tidak harus membayangkan hubungan data yang satu dan yang lainnya
karena semua data akan dikelompokkan di dalam satu tempat.

Misalnya saya menulis kelas seperti

class DataString {
// Data dari salah satu pesan
int x,y; // Posisi pesan
Color warna; // Warna pesan
}

Untuk menyimpan data dalam beberapa pesan, kita bisa menggunakan array
bertipe DataString[], yang kemudian dideklarasikan sebagai variabel instansi
dengan nama data sehingga

DataString[] data;

Isi dari data bernilai null hingga kita membuat array baru, misalnya dengan

data = new DataString[JUMLAH_PESAN];

Setelah array ini dibuat, nilai setiap elemen array adalah null. Kita ingin
menyimpan data di dalam objek yang bertipe DataString, akan tetapi tidak ada
objek yang dibuat. Yang kita sudah buat hanyalah kontainernya saja. Elemen
di dalamnya berupa objek yang belum pernah kita buat. Untuk itu elemen di
dalamnya bisa kita buat dengan perulangan for seperti :

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


data[i] = new DataString();

Sekarang kita bisa mengambil data setiap pesan dengan data[i].x, data[i].y,
dan data[i].warna.

Terakhir berkaitan dengan pernyataan switch. Misalnya kita memiliki nilai


bulan dari 0 hingga 11, yang melambangkan bulan dalam satu tahun dari
Januari hingga Desember. Kita ingin mencetaknya di layar, dengan perintah

switch (bulan)
{ case 0:
bulanString = "Januari";
break;
case 1:
bulanString = "Februari";
break;
case 2:
bulanString = "Maret";
break;
case 3:
bulanString = "April";
break;
.
.
.
case 11:
bulanString = "Desember";
break;
default:
bulanString = "Salah
bulan"; }

Kita bisa mengganti keseluruhan perintah switch tersebut dengan


menggunakan array, misalnya dengan array namaBulan yang dideklarasikan
sebagai berikut :

static String[] namaBulan = { "Januari", "Februari",


"Maret",

"April", "Mei", "Juni", "Juli", "Agustus",


"September",

"Oktober", "November", "Desember" };

Kemudian kita bisa ganti keseluruhan switch di atas dengan

bulanString = namaBulan[bulan];

Sangat mudah bukan?


C. Array Dinamis

Panjang suatu array tidak bisa diubah setelah dibuat. Akan tetapi, sering kali
jumlah data yang disimpan dalam array bisa berubah setiap saat. Misalnya
dalam contoh berikut : Suatu array menyimpan baris teks dalam program
pengolah kata. Atau suatu array yang menyimpan daftar komputer yang
sedang mengakses halaman suatu website. Atau array yang berisi gambar
yang ditambahkan user oleh program gambar. Di sini jelas, bahwa kita butuh
sesuatu yang bisa menyimpan data di mana jumlahnya tidak tetap.

1. Array Setengah Penuh

Bayangkan suatu aplikasi di mana sejumlah item yang ingin kita simpan di
dalam array akan berubah-ubah sepanjang program tersebut berjalan.
Karena ukuran array tidak bisa diubah, maka variabel terpisah digunakan
untuk menyimpan berapa banyak sisa tempat kosong yang masih bisa diisi
di dalam array.

Bayangkan misalnya, suatu program yang membaca bilangan bulat positif


dari user, kemudian menyimpannya untuk diproses kemudian. Program
akan berhenti membaca input apabila input yang diterima bernilai 0 atau
kurang dari nol. Bilangan input n tersebut kita simpan di dalam array
bilangan dengan tipe int[]. Katakan banyaknya bilangan yang bisa
disimpan tidak lebih dari 100 buah. Maka ukuran array bisa dibuat 100.

Akan tetapi program tersebut harus melacak berapa banyak bilangan yang
sudah diambil dari user. Kita gunakan variabel terpisah bernama
jmlBilangan. Setiap kali suatu bilangan disimpan di dalam array, nilai
jmlBilangan akan bertambah satu.

Sebagai contoh sederhana, masi kita buat program yang mengambil


bilangan yang diinput dari user, kemudian mencetak bilangan-bilangan
tersebut dalam urutan terbalik. (Ini adalah contoh pengolahan yang
membutuhkan array, karena semua bilangan harus disimpan pada suatu
tempat. Banyak lagi contoh program misalnya, mencari jumlah atau rata-
rata atau nilai maksimum beberapa bilangan, bisa dilakukan tanpa
menyimpan bilangan tersebut satu per satu)

public class BalikBilanganInput {


public static void main(String[] args)
{ int[] bilangan;
// Array untuk menyimpan nilai input dari user
int jmlBilangan;
// Banyaknya bilangan yang sudah disimpan dalam
array
int bil;
// Bilangan yang diambil dari user

bilangan = new int[100];


// Buat array dengan 100 bilangan int
jmlBilangan = 0;
// Belum ada bilangan yang disimpan

System.out.println("Masukkan bilangan bulat


positif (paling banyak 100 bilangan)" + , masukkan
nol untuk mengakhiri.");

while (true)
{ System.out.print("? ");
bil = KonsolIO.ambilInt();
if (bil <= 0)
break;
bilangan[jmlBilangan] = bil;
jmlBilangan++;
}

System.out.println("\nBilangan yang Anda


masukkan dalam urutan terbalik adalah :\n");

for (int i = jmlBilangan - 1; i >= 0; i--)


{
System.out.println( bilangan[i] );
}

} // akhir main();

} // akhir kelas BalikBilanganInput

Penting untuk diingat bahwa jmlBilangan memiliki dua peran. Yang


pertama, adalah melacak banyaknya bilangan yang sudah dimasukkan di
dalam array. Yang kedua adalah menentukan di mana indeks kosong
berikutnya di dalam array. Misalnya, jika 4 bilangan sudah dimasukkan ke
dalam array, maka bilangan-bilangan tersebut diisi pada array di posisi 0,
1, 2, dan 3. Maka posisi kosong berikutnya adalah posisi 4.

Ketika kita akan mencetak angka di dalam array, maka poisisi penuh
berikutnya adalah di lokasi jmlBilangan - 1, sehingga perulangan for
mencetak bilangan dari jmlBilangan - 1 hingga 0.

Mari kita lihat contoh lain yang lebih realistis. Misalkan kita ingin menulis
program game, di mana pemain bisa masuk ke dalam game dan keluar dari
game setiap saat. Sebagai programmer berorientasi objek yang baik,
mungkin kita memiliki kelas bernama Pemain sebagai lambang pemain di
dalam game. Daftar pemain yang sedang ada di dalam game, bisa
disimpan di dalam array ArrayPemain dengan tipe Pemain[].

Karena jumlah pemain bisa berubah-ubah maka kita bisa menggunakan


variabel bantu, misalnya jumlahPemainAktif untuk mencatat banyaknya
pemain yang sedang aktif berada di dalam game. Misalnya jumlah
maksimum pemain di dalam game adalah 10 orang, maka kita bisa
mendeklarasikan variabelnya sebagai :

Pemain[] ArrayPemain = new Pemain[10]; // Hingga


10 pemain.
int jumlahPemainAktif = 0; // Di awal game, tidak
ada pemain yang aktif

Setelah beberapa pemain masuk ke dalam game, variabel


jumlahPemainAktif akan lebih dari 0, dan objek pemailn akan disimpan
dalam array, misalnya ArrayPemain[0], ArrayPemain[1],
ArrayPemain[2], dan seterusnya. Ingat bahwa pemain
ArrayPemain[jumlahPemainAktif] tidak ada. Prosedur untuk menambah
pemain baru, secara sederhana :

// Tambah pemain di tempat kosong


ArrayPemain[jumlahPemainAktif] = pemainBaru;
// And increment playerCt to count the new player.
jumlahPemainAktif++;

Untuk menghapus seorang pemain mungkin sedikit lebih sulit karena kita
tidak ingin meninggalkan lubang di tengah-tengah array. Misalnya kita
ingin menghapus pemain pada indeks k pada ArrayPemain. Jika kita tidak
peduli urutan pemainnya, maka salah satu caranya adalah memindahkan
posisi pemain terakhir ke posisi pemain yang meninggalkan game,
misalnya :

ArrayPemain[k] = ArrayPemain[jumlahPemainAktif
-1];
jumlahPemainAktif--;

Pemain yang sebelumnya ada di posisi k, tidak lagi ada di dalam array.
Pemain yang sebelumnya ada di posisi jumlahPemainAktif -1 sekarang
ada di array sebanyak 2 kali. Akan tetapi sekarang ia berada di bagian
yang valid, karena nilai jumlahPemainAktif kita kurangi dengan satu.
Ingat bahwa setiap elemen di dalam array harus menyimpan satu nilai,
akan tetapi satu-satunya nilai dari posisi 0 hingga jumlahPemainAktif - 1
akan tetap diproses seperti biasa.

Misalnya kita ingin menghapus pemain di posisi k, akan tetapi kita ingin
agar urutan pemain tetap sama. Untuk melakukannya, semua pemain di
posisi k+1 ke atas harus dipindahkan satu posisi ke bawah. Pemain k+
mengganti pemain k yang keluar dari game. Pemain k+2 mengganti
pemain yang pindah sebelumnya, dan berikutnya. Kodenya bisa dibuat
seperti

for (int i = k+1; i < jumlahPemainAktif; i++)


{ ArrayPemain[i-1] = ArrayPemain[i];
}
jumlahPemainAktif--;

Perlu ditekankan bahwa contoh Pemain di atas memiliki tipe dasar suatu
kelas. Elemennya bisa bernilai null atau referensi ke suatu objek yang
bertipe Pemain, Objek Pemain sendiri tidak disimpan di dalam array,
hanya referensinya saja yang disimpan di sana. Karena aturan pemberian
nilai pada Java, objek tersebut bisa saja berupa kelas turunan dari Pemain,
sehingga mungkin juga array tersebut menyimpan beberapa jenis Pemain
misalnya pemain komputer, pemain manusia, atau pemain lainnya, yang
semuanya adalah kelas turunan dari Pemain.
Contoh lainnya, misalnya kelas BentukGeometri menggambarkan suatu
bentuk geometri yang bisa digambar pada layar, dan ia memiliki kelas-
kelas turunan yang merupakan bentuk-bentuk khusus, seperti garis, kotak,
kotak bertepi bulat, oval, atau oval berisi warna, dan sebagainya.
(BentukGeometri sendiri bisa berbentuk kelas abstrak, seperti didiskusikan
sebelumnya). Kemudian array bertipe BentukGeometri[] bisa menyimpan
referensi objek yang bertipe kelas turunan dari BentukGeometri. Misalnya,
perhatikan contoh pernyataan berikut

BentukGeometri[] gambar = new


BentukGeometri[100]; // Array untuk menyimpan 100
gambar.
gambar[0] = new Kotak(); // Letakkan
beberapa objek di dalam array.
gambar[1] = new Garis(); // (Program
betulan akan menggunakan beberapa
gambar[2] = new OvalBerwarna(); // parameter di
sini
int jmlGambar = 3; // Lacak jumlah objek di dalam
array

bisa diilustrasikan sebagai berikut.

Gambar 2. Ilustrasi penyimpanan referensi objek yang bertipe class


turunan

Array tersebut bisa digunakan dalam program gambar. Array bisa


digunakan untuk menampung gambar-gambar yang akan ditampilkan. Jika
BentukGeometri memiliki metode "void gambarUlang(Graphics g)" untuk
menggambar pada grafik g, maka semua grafik dalam array bisa digambar
dengan perulangan sederhana

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


gambar[i].gambarUlang(g);

Pernyataan "gambar[i].gambarUlang(g);" memanggil metode


gambarUlang() yang dimiliki oleh masing-masing gambar pada indeks i di
array tersebut. Setiap objek tahu bagaimana menggambar dirinya sendiri,
sehingga perintah dalam perulangan tersebut sebetulnya melakukan tugas
yang berbeda-beda tergantung pada objeknya. Ini adalah contoh dari
polimorfisme dan pengolahan array.

2. Array Dinamis

Dalam contoh-contoh di atas, ada batas tententu dalam jumlah elemennya,


yaitu 100 int, 100 Pemain, dan 100 BentukGeometris. Karena ukuran array
tidak bisa berubah, array tersebut hanya bisa menampung maksimum
sebanyak elemen yang didefinisikan pada pembuatan array. Dalam banyak
kasus, adanya batas maksimum tersebut tidak diinginkan. Kenapa harus
bekerja dengan hanya 100 bilangan bulat saja, bukan 101?

Alternatif yang umum adalah membuat array yang sangat besar sehingga
bisa digunakan untuk dalam kehidupan sehari-hari. Akan tetapi cara ini
tidak baik, karena akan sangat banyak memori komputer yang terbuang
karena tidak digunakan. Memori itu mungkin lebih baik digunakan untuk
yang lain. Apalagi jika komputer yang akan digunakan tidak memiliki
memori yang cukup untuk menjalankan program tersebut.

Tentu saja, cara yang lebih baik adalah apabila kita bisa mengubah ukuran
array sesuka kita kapan saja. Ingat bahwa sebenarnya variabel array tidak
menyimpan array yang sesungguhnya. Variabel ini hanya menyimpan
referensi ke objek tersebut. Kita tidak bisa membuat array tersebut lebih
besar, akan tetapi kita bisa membuat array baru yang lebih besar,
kemudian mengubah isi variabel array tersebut ke array baru itu.

Tentunya kita harus mengkopi semua isi di array yang lama ke array baru.
Array lama akan diambil oleh pemulung memori, karena ia tidak lagi
digunakan.

Mari kita lihat kembali contoh game di atas, di mana ArrayPemain adalah
array dengan tipe Pemain[] dan jumlahPemainAktif[/code] adalah jumlah
pemain yang sudah digunakan array tersebut. Misalnya kita tidak ingin
membuat limit banyaknya pemainnya yang bisa ikut main. Jika pemain
baru masuk dan array tersebut sudah penuh, kita akan membuat array baru
yang lebih besar.

Variabel Array Pemain akan merujuk pada array baru. Ingat bahwa setelah
ini dilakukan, ArrayPemain[0] akan menunjuk pada lokasi memori yang
berbeda, akan tetapi nilai ArrayPemain[0] sama dengan sebelumnya.
Berikut ini adalah kode untuk melakukan hal di atas:

// Tambah pemain baru, meskipun array sudah penuh

if (jumlahPemainAktif == ArrayPemain.length) {
// Array sudah penuh. Buat array baru yang lebih
besar,
// kemudian kopi isi array lama ke array baru lalu
ubah
// ArrayPemain ke array baru.
int ukuranBaru = 2 * ArrayPemain.length; //
Ukuran array baru
Pemain[] temp = new Pemain[ukuranBaru]; // Array
baru
System.arraycopy(ArrayPemain, 0, temp, 0,
ArrayPemain.length);
ArrayPemain = temp; // Ubah referensi ArrayPemain
ke array baru.
}

// Di sini kita sudah tahu bahwa pasti ada tempat di


array baru.

ArrayPemain[jumlahPemainAktif] = pemainBaru; // Tambah


pemain baru...
jumlahPemainAktif++; // ... dan tambah satu
jumlahPemainAktif nya

Jika kita akan melakukan hal ini terus menerus, akan lebih indah jika kita
membuat kelas untuk menangani hal ini. Objek mirip array yang bisa
berubah ukuran untuk mengakomodasi jumlah data yang bisa ia tampung
disebut array dinamis. Array dinamis memiliki jenis operasi yang sama
dengan array : mengisi nilai pada posisi tertentu dan mengambil nilai di
posisi tertentu. Akan tetapi tidak ada batas maksimum dari jumlah array
(hanya tergantung pada jumlah memori komputer yang tersedia). Dalam
kelas array dinamis, metode put dan get akan diimplementasikan sebagai
metode instansi.

Di sini misalnya, adalah kelas yang mengimplementasikan array dinamis


int :

public class ArrayDinamisInt {


private int[] data; // Array untuk menyimpan data
public DynamicArrayOfInt() {
// Konstruktor.
data = new int[1]; // Array akan bertambah
besar jika diperlukan
}

public int get(int posisi) {


// Ambil nilai dari posisi tertentu di dalam
array.
// Karena semua posisi di dalam array adalah
nol, maka
// jika posisi tertentu di luar data array,
nilai 0 akan dikembalikan
if (posisi >= data.length)
return 0;
else
return
data[posisi]; }

public void put(int posisi, int nilai) {


// Simpan nilai ke posisi yang ditentukan di
dalam array
// Data array tersebut akan bertambah besar
jika diperlukan

if (posisi >= data.length) {


// Posisi yang ditentukan berada di luar
array data
// Besarkan ukuran array 2x lipat. Atau
jika ukurannya masih
// terlalu kecil, buat ukurannya sebesar
2*posisi

int ukuranBaru = 2 * data.length;


if (posisi >= ukuranBaru)
ukuranBaru = 2 * posisi;
int[] dataBaru = new int[ukuranBaru];
System.arraycopy(data, 0, dataBaru, 0,
data.length);
data = dataBaru;

// Perintah berikut hanya untuk


demonstrasi
System.out.println("Ukuran array dinamis
diperbesar menjadi " + ukuranBaru);
}
data[posisi] =
nilai; }

} // akhir kelas ArrayDinamisInt

Data pada objek ArrayDinamisInt disimpan dalam array biasa, akan tetapi
arraynya akan dibuang dan diganti dengan array baru yang lebih besar
apabila diperlukan. Jika bilangan adalah variable bertipe ArrayDinamisInt,
maka perintah bilangan.put(pos,nilai) akan menyimpan bilangan pada
posisi pos di array dinamis tersebut. Fungsi bilangan.get(pos) mengambil
nilai yang disimpan pada posisi pos.

Pada contoh pertama, kita menggunakan array untuk menyimpan bilangan


bulat positif yang dimasukkan oleh user. Kita bisa menulis ulang program
tersebut dengan menggunakan ArrayDinamisInt. Referensi ke bilangan[i]
diganti dengan bilangan.get[i]. Perintah "bilangan[jmlBilangan] = bil;"
kita ganti dengan "bilangan.put(jmlBilangan,bil);". Berikut ini adalah
programnya:

public class BalikBilanganInput {


public static void main(String[] args)
{ ArrayDinamisInt bilangan; // Array
untuk
menyimpan nilai input dari user
int jmlBilangan; // Banyaknya bilangan yang
sudah disimpan dalam array
int bil; // Bilangan yang diambil
dari user

bilangan = new ArrayDinamisInt();


jmlBilangan = 0; // Belum ada
bilangan yang disimpan

System.out.println("Masukkan bilangan bulat


positif, masukkan nol untuk mengakhiri.");

while (true)
{ System.out.print("? ");
bil = KonsolIO.ambilInt();
if (bil <= 0)
break;
bilangan.put(jmlBilangan,bil);
jmlBilangan++;
}

System.out.println("\nBilangan yang Anda


masukkan dalam urutan terbalik adalah :\n");

for (int i = jmlBilangan - 1; i >= 0; i--)


{ System.out.println( bilangan.get(i) );
}

} // akhir main();

} // akhir kelas BalikBilanganInput

D. Array Multidimensi

Tipe apapun bisa digunakan sebagai tipe dasar suatu array. Kita bisa membuat
array int, array String, array Object dan seterusnya. Terutama, karena array
adalah tipe Java kelas satu, kita bisa membuat array yang bertipe array.

Misalnya suatu array bertipe int[], juga otomatis memiliki array bertipe int[][],
yaitu "array bertipe array int". Array tersebut disebut array 2 dimensi.
Tentunya, dengan tipe int[][], kita juag bisa membuat arraynya dengan tipe
int[][][], yang merupakan array 3 dimensi, dan seterusnya. Tidak ada batasan
berapa dimensi array yang kita buat, akan tetapi bukan sesuatu yang biasa
dilakukan untuk membuat array lebih dari 3 dimensi. Pembahasan kita akan
lebih dikhususkan pada array 2 dimensi. Tipe TipeDasar[][] biasanya dibaca
"array 2 dimensi bertipe TipeDasar" atau "array dari array TipeDasar".
Deklarasi pernyataan "int[][] A;" adalah membuat variabel bernama A dengan
tipe int[][]. Variabel ini berisi objek yang bertipe int[][]. Pernyataan
pemberian nilai "A = new int[3][4];" akan membuat objek array 2 dimensi dan
mengisi A ke objek yang baru dibuat tersebut.

Seperti biasa, deklarasi dan pemberian nilai bisa digabung menjadi satu
pernyataan, seperti "int[][] A = new int[3][4];". Objek yang baru dibuat adalah
objek yang merupakan array dari array int. Bagian int[3][4] menyatakan
bahwa ada 3 array int di dalam array A, dan di setiap array int tersebut
terdapat 4 int.

Cara seperti itu mungkin sedikit membingungkan, akan tetapi akan lebih
mudah apabila kita bayangkan array tersebut seperti matriks. Istilah "int[3][4]"
bisa disebut sebagai matriks dengan 3 baris dan 4 kolom, seperti pada ilustrasi
berikut ini :

Gambar 3. Ilustrasi array dengan matriks 3 baris dan 4 kolom


Untuk banyak hal, kita bisa mengabaikan kenyataan di atas, dan
membayangkan bentuk matriks seperti di atas. Kadang-kadang kita juga harus
ingat bahwa setiap baris sebenarnya juga merupakan suatu array. Array-array
ini bisa dirujuk dengan A[0], A[1], dan A[2]. Setiap baris bertipe int[].

Pernyataan A[1] merujuk pada salah satu baris pada array A. Karena A[1] itu
sendiri sebenarnya adalah array int, kita bisa menambah indeks lain untuk
merujuk pada posisi pada baris tersebut. Misalnya A[1][3] adalah elemen
nomor 3 pada baris 1. Seperti biasa, ingat bahwa posisi baris dan kolom
dimulai dari 0. Jadi pada contoh di atas, A[1][3] bernilai 5. Lebih umum lagi,
A[i][j] adalah posisi pada baris i dan kolom j. Seluruh elemen pada A bisa
dinamakan seperti berikut :

A[0][0] A[0][1] A[0][2] A[0][3]


A[1][0] A[1][1] A[1][2] A[1][3]
A[2][0] A[2][1] A[2][2] A[2][3]

A[i][j] adalah variabel bertipe int. Kita bisa mengisi nilainya atau
menggunakannya seperti variabel bertipe int biasa.

Perlu juga diketahui bahwa A.length akan memberikan jumlah baris pada A.
Untuk mendapatkan jumlah kolom pada A, kita harus mencari jumlah int
dalam setiap baris, yaitu yang disimpan pada A[0]. Jumlah kolom ini bisa
didapatkan dengan menggunakan A[0].length, atau A[1].length atau
A[2].length. (Tidak ada aturan baku yang menyatakan bahwa pada setiap baris
suatu array harus memiliki panjang yang sama, dan sebenarnya pada beberapa
aplikasi, juga digunakan array dengan panjang yang berbeda-beda pada setiap
barisnya. Akan tetapi apabila kita membuat array dengan perintah seperti di
atas, maka kita akan selalu mendapatkan array dengan panjang array yang
sama.)

Array 3 dimensi juga dibuat dan diolah dengan cara yang sama. Misalnya,
array 3 dimensi bertipe int bisa dibuat dengan pernyataan "int[][][] B = new
int [7][5][11];". Kita juga bisa mengilustrasikannya sebagai kubus 3-dimensi.
Masing-masing bloknya bertipe int yang bisa dipanggil dalam bentuk
B[i][j][k]. Array dimensi lain yang lebih tinggi juga mengikuti pola yang
sama, akan tetapi akan sangat sulit untuk membuat visualisasi struktur
arraynya.

Kita bisa mengisi array multi dimensi sekaligus pada saat dideklarasikan.
Ingat sebelumnya bagaimana array 1 dimensi biasa dideklarasikan, dan
bagaimana isinya diinisialisasikan, yaitu seperti daftar nilai-nilainya yang
dipisahkan dengan koma, dan diletakkan di dalam tanda kurung kurawal { dan
}.

Inisialisasi array bisa juga digunakan untuk array multi dimensi, yang terdiri
dari beberapa inisialisasi array 1 dimensi, masing-masing untuk setiap
barisnya. Misalnya, array A pada gambar di atas dapat dibuat dengan perintah
:

Int[][] A = { { 1, 0, 12, -1 },
{ 7, -3, 2, 5 },
{ -5, -2, 2, 9 }
};

Jika tidak ada inisialisasi yang diberikan untuk suatu array, maka nilainya
akan diisi dengan nilai awal tergantung pada tipenya : nol untuk bilangan,
false untuk boolean dan null untuk objek.

Seperti halnya array 1 dimensi, array 2 dimensi juga sering diolah dengan
menggunakan perulangan for. UNtuk mengolah semua elemen pada array 2
dimensi, kita bisa menggunakan pernyataan for bertingkat. Jika array A
dideklarasikan seperti

int[][] A = new int[3][4];

maka kita bisa mengisi 0 untuk semua elemen pada A dengan menggunakan
for (int baris = 0; baris < 3; baris++) {
for (int kolom = 0; kolom < 4; kolom++)
{ A[baris][kolom] = 0;
}
}

Pertama kali perulangan for bagian luar akan memproses dengan baris = 0.
Bagian dalamnya akan mengisi keempat kolom pada baris pertama, yaitu
A[0][0] = 0, A[0][1] = 0, A[0][2] = 0, dan A[0][3] = 0. Kemudian perulangan
for bagian luar akan mengisi baris kedua, dan seterusnya. Dan juga, kita bisa
menjumlah semua elemen pada A dengan

int jml = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; i++)
jml = jml + A[i][j];

Untuk mengolah array 3 dimensi, tentunya kita harus menggunakan


perulangan for bertingkat 3.

Suatu array 2 dimensi bisa digunakan untuk menyimpan data yang secara
alami memang tersusun sebagai baris dan kolom. Misalnya papan catur terdiri
dari 8 baris dan 8 kolom. Jika suatu kelas dinamakan PapanCatur untuk
merepresentasikan papan catur, maka kita bisa deklarasikan dengan perintah

PapanCatur[][] papan = new PapanCatur[8][8];

Kadang-kadang array 2 dimensi juga digunakan untuk masalah yang tidak


terlalu jelas matriksnya. Misalnya perusahaan yang memiliki 25 toko. Anggap
masing-masing toko memiliki keuntungan yang didapat pada masing-masing
toko tersebut setiap bulan pada tahun 2009. Jika toko-toko tersebut memiliki
nomor 0 hingga 24, dan 12 bulan dari Januari 09 hingga Desember 09
dinomori 0 hingga 11, maka data keuntungan dapat disimpan dalam array
untung yang dideklarasikan seperti :

double[][] untung = new double[25][12];

untung[3][2] adalah keuntungan yang dibuat oleh toko nomor 3 di bulan


Maret. Atau secara umum, untung[noToko][noBulan] adalah keuntungan toko
noToko pada bulan noBulan. Dalam contoh ini array 1 dimensi
untung[noToko] memiliki arti : Data keuntungan satu toko selama satu tahun.

Anggap array untung telah diisi dengan data. Data ini bisa diolah lebih lanjut.
Misalnya, total keuntungan seluruh perusahaan -- sepanjang tahun dari seluruh
toko -- dapat dihitung dengan menjumlahkan semua elemen pada array :

double totalUntung; // Total keuntungan perusahaan


tahun 2009
totalUntung = 0;
for (int toko = 0; toko < 25; toko++) {
for (int bulan = 0; bulan < 12; bulan++)
totalUntung += untung[toko][bulan];
}

Kadang-kadang kita juga perlu menghitung hanya satu baris atau satu kolom
saja, bukan keseluruhan array. Misalnya, kita ingin menghitung keuntungan
total perusahaan pada bulan Desember, yaitu bulan nomor 11, maka kita bisa
gunakan perulangan :

double untungDesember = 0.0;


for (noToko = 0; noToko < 25; noToko++)
untungDesember += untung[noToko][11];

Sekarang mari kita buat array 1 dimensi yang berisi total keuntungan seluruh
toko setiap bulan :

double[] untungBulanan; // Keuntungan setiap bulan


untungBulanan = new double[12];
for (int bulan = 0; bulan < 12; bulan++) {
// hitung total keuntungan semua toko bulan ini
untungBulanan[bulan] = 0.0;
for (int toko = 0; toko < 25; toko++)
{ untungBulanan[bulan] += profit[toko]
[bulan];
}
}

Sebagai contoh terakhir untuk mengolah array keuntungan, misalnya kita


ingin tahu toko mana yang menghasilkan keuntungan terbesar sepanjang
tahun. Untuk menghitungnya, kita harus menjumlahkan keuntungan setiap
toko sepanjang tahun. Dalam istilah array, ini berarti kita ingin mengetahui
jumlah setiap baris pada array. Kita perlu mencatat hasil perhitungannya untuk
mencari mana toko dengan keuntungan terbesar.

double untungMaks; // Keuntungan terbesar suatu toko


int tokoTerbaik; // Nomor toko yang memiliki
keuntungan terbesar
double total = 0.0; // Total keuntungan suatu
toko // Pertama-tama hitung keuntungan dari toko nomo
0 for (int bulan = 0; bulan < 12; bulan++)
total += untung[0][bulan];

tokoTerbaik = 0; // Mulai dengan anggapan toko nomor 0


untungMaks = total; // adalah toko paling
menguntungkan

// Sekarang kita lihat seluruh toko, dan setiap kali


// kita melihat toko dengan keuntungan lebih besar
dari
// untungMaks, kita ganti untungMaks dan
tokoTerbaik // dengan toko tersebut

for (toko = 1; toko < 25; toko++) {


// Hitung keuntungan toko tersebut sepanjang tahun
total = 0.0;
for (bulan = 0; bulan < 12; bulan++)
total += untung[toko][bulan];
// Bandingkan keuntungan toko ini dengan
untungMaks
if (total > untungMaks) {
untungMaks = total; // keuntungan terbesar
saat ini
tokoTerbaik = // datang dari toko ini
toko; }
} // akhir for

// Di sini, untungMaks adalah keuntungan terbesar dari


25 toko
// dan tokoTerbaik adalah toko dengan keuntung
tersebut
// (Mungkin juga ada toko yang menghasilkan
keuntungan // yang persis sama.)
LKS SMK
PENERAPAN POINTER

A. Rangkuman Materi
a. Pengenalan Array

Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara


pendeklarasian berbagai macam variabel dengan menggunakan tipe data
primitif. Dalam pendeklarasian variabel, kita sering menggunakan sebuah
tipe data beserta nama variabel atau identifier yang unik. Apabila kita
ingin menggunakan variabel tersebut, kita akan memanggil dengan nama
identifier-nya.

Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang
memiliki identifier berbeda untuk tiap variabel.

int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;

Seperti yang dapat Anda perhatikan pada contoh diatas, kode tersebut

akan sia-sia karena harus menginisialisasi dan menggunakan setiap

variabel padahal sebenarnya variabel-variabel tersebut digunakan untuk

tujuan yang sama. Pada bahasa pemrograman Java maupun di bahasa

pemrograman yang lain, terdapat sebuah kemampuan untuk

menggunakan satu variabel yang dapat menyimpan beberapa data dan

memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut

sebagai array.

Gambar 1. Contoh dari integer 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.

b. Pendeklarasian Array

Array harus dideklarasikan seperti layaknya sebuah variabel. Pada saat


mendeklarasikan array, anda harus membuat sebuah daftar dari tipe data,
yang diikuti oleh sepasang tanda kurung [], lalu diikuti oleh nama
identifier-nya. Sebagai contoh,
int []ages;
atau Anda dapat menempatkan sepasangtandakurung [] sesudah nama
identifier. Sebagai
contoh,
int ages[];

Setelah pendeklarasian array , kita harus membuat array dan menentukan


berapa panjangnya dengan sebuah konstruktor. Proses ini di Java disebut
sebagai instantiation (istilah dalam Java yang berarti membuat). Untuk
meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor.
Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan
konstruktor pada bagian selanjutnya. Sebagai catatan bahwa ukuran dari
array tidak dapat diubah setelah anda menginisialisasinya. Sebagai
contoh,
//deklarasi
int ages[];
//instantiate obyek
ages = new int[100];
atau bisa juga ditulis dengan,
//deklarasi dan instantiate
obyek
int ages[] = new
int[100];
Gambar 2. Inisialisasi Array
Pada contoh diatas, pendeklarasian tersebut akan memberitahukan
kepada compiler Java, bahwa identifier ages akan digunakan sebagai
nama array yang berisi data bertipe integer, dan dilanjutkan dengan
membuat atau meng-instantiate sebuah array baru yang terdiri dari 100
elemen.
Selain menggunakan sebuah pernyataan new untuk meng-instantiate
array, Anda juga dapat mendeklarasikan, membangun, kemudian
memberikan sebuah nilai pada array sekaligus dalam sebuah pernyataan.
Sebagai contoh,
//membuat sebuah array yang berisi variabel-
variabel
//boolean pada sebuah identifier. Array ini
terdiri dari 4
//elemen yang diinisilisasikan sebagai
value //{true,false,true,false}
boolean results[] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari


penginisialisasian
//4variabel double bagi value {100,90,80,75}
double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier


days. Array
//ini terdiri dari 7 elemen.
String days[] = { Mon, Tue, Wed, Thu,
Fri, Sat,
Sun};
c. Pengaksesan sebuah elemen array

Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian


dari array, Anda harus menggunakan sebuah angka atau yang disebut
sebagai indeks atau subscript.

Pada saat memasukkan nilai ke dalam array, sebuah nomor indeks atau
subscript telah diberikan kepada tiap anggota array, sehingga program
dan programmer dapat mengakses setiap nilai pada array apabila
dibutuhkan. Nilai indeks selalu dalam tipeinteger, dimulai dari
angkanol dan dilanjutkan ke angka berikutnya sampai akhir array.
Sebagai catatan bahwa indeks didalam array dimulai dari 0 sampai
dengan (ukuranArray-1).

Sebagai contoh, pada array yang kita deklarasikan tadi, kita mempunyai,

//memberikan nilai 10 kepada elemen pertama array


ages[0] = 10;
//mencetak elemen array yang terakhir
System.out.print(ages[99]);

Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi,


nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai
nol. Oleh karena itu, apabila Anda menggunakan tipe data seperti String,
array tidak akan diinisalisasi menjadi string kosong . Untuk itu Anda
tetap harus membuat String array secara eksplisit.

Berikut ini adalah contoh kode untuk mencetak seluruh elemen didalam
array. Dalam contoh ini digunakanlah pernyataan for loop, sehingga kode
kita menjadi lebih pendek.

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] )
;
}
}
}
Petunjuk penulisan program:

1. Biasanya, lebih baik menginisialisasi atau meng-instantiate array


setelah Anda mendeklarasikannya. Sebagai contoh pendeklarasiannya

int []arr = new int[100];

lebih disarankan daripada,

int []arr;
arr = new int[100];

2. Elemen-elemen dalam n-elemen array memiliki indeks dari 0 sampai


n-1. Perhatikan disini bahwa tidak ada elemen array arr[n]. Hal ini
akan menyebabkan array-index out-of-bounds exception.

3. Anda tidak dapat mengubah ukuran dari sebuah array

d. Panjang Array

Untuk mengetahui berapa banyak elemen didalam sebuah array, Anda


dapat menggunakan atribut length dari array. Atribut ini akan
mengembalikan ukuran dari array itu sendiri. Sebagai contoh,

arrayName.length

Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti


berikut ini,

public class ArraySample


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

Petunjuk penulisan program:


1. Pada saat pembuatan for loop untuk memproses elemen-elemen
dalam array, gunakanlah atribut length yang diletakkan di dalam
bagian pengkondisian dari for loop. Hal ini akan menyebabkan loop
secara otomatis menyesuaikan diri terhadap ukuran array yang
berbeda-beda.
2. Pendeklarasian ukuran array di program Java, biasanya menggunakan
sebuah konstanta untuk mempermudah. Sebagai contoh ,

Final int ARRAY_SIZE=1000; /pendeklarasian


constant
...
Int[] ages = new int[ARRAY_SIZE];

e. Array Multidimensi

Array multidimensi diimplementasikan sebagai array yang terl etak di


dalam array. Array multidimensi dideklarasikan dengan menambahkan
jumlah tanda kurung setelah nama array. Sebagai contoh,

// Elemen 512 x 128 dari integer array


int[][] twoD = new int[512][128];
// karakter array 8 x 16 x 24
char[][][] threeD = new char[8][16]
[24]; // String array 4 baris x 2 kolom
String[][] dogs = {{ "terry", "brown" },
{ "Kristin", "white" },
{ "toby", "gray"},
{ "fido",
"black"} };

Untuk mendeklarasikan variabel array, menspesifikasikan masing-


masing indeks menggunakan himpunan kurung siku yang lain. Array 2
dimensi bertipe int bernama intArr dideklarasikan dan diciptakan dengan
perintah sebagai berikut:

int int2DArr[][] = new() int [4][5];


Gambar 2. Array 2 dimensi 4x5

Perintah ini mendeklarasikan dan mengalokasikan array 4 kali 5 dan


memberikan ke variabel int2DArr. Secara internal matriks ini
diimplementasikan sebagai array dari array bertipe int. Secara konseptual
array ini digambarkan sebagai berikut:

Untuk mengakses sebuah elemen didalam array multidimensi, sama saja


dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses
elemen pertama dari baris pertama didalam array dogs, kita akan
menulis,

System.out.print( dogs[0][0] );

Kode diatas akan mencetak String terry di layar.

B. Tujuan
Agar siswa memahami bagaimana proses penerapan pointer khususnya
array pada pemrograman JAVA
C. Alat Dan Bahan
a. Software Netbeans
b. Kertas
c. Pena/alat tulis

D. Perintah Kerja
Buat program menggunakan array untuk menampilkan output:

E. Langkah-Langkah
a. Klik icon Netbeans 7.0 pada desktop, hingga muncul tampilan seperti pada
gambar di bawah ini

b. Klik menu file dan pilih New Project


c. Pada New Project Wizard, klik kategori Java dan pilih Java Application
kemudian klik Next

d. Kemudian langkah berikutnya ialah :

Pada field Project Name ketikkan CobaArray


Pada field project Location, secara default akan disimpan pada
direktori yang telah ditentukan.
Pada field Create Main Class ketikkan cobaarray.CobaArray
(pada Netbeans nama class mengikuti nama project yang kita ketikkan)
Kemudian set checkbox pada Set as main project dan Create
Main Class
Klik Finish
e. Selanjutnya ketikkan kode program di bawah ini pada code editor.

package cobaarray;

import java.io.*;
public class CobaArray {

public static void main(String[] args) throws


Exception{
// TODO code application logic here
String PanjangStr;
int i, Panjang;

BufferedReader br = new BufferedReader(new


InputStreamReader(System.in));

System.out.print("Masukkan Panjang array: ");


PanjangStr =br.readLine();
Panjang = Integer.parseInt(PanjangStr);

int[] bil = new int[Panjang];


// menyimpan nilai variabel panjang
menjadi indeks dari array bil

/* perulangan for i melakukan perulangan


dari *0 sampai sebanyak
* indeks dari array bil */
for( i=0; i<bil.length; i++ )
{
bil[i] = i; // menyimpan nilai
perulangan i ke indeks array bil ke-i
System.out.println( bil[i] );
//mencetak nilai dari indeks array bil ke-
i
}
}
}
f. Build project tersebut dengan memilih menu Run Build Main Project,
atau dengan menggunakan hotkey F11

g. Jika tidak ada kesalahan (BUILD SUCCESSFUL), jalankan project


tersebut dengan memilh menu Run Run Main Project, atau dengan
menggunakan hotkey F6

F. Tugas LKS
Berikut ini adalah program untuk mencari nilai rata-rata. Lengkapi kode
program berikut dengan mengisi titik-titik.
package helloworld;

.. //pendefinisian class array2


{ public static void main(String[] args)
{
//buatlah deklarasi array dengan variable X
bertipe data integer yang terdiri dari tiga bilangan

double rata=0.0;
//buatlah pendeklarasian dengan perintah for
untuk melakukan perulangan dari setiap nilai array yang di
deklarasikan
rata += x[i];
rata /=x.length;
System.out.println("nilai rata-rata= " +
rata); }
}

Output dari program di atas adalah


KUNCI LKS SMK
PENERAPAN POINTER

Jawaban program untuk mencari nilai rata-rata menggunakan array:


a. Jalankan Netbeans Anda
b. Lakukan langkah-langkah pengerjaan seperti contoh kasus sebelumnya.
c. Pada code editor Netbeans, ketikkan program berikut:
package helloworld;
public class array2 {
public static void main(String[] args)
{
int[] x = {70,80,60};

double rata=0.0;
for(int i=0;i<x.length;i++)
rata += x[i];
rata /=x.length;
System.out.println("nilai rata-rata= " +
rata);
}
}
LP 1 : PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Kerjakan secara individu tanpa membuka bahan ajar


1. Seperti record, array juga merupakan kumpulan item. Apa perbedaan
pemanggilan item pada array dan item pada record? (skor maksimal 10)

2. Jadi, apakah definisi array tersebut?(skor maksimal

3. Item pada array (maksudnya setiap anggota variabel dalam array tersebut)
sering juga disebut elemen array. Jelaskan apa yang dimaksud dengan elemen
array! (skor maksimal

4. Buatlah contoh pendefinisian array untuk variabel daftar bertipe integer


dengan banyaknya data maksimal 5. Berikan ilustrasi penyimpanan. (skor
maksimal

5. Buatlah contoh pencetakan elemen array untuk variabel nama. (skor maksimal

6. Pada array dinamis, apakah kita menentukan batas maksimum data yang kita
ingin masukkan? Jelaskan! (skor maksimal

7. Bagaimana pendeklarasian array dua dimensi variabel matriks bertipe integer


dengan banyaknya data untuk baris adalah 2 dan kolom juga 2! (skor
maksimal

8. Inisialisasikan isi dari array pada poin no 7 dengan data untuk kolom adalah 5
dan 9, sedangkan data untuk baris adalah 4 dan 8! (skor maksimal
KUNCI LP 1 PRODUK

1. Item pada record dipanggil dengan nama, sedangkan item pada array
dinomori, dan masing-masing item dipanggil besarkan nomor posisi pada
array tersebut.

2. kumpulan item bernomor yang semuanya bertipe sama. Jumlah item dalam
suatu array disebut panjang array. Nomor posisi dari array disebut indeks item
tersebut dalam array. Tipe dari item tersebut disebut tipe dasar dari array.

3. elemen array selalu dinomori mulai dari nol. Yaitu, indeks dari elemen
pertama suatu array adalah nol. Jika panjang array adalah N, maka indeks
elemen terakhir adalah N-1. Sekali array dibuat, maka panjangnya tidak bisa
diubah lagi.

4. Deklarasi variabel =

a. Int[5] daftar; atau


b. Daftar = new int[5];

Ilustrasi penyimpanan :

5. For (int i=0; i<nama.length; i++){


System.Out.println (nama[i]);
}
6. Kita tidak menentukan batas maksimum data yang kita perlukan. Yang
dilakukan ketika melakukan inisialisasi array dinamis, bagian array pada
variabel diisi dengan variabel juga yang sewaktu-waktu isi variabel tersebut
bisa kita ubah.

7. Deklarasi :
Int [2][2] matriks; atau Int[]
[] matriks= new int[2][2];

8. Inisialisasi isi pada array :

Int[][] matriks={{5, 4}, {9,8}};


Format Asesmen Kinerja Produk

No. Rincian produk yang diamati Skor Maksimal Skor Asesmen

1. Perbedaan pemanggilan item 10


2. Definisi array 15
3. Pengertian elemen array 10
4. Pendeklarasian variabel 10
5. Mencetak array 15
6. Pemahaman array dinamis 15
7. Deklarasi variabel array multidimensi 10
8. Inisialisasi variable pada array multidimensi 15
Jumlah skor 100
KRITERIA PENILAIAN KINERJA PRODUK 1

Kriteria
No. Rincian produk yang diamati

1. Perbedaan pemanggilan item 10 = menjawab dengan penjelasan benar


8 = menjawab dengan penjelasan hampir benar
5 = menjawab dengan penjelasan kurang benar
2. Definisi array 15 = mendefinisikan dengan benar
10 = definisi kurang tepat tetapi mendekati benar
5 = definisi kurang tepat
3. Pengertian elemen array 10 = pengertian benar
8 = pengertian mendekati benar
5 = pengertian belum tepat
4. Pendeklarasian variabel 10 = pendeklarasian benar
5 = pendeklarasian belum tepat
5. Mencetak array 15 = baris program benar
5 = baris program salah
6. Pemahaman array dinamis 15 = memahami array dinamis
10 = pemahaman masih belum tepat tetapi sudah
mendekati
5 = pemahaman salah
7. Deklarasi variabel array 10 = deklarasi benar
multidimensi 5 = deklarasi salah
8. Inisialisasi variable pada array 15 = inisialisasi benar
multidimensi 5 = inisialisasi salah
Jumlah skor benar 100

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai skor Assesmen

LP 2 : PROSES
Prosedur :
Rancanglah array agar bisa menyimpan data dan menghasilkan output program
seperti berikut :
1.

2.
KUNCI LP 2 : PROSES

1. Program utuhnya :
*/import java.io.*;
public class Tgs2 {
public void tampilMahasiswa() throws
IOException{ int telp1,telp2,telp3;
String
nama1,nama2,nama3,alamat1,alamat2,alamat3;
BufferedReader br = new BufferedReader
(new InputStreamReader(System.in));
System.out.println("====================");
System.out.print("Name :");
nama1=br.readLine();
System.out.print("Tel. #:");
telp1=Integer.parseInt(br.readLine());
System.out.print("Address :");
alamat1=br.readLine();
System.out.println("===================");
System.out.print("Name :");
nama2=br.readLine();
System.out.print("Tel. #:");
telp2=Integer.parseInt(br.readLine());
System.out.print("Address :");
alamat2=br.readLine();
System.out.println("=================");
System.out.print("Name :");
nama3=br.readLine();
System.out.print("Tel. #:");
telp3=Integer.parseInt(br.readLine());
System.out.print("Address :");
alamat3=br.readLine();

String[]nama={nama1,nama2,nama3};
String[]alamat={alamat1,alamat2,alamat3};
int[]telp={telp1,telp2,telp3};
System.out.println("Name :"+nama1);
System.out.println("Tel. #:"+telp1);
System.out.println("Address :"+alamat1);
System.out.println("Name :"+nama2);
System.out.println("Tel. #:"+telp2);
System.out.println("Address :"+alamat2);
System.out.println("Name :"+nama3);
System.out.println("Tel. #:"+telp3);
System.out.println("Address :"+alamat3);
}
}
class DataMahasiswa{
public static void main(String args[])throws
IOException{
BufferedReader br = new BufferedReader
(new InputStreamReader(System.in));
Tgs2 stikom = new Tgs2();
stikom.tampilMahasiswa();
}
}
2. import java.io.*; //Header Java

public class ArrayJava{ //Nama class


public static void main(String[]args){ //program utama
BufferedReader bilangan=new BufferedReader(new
InputStreamReader(System.in));
try{ //Pengdeklarasian tugas
int tanda=0; //variabel
int [] angka; //menyatakan tipe variabel
angka=new int[5]; //menyatakan variabel angka
System.out.println(Masukkan 5 Angka Pilihan Anda);
System.out.println(=====================);

for (int i=0;i < angka.length;i++){ //untuk looping ke


program utama
System.out.print(Masukkan Data ke +i+=);
angka[i]=Integer.parseInt(bilangan.readLine()); //untuk
memasukkan data ke variabel angka
}
System.out.println();
System.out.print(Masukkan Angka yang Dicari : );
int cari=Integer.parseInt(bilangan.readLine()); //untuk
memasukkan data ke variabel cari

for(int j=0;(j < angka.length && tanda == 0);j++){ //looping


untuk pencarian data yang dicari
if (cari == angka[j]) //untuk pencarian data tanda+
+; //untuk penanda berhenti apabila data sudah
ditemukan
}
if (tanda > 0){ //apabila data sudah ditemukan akan
menjalankan perintah dibawahnya
System.out.println();
System.out.println(Bilangan Tersebut Ada Dalam
Daftar); }else{ //apabila data tidak ditemukan
System.out.println();
System.out.println(Maaf Bilangan yang Anda Cari Tidak
Ada);
}
}
catch(Exception e){ //apabila input yang dimasukkan tidak
sesuai
System.out.println(Salah);}
}
}
Format Asesmen Kinerja Proses

No. Rincian Tugas Kinerja Skor Skor Asesmen


Maksimum
1. Merancang fungsi yang sesuai dengan output 50
program pada program 1
2. Merancang fungsi yang sesuai dengan output 50
program pada program 2
Skor Total 100
KRITERIA PENILAIAN 2 KINERJA PROSES

No. Rincian Tugas Kinerja Kriteria

1. Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 1 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP
2. Merancang fungsi yang sesuai 50 = dapat merancang fungsi yg sesuai dengan output
dengan output program pada 40 = fungsi yang dirancang atau output belum sesuai
program 2 dengan kunci LP tetapi sudah mendekati
20 = fungsi yang dirancang atau output belum sesuai
dengan kunci LP

Nilai akhir dihitung dengan rumus berikut :


NA = Nilai Skor Assesmen

LP 3 : PSIKOMOTOR
Prosedur :
1. Disiapkan sebuah komputer dan software netbeans untuk masing-masing
kelompok

2. Tugasi siswa untuk mengimplementasikan hasil perancangan program LP2


Proses pada software netbeans
3. Amati siswa dalam mengerjakan tugas tersebut
4. Berikan skor kinerja kelompok dengan mengacu pada format asesment kinerja
di bawah ini.
5. Berikan format ini kepada siswa sebelum asesmen dilakukan
6. Siswa diijinkan mengakses kinerja mereka sendiri dengan menggunakan
format ini.

Format Asesmen Kinerja Proses


No. Rincian Tugas Kinerja Skor Skor Asesmen
Maksimum Oleh Oleh
siswa guru
1. Membuka software netbeans 10
2. Mengetikkan baris program 1 15
3. Menjalankan program 1 15
4. Menghasilkan output yang sesuai dengan yang 15
ditugaskan
5. Mengetikkan baris program 1 15
6. Menjalankan program 1 15
7. Menghasilkan output yang sesuai dengan yang 15
ditugaskan
Skor Total 100
KRITERIA PENILAIAN 3 KINERJA PSIKOMOTOR

No. Rincian Tugas Kinerja Kriteria

1. Membuka software netbeans 10 = dapat membuka software netbeans dengan baik


dan menjalankannya
5 = kelompok perlu bantuan dalam membuka software
dengan baik dan menjalankannya
2. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
3. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
4. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 1 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Pemilihan
5 = output tidak sesuai dengan LKS 1 SMK : LP 2
Penerapan Fungsi Kontrol Pemilihan
5. Mengetikkan baris program 1 15 = mengetikkan baris program dengan baik,
kesalahan pengetikan dapat diperbaiki
kelompok secara bersama-sama
10 = mengetikkan baris program dengan baik, tetapi
tidak dapat memperbaiki kesalahan pengetikan
5 = masih kesulitan melakukan pengetikan baris
program
6. Menjalankan program 1 15 = dapat menjalankan program dengan baik, syntax
eror dapat diperbaiki kelompok bersama-sama
10 = dapat menjalankan program dengan baik tetapi
masih terdapat syntax eror yang tidak dapat
diperbaiki kelompok bersama-sama
5 = program tidak dapat berjalan dengan baik, dan
terdapat banyak syntax eror yang membutuhkan
penanganan guru
7. Menghasilkan output yang sesuai 15 = output sesuai dengan LKS 1 SMK : LP 2
dengan yang ditugaskan Penerapan Fungsi Kontrol Pemilihan
5 = output tidak sesuai dengan LKS 1 SMK : LP 2
Penerapan Fungsi Kontrol Pemilihan

Nilai akhir dihitung dengan rumus berikut :


NA = nilai skor assesmen

LP 4 : FORMAT PENGAMATAN PERILAKU BERKARAKTER


Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Perilaku Berkarakter


Rincian Tugas Kerja
No (D) (C) (B) (A)
(RTK)
1. Jujur
2. Tanggung jawab
3. Kerjasama
4. Disiplin
KRITERIA PENILAIAN PERILAKU BERKARAKTER

No Rincian Tugas Kinerja yang Diamati Rubrik


A: sangat jujur
B: jujur
1. Jujur
C: cukup jujur
D: kurang jujur
A: sangat bertanggung jawab
B: bertanggung jawab
2. Tanggung jawab
C: cukup bertanggung jawab
D: kurang bertanggung jawab
A: sangat antusias bekerjasama
B: bekerjasama
3. Kerjasama
C: cukup bekerjasama
D: kurang bekerjasama
A: sangat disiplin
B: disiplin
4. Disiplin
C: cukup disiplin
D: kurang disiplin
LP 5 : FORMAT PENGAMATAN KETERAMPILAN SOSIAL

Petunjuk :
Untuk setiap perilaku keterampilan sosial berikut ini, berilah penilaian atas
keterampilan sosial menggunakan skala berikut ini.
D = Memerlukan perbaikan B = Memuaskan
C = Menunjukkan kemajuan A = Sangat baik

Format Pengamatan Keterampilan Sosial

Rincian Tugas Kerja


No (D) (C) (B) (A)
(RTK)
1. Bertanya
3. Menyumbang ide atau
berpendapat
KRITERIA PENILAIAN KETERAMPILAN SOSIAL

No Rincian Tugas Kinerja yang diamati Rubrik


A: selalu bertanya
Bertanya B: sering bertanya
1.
C: jarang bertanya
D: tidak pernah bertanya
A: sangat sering berpendapat
Menyumbang ide atau berpendapat B: sering berpendapat
2.
C: cukup sering berpendapat
D: kadang berpendapat
RENCANA PELAKSANAAN PEMBELAJARAN (RPP)

Nama Sekolah : SMK Negeri 1 Gending


Mata Pelajaran : Menggunakan Bahasa Pemrograman Berorientasi Objek
Kelas : XII (Dua Belas)
Semester : 5 (Lima)
Jumlah Pertemuan : 4 Pertemuan

A. Standar Kompetensi
Merancang aplikasi teks dan desktop berbasis objek

B. Kompetensi Dasar
Menjelaskan class

C. Indikator
1. Kognitif
a. Produk
1) Mengetahui konsep dari class
2) Menjelaskan fungsi class
b. Proses
1) Mengidentifikasi perbedaan class dan objek
2) Mengidentifikasi class dalam sebuah program
2. Psikomotor
a. Membuat class
b. Menerapkan class dalam pemrograman
3. Afektif
a. Karakter
Jujur,Tanggung jawab, Kerjasama, Disiplin Percaya Diri
b. Keterampilan social
Bertanya, Berdiskusi
D. Tujuan Pembelajaran:
1. Kognitif
a. Produk:
1) Secara berkelompok siswa dapat mengetahui konsep dari class pada
LP 1 Produk sesuai Kunci LP 1 Produk.
2) Secara mandiri siswa dapat menjelaskan fungsi class pada LP 1
Produk sesuai Kunci LP 1 Produk.
b. Proses
1) Melalui contoh program, siswa dapat membedakan antara class dan
objek dengan benar.
2) Secara mandiri siswa dapat mengidentifikasi class yang ada pada
program dengan benar
2. Psikomotor:
a. Siswa dapat membuat class dalam bahasa pemrograman Java sesuai
rincian tugas kinerja yang ditentukan pada LP1 Psikomotor.
b. Siswa dapat menerapkan class dalam sebuah program
3. Afektif
a. Karakter
Melalui kegiatan belajar mengajar berpusat pada siswa, siswa dinilai
pengamat membuat kemajuan dalam menunjukkan perilaku
berkarakter meliputi:
1) Jujur : siswa mengerjakan sendiri semua penugasan yang diberikan
oleh guru.
2) Tanggung jawab : siswa berhati-hati dalam menggunakan computer
pada saat mengerjakan LP1 psikomotor.
3) Kerja keras : melalui kebersamaan siswa berusaha sekuat tenaga dan
pikiran untuk mengetahui konsep class.
4) Disiplin : siswa mengerjakan tugas dan mengumpulkan hasilnya
tepat waktu.
5) Percaya diri: dengan yakin siswa mengerjakan tugas secara
independent tidak saling menggantungkan diri kepada teman lain.
b. Keterampilan social
Melalui kegiatan belajar mengajar berpusat pada siswa, siswa dinilai
membuat kemajuan dalam menunjukkan keterampilan sosial meliputi:
1) Bertanya : siswa mampu mengajukan pertanyaan yang berkualitas
ketika siswa mendapat kesulitan atau belum mengerti dalam tugas
yang dikerjakan.
2) Berdiskusi: siswa dapat berkomunikasi secara aktif dalam
menyelesaikan tugas.

E. Materi Ajar :
1. class dalam pemrograman OOP
2. Interface class pada program
3. Penerapan class dalam program

F. Alokasi Waktu : 20 x 45 menit

G. Model dan Metode Pembelajaran


1. Model Pembelajaran : Model Pembelajaran Kooperatif, model
pembelajaran langsung, model pembelajaran berbasis masalah.
2. Metode Pembelajaran : Diskusi dan pemberian tugas

H. Alat
PC, buku materi, modul

I. Bahan
LP1, LP2, LP3, LP4, LP5
J. Kegiatan Pembelajaran
Tabel Proses Belajar Mengajar Pertemuan I
Kegiatan Penilaian

1 2 3 4

Pendahuluan ( 15 menit)
1. Membuka pelajaran dengan mengucapkan salam,
kemudian mengabsen siswa. (fase 1 MPK)
2. Mengingatkan siswa dengan materi pelajaran dasar-
dasar pemrograman berbasis desktop. (fase 1 MPK)
3. Menyampaikan tujuan pembelajaran produk, proses,
karakter dan keterampilan sosial. (fase 1 MPK)
Kegiatan Inti ( 150 menit)

Menyajikan informasi
1. Menggali pengetahuan siswa tentang konsep OOP
(Object oriented programming), dengan menjunjuk
beberapa siswa untuk diberi pertanyaan.(Fase 2 MPK)
2. Mengorganisasikan siswa untuk belajar dengan
menugaskan seorang siswa untuk bertanggung jawab
mengorganisasikan siswa dalam kelompok-kelompok
kooperatif yang beranggotakan 3-4 orang siswa. (Fase
3 MPK).
3. Membagikan modul: Class dalam OOP. (Fase 3 MPK)
4. Membimbing kelompok untuk menjawab rumusan
masalah yang diberikan tadi, serta menjawab
pertanyaan dengan mengacu pada LP 1 : Produk yaitu
mengetahui konsep dasar dan fungsi class. Guru
mendorong siswa untuk memiliki rasa jujur,
tanggungjawab, kerja keras, disiplin dan percaya diri
(Fase 4 MPK)
5. Memberikan kesempatan kepada siswa untuk bertanya
jika ada yang kurang jelas dari penjelasan yang sudah
diberikan. (Fase 4 MPK)
6. Melakukan evaluasi formatif dengan cara meminta
satu-dua kelompok menanggapi kelompok lain.
Siswa yang menunjukkan kerja sama dan
menyumbang ide atau berpendapat segera diberi
pujian sebagai umpan balik. (Fase 5 MPK)
Kegiatan Akhir ( 15 menit)
1. Dengan melibatkan siswa menutup pelajaran dan
memberi PR, memberikan kesimpulan kegiatan
pembelajaran

Tabel Proses Belajar Mengajar Pertemuan II


Kegiatan Penilaian

1 2 3 4

Pendahuluan ( 15 menit)
1. Membuka pelajaran dengan mengucapkan salam,
mengingatkan siswa agar selalu semangat dalam
mengikuti pelajaran. (fase 1 MPK)
2. Mengulas kembali materi konsep dasar class. (fase 1
MPK)
3. Menyampaikan tujuan pembelajaran produk, proses,
karakter dan keterampilan sosial. (fase 1 MPK)
Kegiatan Inti ( 150 menit)

Menyajikan informasi
1. Menjelaskan materi tentang object dalam OOP.(Fase 2
MPK)
2. Mengingatkan kembali materi class dengan menunjuk
beberapa siswa untuk menjawab pertanyaan tentang
konsep dasar class. (fase 2 MPK)
3. Mempersilahkan siswa untuk bergabung dengan
kelompok masing-masing dan memberikan
permasalahan yang harus dipecahkan berdasarkan
berbagai referensi yang dapat diakses oleh siswa.
(Fase 3 MPK).
4. Membimbing kelompok untuk menjawab
rumusan masalah pada LP2 Proses yaitu
mengidentifikasi perbedaan antara class dan object.
Dalam mengerjakan tugas Guru mengawasi dan
memotivasi siswa untuk memiliki rasa jujur,
tanggungjawab, kerja keras, disiplin dan percaya
diri agar pekerjaan yang dihasilkan dapat benar-
benar dimengerti oleh masing-masing anggota
kelompok. (Fase 4 MPK)
5. Memberikan kesempatan kepada siswa untuk bertanya
jika mengalami permasalahan dalam
mengerjakan tugas, memberikan kesempatan kepada
siswa untuk menjawab pertanyaan rekan siswa
yang kesulitan. (Fase 4 MPK)
6. Melakukan evaluasi formatif dengan cara meminta
satu-dua kelompok mempresentasikan hasil kerja
di depan. Kelompok lain mendengarkan dan
memberikan
Kegiatan Akhir tanggapan.
( 15 menit) (Fase 5 MPK)
1. Secara bersama-sama dengan siswa
menyimpulkan pelajaran kemudian menutup

Tabel Proses Belajar Mengajar Pertemuan III


Kegiatan Penilaian

1 2 3 4

Pendahuluan ( 15 menit)
1. Membuka pelajaran dengan mengucapkan salam,
mengajak siswa berdoa dan membangkitkan motivasi
belajar siswa dengan menunjukkan produk-produk
rekayasa perangkat lunak. (fase 1 MPK)
2. Mengulas kembali materi mengidentifikasi perbedaan
antara class dan object dalam OOP. (fase 1 MPK)
3. Menyampaikan tujuan pembelajaran produk, proses,
karakter dan keterampilan sosial. (fase 1 MPK)
Kegiatan Inti ( 150 menit)

Menyajikan informasi
1. Memberikan pertanyaan kepada beberapa siswa
tentang perbedaan anatar class dan object,
memberikan pujian kepada siswa yang
dengan benar dan memebrikan motivasi kepada
siswa yang belum dapat menjawab pertanyaan.
(Fase 2 MPK)
2. Mengorganisasikan siswa untuk bergabung dengan
kelompok masing-masing dan memberikan
permasalahan LP2 proses yaitu mengidentifikasi class
dan object dalam sebuah program. Masing-masing
kelompok diberikan soal yang sama. (fase 3 MPK)
3. Membimbing kelompok untuk menjawab
rumusan masalah yang telah diberikan.
Mengkondisikan siswa untuk tidak bekerjasama
dengan kelompok lain. (Fase 3 MPK)
4. Memberikan kesempatan kepada tiap kelompok untuk
mempresentasikan hasil kerja di depan kelas.
Kelompok lain diberi kesempatan untuk mengajukan
pertanyaan dan sanggahan. Mengkondisikan siswa
agar dapat berdiskusi dengan cara yang baik dan
saling menghargai walaupun berbeda pendapat. (Fase
4 MPK)
7. Secara langsung meluruskan pemahaman siswa dalam
memahami materi agar tidak menjadi kesalahan yang
berkelanjutan dikemudian hari.(fase 5 MPK)
Kegiatan Akhir ( 15 menit)
1. Memberikan pujian kepada hasil kerja siswa dan
secara bersama-sama menyimpulkan materi pelajaran.

Tabel Proses Belajar Mengajar Pertemuan IV


Kegiatan Penilaian

1 2 3 4

Pendahuluan ( 15 menit)
1. Membuka pelajaran dengan mengucapkan salam,
kemudian mengabsen siswa. (fase 1 MPL)
2. Mengkondisikan agar siswa siap mengikuti pelajaran,
dengan memberikan motivasi dan semangat baru
dalam belajar. (fase 1 MPL)
4. Menyampaikan tujuan pembelajaran produk, proses,
karakter dan keterampilan sosial. (fase 1 MPL)
Kegiatan Inti ( 150 menit)

Menyajikan informasi
1. Mengkondisikan siswa untuk siap mengikuti
praktikum dan menghimbau untuk tetap
memperhatikan kesehatan dan keselamatan kerja
dalam praktikum komputer. (fase 2 MPL)
2. Membagikan modul praktik: membuat class serta
memberikan contoh class. (Fase 2 MPL)
3. Menjelaskan langkah-langkah dalam membuat class.
(Fase 3 MPK).
4. Membagikan modul: Class dalam OOP. (Fase 3 MPL)
5. Membimbing siswa untuk menyelesaikan masalah
rumusan masalah yang telah diberikan (LP3
psikomotor). Guru mendorong siswa untuk
memiliki rasa jujur, tanggungjawab, kerja keras,
disiplin dan percaya diri agar permasalahan dapat
diselesaikan dan dapat dimengerti dengan baik (Fase 3
MPL)
6. Memberikan kesempatan kepada siswa untuk
mempresentasikan hasil kerja didepan kelas.
Teman yang lain memberi masukan dan
pertanyaan, membimbing siswa agar dapat
bertanyajawab dengan baik. (Fase 4 MPL)
7. Melakukan evaluasi terhadap hasil pekerjaan siswa
kemudian memberikan kesempatan kepada
siswa untuk membuat sediri class dengan tema yang
mereka inginkan. (Fase 5 MPL)
Kegiatan Akhir ( 15 menit)
1. Dengan melibatkan siswa menutup pelajaran dan
memberikan kesimpulan kegiatan pembelajaran.

Tabel Proses Belajar Mengajar Pertemuan V


Kegiatan Penilaian

1 2 3 4

Pendahuluan ( 15 menit)
1. Membuka pelajaran dengan mengucapkan salam,
kemudian mengabsen siswa. (fase 1 PBM)
2. Menjelaskan pentingnya class dalam pembuatan
sebuah program. (fase 1 PBM)
3. Mengingatkan siswa tentang langkah-langkah
membuat class. (fase 1 PBM)
4. Menyampaikan tujuan pembelajaran produk, proses,
karakter dan keterampilan sosial. (fase 1 PBM)
Kegiatan Inti ( 150 menit)

Menyajikan informasi
1. Mengkondisikan siswa untuk kelompok, memberikan
permasalahan LP3 psikomotor: menerapan class
dalam pemrograman. Siswa diberikan kebebasan
dalam membuat program dengan tujuan merangsang
siswa untuk berfikir kreatif dan mandiri. (Fase 2
PBM).
2. Membimbing kelompok untuk menjawab
rumusan masalah yang telah diberikan. Mendorong
siswa untuk memiliki rasa jujur, tanggungjawab,
kerja keras, disiplin dan percaya diri.
Memfasilitasi kesulitan siswa dalam membuat
program (Fase 3 PBM)
3. Meminta beberapa kelompok untuk mempresentasikan
hasil karya di depan kelas, teman yang lain
memberikan pertanyaan dan masukan.
Mengkondisikan siswa agar dapat berdiskusi dengan
baik. (Fase 4 MPK)
4. Bersama-sama siswa guru melakukan analisis dan
evaluasi proses pemecahan masalah dalam hal ini
mengkritisi hasil program yang telah dibuat siswa.
Guru memberikan pujian dan penguatan terhadap hasil
kerja siswa (Fase 5 MPK)
Kegiatan Akhir ( 15 menit)
1. Dengan melibatkan siswa menutup pelajaran dan
memberi PR, memberikan kesimpulan kegiatan
pembelajaran.
K. Penilaian Hasil Belajar
1. LP 1: Produk dilengkapi dengan Kunci LP 1.
2. LP 2: Proses dilengkapi dengan Kunci LP 2.
3. LP 3: Psikomotor.
4. LP 4: Format Pengamatan Keterampilan Karakter.
5. LP 5: Format Pengamatan Keterampilan Sosial.
6. Tabel Spesifikasi Lembar Penilaian.

L. Sumber Belajar
1. LKS SMK
2. Kunci LKS SMK:
3. LP 1 : Produk dilengkapi dengan Kunci LP 1.
4. LP 2 : Proses dilengkapi dengan Kunci LP 2.
5. LP 3 : Psikomotor
6. LP 4 : Pengamatan Perilaku Berkarakter
7. LP 5 : Pengamatan Keterampilan Sosial
8. Tabel Spesifikasi Lembar Penilaian
9. Silabus
MODUL SMK
CLASS DALAM APLIKASI TEKS DAN DESKTOP BERBASIS OBJEK

1. Konsep OOP
OOP berputar pada konsep dari object sebagai dasar element dari program
anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan
beberapa objek disekitar kita, seperti mobil, singa, manusia dan seterusnya. Object
ini dikarakterisasi oleh sifat / attributnya dan tingkah lakunya. Contohnya, objek
sebuah mobil mempunyai sifat tipe transmisi, warna dan manufaktur. Mempunyai
kelakuan berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita
dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Dengan
deskripsi ini, objek pada dunia nyata dapat secara mudah dimodelisasi sebagai
objek software menggunakan sifat sebagai data dan tingkah laku sebagai method.
Data disini dan method dapat digunakan dalam pemrograman game atausoftware
interaktif untuk menstimulasi objek dunia nyata. Contohnya adalah sebagai
software objek mobil dalam permainan balap mobil atau software objek
singadalam sebuah software pendidikan interaktif pada kebun binatang untuk
anak anak.

2. Pengertian class
Pada dunia software, sebuah objek adalah sebuah komponen software
yang stukturnya mirip dengan objek pada dunia nyata. Setiap objek dibuat dari
satu set data (sifat) dimana variable menjabarkan esensial karakter dari objek, dan
juga terdiri dari satu set dari methode (tingkah laku) yang menjabarkan bagaimana
tingkah laku dari objek. Jadi objek adalah sebuah berkas software dari variable
dan method yg berhubungan. Variable dan methods dalam objek Java scara
formal diketahui sebagai instance variable dan instance methods untuk
membedakannya dari variable klas dan method klas, dimana akan dibahas
kemudian.
Program-program yang ditulis menggunakan Java selalu menggunakan
kelas-kelas (class) yang mencerminkan objek-objek (object) yang sesungguhnya
hadir di dunia nyata. Hal ini berarti saat kita akan membuat program
menggunakan bahasa pemograman Java, kita harus mempertimbangkan objek-
objek apa saja yang semestinya hadir dalam program kita dan bukannya semua
objek yang ada di dunia nyata, dimana proses ini sering disebut sebagai abstraksi,
suatu kelas pada umumnya memiliki data/atribut yang berfungsi untuk
mendeskripsikan (menerangkan) kelas yang bersangkutan, dan juga pada
umumnya memiliki metode/fungsi yang menjelaskan apa yang akan/bisa
dilakukan oleh kelas yang bersangkutan.
Kelas merupakan konsep pokok di bahasa pemograman berorientasi
object, demikian juga di Java. Kelas merupakan bentuk logis yang menjadi
landasan bangun seluruh bahasa pemograman berorientasi object. Kelas
mendefinisikan bentuk dan perilaku object. Kelas sungguh sangat penting di Java.
Sembarang konsep/abstraksi yang diimplementasikan di Java harus di kapsulkan
di kelas.
Pemograman Java tidak mungkin dipisahkan dari kelas. Penggunaan
terpenting kelas adalah dalam pendefinisian type baru. Kelas adalah
template/prototype yang mendefinisikan type object. Kelas merupakan sarana
pengkapsulan kumpulan data dan metode-metode yang beroperasi pada kumpulan
data. Data dan metode untuk mendefinisikan isi dan kamampuan object. Kelas
adalah cetakan object. Object harus merupakan instan suatu kelas. Kelas
digunakan untuk menciptakan banyak object. Object-object dari kelas yang
sama mempunyai data sendiri tapi berbagi implementasi metode dengan object-
object lain di satu kelas. Kelas dapat merupakan realisasi/implementasi
abstraksi di domain persoalan.
Kelas merupakan blok pembangun terpenting di pendekatan berorientasi
object. Kelas adalah tipe data abstrak yang dilengkapi implementasi parsial atau
total. Kelas mendeskripsikan kelompok object dengan properti-properti (atribut-
atribut) serupa, perilaku (operasi-operasi) yang common, keterhubungan terhadap
himpunan object-object lain dan semantik yang common. Seperti juga tipe data
abstrak, kelas mendeskripsikan sekelompok struktur data yang dapat dibentuk
oleh kelas, disebut instan kelas atau object.
3. Berikut ini adalah kegunaan kelas :
a. Mengelompokkan object-object menjadi kelas-kelas berarti
mengabstraksikan persoalan yang dihadapi. Abstraksi memberi daya
keampuhan pemodelan dan memberikan kemampuan generalisasi
beberapa kasus spesifik menjadi induk kasus-kasus yang serupa.
b. Definisi-definisi common (seperti nama kelas dan atribut) cukup disimpan
sekali per kelas bukan sekali per instan kelas (object). Operasi-operasi
dapat ditulis sekali per kelas. Semua object dalam kelas mendapat manfaat
penggunaan kembali (reuse) kode itu.

4. Perbedaan Class dan Object


Kelas (class) merupakan contoh abstrak dari sebuah object yang telah
terbentuk dari proses penyederhanaan. Dengan kata lain kelas (class) merupakan
cikal bakal dari object. Kemudian contoh nyata atau perwujudan dari sebuah
object dinamakan instance. Sehingga apabila kita mempunyai sebuah kelas
manusia, maka beberapa instances (wujud nyata) dari kelas manusia adalah Prima,
Aulia, Dewi dan masih banyak yang lainnya. Perhatikan table dibawah ini untuk
perbedaan kelas dan object dalam OOP.
Tabel Perbedaan Kelas dan Objek
Kelas (class) Objek (object)
class merupakan rancangan (design) Object merupakan perwujudan suatu class
class bersifat abstract Object bersifat konkrit

Ketika mendeklarasikan class, sebelum kata kunci class, kita dapat


memberi modifier. Modifier mempengaruhi makna deklarasi. Modifier yang
berlaku untuk kelas adalah antara lain modifier ketampakan (visibility modifier).
Modifier ini mengatur izin pengaksesan kelas oleh kelas-kelas lain. Selain itu
adalah modifier untuk mengatur apakah kelas tersebut dapat diwarisi atau tidak,
modifier final akan membuat kelas itu tidak dapat diwarisi. Modifier lainnya
adalah abstract untuk mengatakan apakah kelas merupakan kelas abstrak yang
belum diimplementasikan serta mengharapakan kelas turunannya yang harus
mengimplementasikan metode-metode darinya.
Klas adalah sturktur dasa dari OOP. Dia terdiri dari dua tipe dari anggota
dimana disebut dengan field (attribut/properti) dan method. Field mespesifikasi
tipe data yang didefinisikan oleh class, sementara methode spesifikasi dari
operasi. Sebuah objek adalah sebuah instance pada class. Untuk dapat
membedakanantara class dan obect, mari kita mendiskusikan beberapa contoh.
Apa yang kita miliki disini adalah sebuah class mobil dimana dapat digunakan
untuk medefinisikan beberapa object mobil. Pada table dibawah, mobil A dan
mobil B adalah objek dari kelas mobil. Kelas memiliki field plat nomer, warna,
manufaktur, dan kecepatan yang diisi dengan nilai korespondendi pada objek
mobil A dan mobil B. mobil juga dapat berakselerasi, berbelok dan mengerem.
Tabel Kelas Mobil
Car class Object car A Object car B
Instance variables Plate number AA BB
Color Blue Red
Manufacturer Mitsubishi Toyota
Current speed 50 km/h 100 km/h
Instance method Acceleration method
Turn method
Brake method

Ketika diinisialisi, tiap objek mendapat satu set baru dari state variable.
Bagaimanapun, implementasi dari method dibagi diantara objek pada kelas yang
sama. Kelas menyediakan keuntungan dari reusability. Software programmers
dapat digunakan dari sebuah kelas lagi dan lagi untuk membuat beberapa objek.

5. Instansiasi Class
Untuk membuat sebuah objek atau sebuah instance pada sebuah kelas. Kita
menggunakan operator baru. Sebagai contoh, jika anda ingin membuat instance
dari kelas string, kita menggunakan kode berikut :
String str2 = new String(Hello world!);
or also equivalent to,
String str2 = "Hello";

6. Mendefinisikan Class Anda


Sebelum menulis class Anda, pertama pertimbangkan dimana Anda akan
menggunakan class dan bagaimana class tersebut akan digunakan. Pertimbangkan
pula nama yang tepat dan tuliskan seluruh informasi atau properti yang ingin
Anda isi pada class. Jangan sampai terlupa untuk menuliskan secara urut method
yang akan Anda gunakan dalam class. Dalam pendefinisian class, dituliskan :
<modifier> class <name>
{ <attributeDeclaration>*
<constructorDeclaration>*
<methodDeclaration>*
}

dimana :
<modifier> adalah sebuah access modifier, yang dapat dikombinasikan dengan
tipe modifier lain. Pada bagian ini, kita akan membuat sebuah class yang berisi
record dari siswa. Jika kita telah mengidentifikasikan tujuan dari pembuatan kelas,
maka dapat dilakukan pemberian nama yang sesuai. Nama yang tepat pada class
ini adalah StudentRecord. Untuk mendefinisikan class, kita tuliskan :
public class StudentRecord
{
//area penulisan kode
selanjutnya }
dimana,

Public - Class ini dapat diakses dari luar package


Class - Keyword yang digunakan di pembuatan class Java
StudentRecord - Identifier yang menjelaskan class Deklarasi Atribut
Dalam pendeklarasian atribut, kita tuliskan :
<modifier> <type> <name> [= <default_value>];
Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class.
Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan.
Contohnya, Anda tidak mungkin menginginkan untuk menggunakan tipe data
integer untuk nama siswa, atau tipe data string pada nilai siswa. Berikut ini adalah
contoh informasi yang akan diisikan pada class StudentRecord :
name - String
address - String
age - Int
math grade - double
english grade - double
science grade - double
average grade - double
7. Class Body
Class Body merupakan bagian dari kelas yang mendeklarasikan kode-kode
program (program codes) Java. Class Body bisa dibedakan menjadi tiga bagian
utama dari sebuah kelas sebagai behavior dari kelas dan object. Tiga bagian utama
yang dimaksud adalah :
a. Konstruktor (constructor) digunakan untuk instansiasi object
b. Variabel (variable) menyatakan atau sebagai keadaan (state) dari kelas dan
objek
c. Metode (method) berupa fungsi-fungsi (functions) atau prosedur-prosedur

8. contoh program object dan class


class EqualsTest {
public static void main(String[] arguments)
{ String str1, str2;
str1 = "Free the bound periodicals.";
str2 = str1;

System.out.println("String1: " + str1);


System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));

str2 = new String(str1);

System.out.println("String1: " + str1);


System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}
LKS SMK

Buatlah program sebagai berikut:


1. Contoh 1
/*Manusia.java*/
//Mendefinisikan class Manusia
public class Manusia
{
private String
nama; //construktor
public Manusia()
{
this("");
}
//construktor
public Manusia(String nama)
{
this.nama =
nama; }
//method
public String getNama()
{
return
nama; }
//method
public void bilangHelloKe(Manusia m)
{
System.out.printf("%s: Hello %s\n", getNama(),
m.getNama());
}
}

Source code diatas mendefinisikan sebuah class Manusia yang nantinya


digunakan pada program utama untuk membentuk object. Perhatikan contoh
berikut

.
2. Contoh 2

public class Hello


{
public static void main(String []args)
{
//mendeklarasikan a & b sebagai objek dari class
Manusia
Manusia a, b;
//a & b merupakan instance baru dari Manusia
a = new Manusia("Kormel");
b = new Manusia("Cewek");
//mengirim pesan ke object untuk melakukan suatu
aksi
a.bilangHelloKe(b);
b.bilangHelloKe(a);
}
}

3. Contoh Program:

//class
class Mobil
{ String
warna; int
tahun; String
merek;
}

class object {
public static void main(String[]args)
{ //object
Mobil G8 = new Mobil();
Mobil Jazz = new
Mobil(); //pemberian nilai
G8.warna = "Yellow";
G8.tahun = 2012;
G8.merek = "Audi";
Jazz.warna = "red";
Jazz.tahun = 2007;
Jazz.merek = "Honda";
//menampilkan
System.out.println("G8");
System.out.println("warna :" +G8.warna);
System.out.println("tahun :" +G8.tahun);
System.out.println("merek :" +G8.merek);
System.out.println("");
System.out.println("Jazz");
System.out.println("warna :" +Jazz.warna);
System.out.println("tahun :" +Jazz.tahun);
System.out.println("merek :" +Jazz.merek);
}
}

4. contoh lainnya:

//class
class Orang {
//state
String nama; //nama orang
int tinggibadan; //dalam cm
int beratbadan; //dalam kg
String warnarambut; //hitam, pirang, coklat
String warnakulit; // sawomatang, hitam,
String jeniskelamin; putih //pria atau wanita
boolean berkacamata; //bila berkacamata berarti true
//method
void menangis() {
System.out.println("hik...hikk...hik..");
}
void tertawa()
{ System.out.println("ha..ha...ha...ha...")
;
}
}

class objectorang {
public static void main(String[]args)
{ //mebuat object
Orang orang1 = new Orang();

//pemberian nilai
orang1.nama = "Aby";
orang1.tinggibadan = 170;
orang1.beratbadan = 55;
orang1.warnarambut = "hitam";
orang1.warnakulit = "putih";
orang1.jeniskelamin = "pria";
orang1.berkacamata = false;

//menampilkan
System.out.println("nama :" +orang1.nama);
System.out.println("tinggi :"
+orang1.tinggibadan);
System.out.println("berat :"
+orang1.beratbadan);
System.out.println("warna rambut :"
+orang1.warnarambut);
System.out.println("warna kulit :"
+orang1.warnakulit);
System.out.println("jenis kelamin :"
+orang1.jeniskelamin);
System.out.println("berkacamata :"
+orang1.berkacamata);
//pemanggilan method
orang1.tertawa();
}
}
LP1 PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

A. Konsep dasar class


1. Jelaskan apa yang dimaksud dengan class? (skor 20)
2. Mengapa class dibutuhkan dalam program? (skor 20)
3. Jelaskan kegunaan object dalam program? (skor 20)
4. Jelaskan langkah-langkah membuat class? (skor 20)
5. Jelaskan konsep OOP? (skor 20)

B. Identifikasi perbedaan class dan object

Jelaskan perbedaan antara class dan object


Kriteria penilaian
No Kriteria Skor Kriteria kelengkapan Skor Skor total
kejelasan
1 Kurang jelas 12,5 Kurang lengkap 12,5
2 Cukup jelas 25 Cukup lengkap 25
3 Jelas 37,5 Lengkap 37,5
4 sangat jelas 50 Sangat lengkap 50
Skor

Skor total= skor kejelasan + skor kelengkapan


KUNCI LP 1 PRODUK

1. Class adalah Kelas merupakan bentuk logis yang menjadi landasan bangun
seluruh bahasa pemograman berorientasi object. Kelas mendefinisikan
bentuk dan perilaku object. Kelas sungguh sangat penting di Java.
Sembarang konsep/abstraksi yang diimplementasikan di Java harus di
kapsulkan di kelas.
2. Karena klass berfungsi untuk

a. Mengelompokkan object-object menjadi kelas-kelas berarti


mengabstraksikan persoalan yang dihadapi. Abstraksi memberi daya
keampuhan pemodelan dan memberikan kemampuan generalisasi
beberapa kasus spesifik menjadi induk kasus-kasus yang serupa.
b. Definisi-definisi common (seperti nama kelas dan atribut) cukup
disimpan sekali per kelas bukan sekali per instan kelas (object).
Operasi-operasi dapat ditulis sekali per kelas. Semua object dalam
kelas mendapat manfaat penggunaan kembali (reuse) kode itu.
3. Object adalah perwujutan dari class yang dikarakterisasi oleh sifat /
attributnya dan tingkah lakunya. Contohnya, objek sebuah mobil
mempunyai sifat tipe transmisi, warna dan manufaktur. Mempunyai
kelakuan berbelok, mengerem dan berakselerasi.
4. Jelaskan hubungan antara class dan object
Kelas (class) merupakan contoh abstrak dari sebuah object yang telah
terbentuk dari proses penyederhanaan. Dengan kata lain kelas (class)
merupakan cikal bakal dari object. Kemudian contoh nyata atau
perwujudan dari sebuah object dinamakan instance. Sehingga apabila kita
mempunyai sebuah kelas manusia, maka beberapa instances (wujud nyata)
dari kelas manusia adalah Prima, Aulia, Dewi dan masih banyak yang
lainnya
5. Object adalah

OOP berputar pada konsep dari object sebagai dasar element dari program
anda. Ketika kita membandingkan dengan dunia nyata, kita dapat
menemukan beberapa objek disekitar kita, seperti mobil, singa, manusia
dan seterusnya. Object ini dikarakterisasi oleh sifat / attributnya dan
tingkah lakunya. Contohnya, objek sebuah mobil mempunyai sifat tipe
transmisi, warna dan manufaktur. Mempunyai kelakuan berbelok,
mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat
mendefinisikan perbedaan sifat dan tingkah laku dari singa. Dengan
deskripsi ini, objek pada dunia nyata dapat secara mudah dimodelisasi
sebagai objek software menggunakan sifat sebagai data dan tingkah laku
sebagai method.
LP2 PROSES

Identifikasilah class dan object dalam program berikut ini

Contoh Program 1

class Mobil {
String warna;
int tahun;
String merek;
}

class object {
public static void main(String[]args) {
Mobil G8 = new Mobil();
Mobil Jazz = new
Mobil(); //pemberian nilai
G8.warna = "Yellow";
G8.tahun = 2012;
G8.merek = "Audi";
Jazz.warna = "red";
Jazz.tahun = 2007;
Jazz.merek = "Honda";
//menampilkan
System.out.println("G8");
System.out.println("warna :" +G8.warna);
System.out.println("tahun :" +G8.tahun);
System.out.println("merek :" +G8.merek);
System.out.println("");
System.out.println("Jazz");
System.out.println("warna :" +Jazz.warna);
System.out.println("tahun :" +Jazz.tahun);
System.out.println("merek :" +Jazz.merek);
}
}
contoh program 2

class Orang {

String nama; //nama orang


int tinggibadan; //dalam cm
int beratbadan; //dalam kg
String warnarambut; //hitam, pirang, coklat
String warnakulit; // sawomatang, hitam, putih
String jeniskelamin; //pria atau wanita
boolean berkacamata;
//bila berkacamata berarti true void menangis()
{ System.out.println("hik...hikk...hik..");
}
void tertawa()
{ System.out.println("ha..ha...ha...ha...")
;
}
}

class objectorang {
public static void main(String[]args) {

Orang orang1 = new Orang();

//pemberian nilai
orang1.nama = "Aby";
orang1.tinggibadan = 170;
orang1.beratbadan = 55;
orang1.warnarambut = "hitam";
orang1.warnakulit = "putih";
orang1.jeniskelamin = "pria";
orang1.berkacamata = false;

//menampilkan
System.out.println("nama :" +orang1.nama);
System.out.println("tinggi :" +orang1.tinggibadan);
System.out.println("berat :" +orang1.beratbadan);
System.out.println("warna rambut :"
+orang1.warnarambut);
System.out.println("warna kulit :" +orang1.warnakulit);
System.out.println("jenis kelamin :"
+orang1.jeniskelamin);
System.out.println("berkacamata :"
+orang1.berkacamata);
//pemanggilan method
orang1.tertawa();
}
}
KUNCI LP 2 PROSES
Contoh Program 1

//class
class Mobil {
String warna;
int tahun;
String merek;
}
//object
class object {
public static void main(String[]args) {
Mobil G8 = new Mobil();
Mobil Jazz = new
Mobil(); //pemberian nilai
G8.warna = "Yellow";
G8.tahun = 2012;
G8.merek = "Audi";
Jazz.warna = "red";
Jazz.tahun = 2007;
Jazz.merek = "Honda";
//menampilkan
System.out.println("G8");
System.out.println("warna :" +G8.warna);
System.out.println("tahun :" +G8.tahun);
System.out.println("merek :" +G8.merek);
System.out.println("");
System.out.println("Jazz");
System.out.println("warna :" +Jazz.warna);
System.out.println("tahun :" +Jazz.tahun);
System.out.println("merek :" +Jazz.merek);
}
}
contoh program 2

//class
class Orang {

String nama; //nama


int tinggibadan; orang //dalam
int beratbadan; cm
//dalam kg
String warnarambut; //hitam, pirang, coklat
String warnakulit; // sawomatang, hitam, putih
String jeniskelamin; //pria atau wanita
boolean berkacamata;
//bila berkacamata berarti true void menangis()
{ System.out.println("hik...hikk...hik..");
}
void tertawa()
{ System.out.println("ha..ha...ha...ha...")
;
}
}
//object
class objectorang {
public static void main(String[]args) {

Orang orang1 = new Orang();

//pemberian nilai
orang1.nama = "Aby";
orang1.tinggibadan = 170;
orang1.beratbadan = 55;
orang1.warnarambut = "hitam";
orang1.warnakulit = "putih";
orang1.jeniskelamin = "pria";
orang1.berkacamata = false;

//menampilkan
System.out.println("nama :" +orang1.nama);
System.out.println("tinggi :" +orang1.tinggibadan);
System.out.println("berat :" +orang1.beratbadan);
System.out.println("warna rambut :"
+orang1.warnarambut);
System.out.println("warna kulit :" +orang1.warnakulit);
System.out.println("jenis kelamin :"
+orang1.jeniskelamin);
System.out.println("berkacamata :"
+orang1.berkacamata);
//pemanggilan method
orang1.tertawa();
}
}
RUBRIK ASESMEN PROSES

Petunjuk:
Untuk memberikan skor penilaian pada LP 2 Proses : mengidentifikasi class dan
objek dalam sebuah program, mengacu pada format penskoran di bawah ini.

No. Rincian Tugas Kinerja


Kriteria Penilaian Skor
(Skor Maksimum)
Menyebutkan blok class dan Menyebutkan class 25
1 objek dalam contoh soal 1 Menyebutkan object
(50) 25
Menyebutkan blok class dan Spesifikasi komputer dan dana lengkap 25
2 objek dalam contoh soal 2 Spesifikasi komputer dan dana kurang
25
(50) lengkap
LP3 PSIKOMOTOR

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

A. Buatlah sebuah class, tema bebas sesuai dengan ide kalian masing-masing.
Setiap siswa harus memiliki pekerjaan yang berbeda
B. Buatlah sebuah program dengan menerapkan class dengan tema program
bebas.

Format Asesmen Kinerja Psikomotor

Skor Maksimum Skor Asesmen


No Rincian Tugas Kinerja yang diamati
Oleh siswa Oleh Guru
1. Menyiapkan alat dan bahan. 10
2. Membuka membuat class 40
3. Menerapkan class dalam sebuah program 50
Jumlah Skor 100
LP 4 : PENGAMATAN PERILAKU BERKARAKTER

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Petunjuk:
Untuk setiap perilaku berkarakter berikut ini, beri penilaian atas perilaku
berkarakter siswa menggunakan skala berikut ini:

Format Pengamatan Perilaku Berkarakter

No Rincian Tugas Kinerja (RTK) A B C D

1. Jujur

2. Disiplin

3. Tanggung jawab

4. Percaya diri

5. Kerjasama
RUBRIK PENGAMATAN PERILAKU BERKARAKTER

No Rincian Tugas Kinerja yang Diamati Rubrik


A: sangat jujur
1. B: jujur
Jujur
C: cukup jujur
D: kurang jujur
A: sangat disiplin
Disiplin B: disiplin
2.
C: cukup disiplin
D: kurang disiplin
A: sangat tanggung jawab
3. B: tanggung jawab
Tanggung jawab
C: cukup tanggung jawab
D: kurang tanggung jawab
A: sangat percaya diri
4. B: percaya diri
Percaya diri
C: cukup percaya diri
D: kurang percaya diri
A: selalu bekerjasama
5 B: sering bekerjasama
Kerjasama
C: jarang bekerjasama
D: tidak bekerjasama
LP 5 : PENGAMATAN KETERAMPILAN SOSIAL

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Petunjuk:
Untuk setiap keterampilan sosial berikut ini, beri penilaian atas keterampilan
sosial siswa itu menggunakan skala berikut ini:

Format Pengamatan Keterampilan Sosial

No Rincian Tugas Kinerja (RTK) A B C D

1 Bertanya

2 Berdiskusi

Rubrik Pengamatan Keterampilan Sosial


No Rincian Tugas Kinerja yang Diamati Rubrik
A: selalu bertanya
Bertanya B: sering bertanya
1.
C: jarang bertanya
D: tidak pernah bertanya
A: selalu berdiskusi
Berdiskusi B: sering berdiskusi
2.
C: jarang berdiskusi
D: tidak berdiskusi

Gending, 27 Juli 2015


Mengetahui,
Kepala SMK Negeri I Gending Guru Mata Pelajaran

Drs. H. SAHUDI DITA AGUSTIN DAMAYANTI, S.ST


NIP. 19670809 199802 1 004
RENCANA PELAKSANAAN PEMBELAJARAN (RPP)

Nama Sekolah : SMK Negeri 1 Gending


Mata Pelajaran : Menggunakan Bahasa Pemrograman Berorientasi Objek
Kelas : XII (Dua Belas)
Semester : 5 (Lima)
Jumlah Pertemuan : 4 Pertemuan

A. Standar Kompetensi :
Merancang aplikasi teks dan desktop berbasis objek

B. Kompetensi Dasar :
Merancang aplikasi berorientasi objek

C. Indikator:
1. Produk
1) Menjelaskan class diagram
2) Menjelaskan langkah-langkah membuat class dan object
3) Mengetahui konsep class private dan public
2. Proses
1) Merancang sebuah class melalui class diagram
2) Mengidentifikasikan antara class private dan class public
3. Psikomotor
1) Membuat program dengan menggunakan obyek dan class.
2) Membuat properti class yang akan direalisasikan dalam bentuk
prosedur atau fungsi.
3) Membuat Class private di dalam program
4) Membuat Class public di dalam program
4. Karakter
Mengembangkan perilaku berkarakter, meliputi : Jujur, Tanggung jawab,
Kerjasama, Disiplin, dan Percaya Diri
5. Keterampilan social
Mengembangkan keterampilan social meliputi: Bertanya danMenyumbang
ide atau berpendapat

D. Tujuan Pembelajaran
1. Produk
1) Secara mandiri siswa dapat menjelaskan class diagram sesuai deskripsi
yang tercantum pada kunci LP1:Produk
2) Tanpa melihat modul siswa dapat menjelaskan langkah-langkah
membuat class dan object sesuai deskripsi yang tercantum pada kunci
LP1: produk.
3) Secara mandiri siswa dapat mengetahui konsep class private dan class
public sesuai deskripsi yang tercantum pada kunci LP1: produk.
2. Proses
1) Diberikan modul membuat class diagram, siswa dapat membuat class
diagram sesuai dengan rincian tugas kerja pada LP2 proses.
2) Melalui berbagai sumber belajar (modul, internet, buku dll) siswa
dapat mengidentifikasikan perbedaan antara class private dan class
public
3. Psikomotor
1) Secara mandiri siswa dapat membuat program dengan menggunakan
obyek dan class sesuai dengan rincian tugas kerja pada LP3
psikomotor.
2) Secara mandiri siswa dapat membuat Class private di dalam program
sesuai dengan rincian tugas kerja pada LP3 psikomotor
3) Secara mandiri siswa dapat membuat Class public di dalam program
sesuai dengan rincian tugas kerja pada LP3 psikomotor.
4. Karakter
Terlibat dalam proses belajar mengajar berpusat pada siswa, dan diamati
dengan LP 4, diharapkan siswa dapat mengembangkan perilaku
berkarakter, meliputi :jujur, Tanggung jawab, Kerjasama, Disiplin,
Percaya Diri

5. Keterampilan social
Terlibat dalam proses belajar mengajar yang menerapkan MPL, diamati
dengan LP5, diharapkan siswa dapat membuat kemajuan dalam Bertanya
dan mengungkapkan pendapat atau ide.

E. Materi Ajar
Object Oriented Programming

F. Alokasi Waktu
16 x 45 menit ( empat pertemuan )

G. Model dan Metode Pembelajaran


1. Model Pembelaran : Model Pembelajaran Langsung
2. Metode Pembelajaran : ceramah bervariasi, media berupa slide
presentasi, demonstrasi dan pemberian tugas

H. Proses Belajar Mengajar


Tabel Proses Belajar Mengajar Pertemuan I

Penilaian Oleh Pengamat

Kegiatan
1 2 3 4

Pendahuluan ( 15 menit)

4. Membuka pelajaran dengan mengucapkan salam, memberikan


pesan moral kepada siswa untuk selalu Jujur, tangungjawab,
kerja keras, percaya diri, dan disiplin(fase 1 MPL)
5. Memberikan apersepsi dengan menunjuk salah satu siswa
untuk menjelaskan perbedaan class dan objek. (fase 1 MPL)
6. Memotivasi siswa dengan menunjukkan salah satu program
yang menerapkan class didalamnya (fase 1 MPL)
7. Menyampaikan tujuan pembelajaran produk,
proses, psikomotor, karakter, dan keterampilan sosial. (fase 1 MPL)
Inti ( 150 menit)

Menyajikan informasi
7. membagikan LKS : Merancang aplikasi berorientasi objek dan
meminta siswa untuk mempelajari secara mandiri.
8. menjelaskan konsep class diagram mengenai kegunaan, notasi
dan contoh dari class diagram.(fase 2 MPL).
9. Melalui contoh dan penjelasan yang diberikan guru, siswa
membuat class diagram sesuai dengan rincian tugas kinerja
pada LP2:proses. (fase 3 MPL)
10. Membimbing dan memberi kesempatan kepada siswa
untuk menjelaskan class diagram sesuai dengan LP1 produk
(fase 3 MPL).
11. Mengecek pemahaman siswa dengan memberikan umpan
balik yaitu dengan memberikan tanya jawab materi class
diagram (fase 4 MPL).
Penutup ( 15 menit)

1. Meminta siswa untuk melakukan latihan lanjutan dalam


membuat class diagram di rumah.fase 5 MPL)
2. Mengacu pada indicator menutup pelajaran dengan
melibatkan siswa menyimpulkan hasil belajar.
3. Meminta siswa untuk mempelajari materi class.

Tabel Proses Belajar Mengajar Pertemuan II & III

Penilaian oleh pengamat

Kegiatan
1 2 3 4

Pendahuluan ( 15 menit)

1. Membuka pelajaran dengan mengucapkan salam, memberikan


motivasi kepada siswa untuk rajin belajar dan selalu bekerja
keras untuk mencapai hasil yang maksimal. (fase 1 MPL)
2. Memberikan Tanya jawab kepada siswa tentang materi
yang pernah diajarkan sebelumnya yaitu materi membuat
class diagram. (fase 1 MPL)
3. Menyampaikan tujuan pembelajaran produk, proses,
psikomotor,karakter dan keterampilan sosial. (fase 1 MPL)
Inti ( 150 menit)

Menyajikan informasi
1. Menjelaskan konsep class. (fase 2 MPL)
2. Memberikan sebuah contoh langkah-langkah membuat
class dan object berdasarkan class diagram yang telah dibuat.
(fase 2 MPL).
3. Meminta siswa menjelaskan langkah-langkah membuat
class dan object. (fase 3 MPL)
4. Membimbing dan memberi kesempatan kepada siswa
untuk mengimplementasikan class diagram yang telah
dibuat ke dalam class dan object. (fase 3 MPL).
5. Menunjuk beberapa siswa untuk maju ke depan kelas untuk
menyampaikan hasil kerjanya,teman yang lain
mendengarkan, memberikan masukan, dan pertanyaan.
Membimbing siswa agar dapat berdiskusi dengan baik,
mengingatkan siswa cara berdiskusi yang baik (fase 4 MPL).
6. Meminta siswa untuk mengamati pekerjaan teman, kemudian
memberikan komentar sebagai sarana evaluasi. (fase 5 MPL)
Penutup ( 15 menit)

1. Mengacu pada indicator menutup pelajaran dengan melibatkan


siswa menyimpulkan hasil belajar.

Tabel Proses Belajar Mengajar Pertemuan IV


Penilaian oleh
pengamat
Kegiatan
1 2 3 4

Pendahuluan ( 15 menit)

1. Membuka pelajaran dengan mengucapkan salam,


memberikan pesan moral kepada siswa untuk selalu Jujur,
tangungjawab, kerja keras, percaya diri, dan Kreatif (fase 1 MPL)
2. Memberikan penghargaan kepada siswa dengan cara
mengumumkan pekerjaan tiga siswa yang terbaik dan memberikan
pujian. (fase 1 MPL)
3. Menyampaikan tujuan pembelajaran produk, proses, psikomotor,
karakter, dan keterampilan sosial. (fase 1 MPL)
Inti ( 150 menit)

Menyajikan informasi
1. menjelaskan konsep class public dan class privat.(fase 2 MPL)
2. Meminta siswa untuk menjelaskan konsep class public dan private
dan mencari perbedaan diatara keduanya (fase 3 MPL)
3. Membimbing dan memberikan kesempatan kepada siswa untuk
membuat class public dan class private. (fase 3 MPL).
4. Mengecek pemahaman siswa menunjuk beberapa siswa untuk
mempresentasikan hasil kerja. Teman yang lain bertanya,
menyampaikan pendapat, dan memberikan masukan. (fase 4 MPL).

Penutup ( 15 menit)

1. Meminta siswa untuk melakukan latihan tambahan untuk menambah


pemahaman terhadap materi. (fase 5 MPL).
2. Mengacu pada indicator menutup pelajaran dengan melibatkan siswa
menyimpulkan hasil belajar.

I. Penilaian Hasil Belajar


1. Kisi-kisi lembar penilaian
2. Lp1 produk dilengkapi kunci LP1 produk
3. Lp2 proses
4. Lp3 psikomotor
5. Lp4 pengematan perilaku berkarakter
6. Lp5 pengematan keterampilan sosial
J. Sumber Belajar
1. Modul SMK
2. Merancang aplikasi berorientasi objek
3. LP1 : Produk
4. LP2 : Proses
5. LP3 : Psikomotor
6. LP4 : Pengamatan Perilaku berkarakter
7. LP5: Pengamatan Keterampilan Sosial
8. Tabel Spesifikasi Lembar Penilaian
9. Silabus
10. LCD
11. Media Pembelajaran
MODUL SMK
MERANCANG APLIKASI BERORIENTASI OBJEK

1. Class diagram
a. Definisi
Class adalah kumpulan objek-objek yang mempunyai struktur
umum, behavior umum, relasi umum, dan semantic/kata yang umum. Class-
class ditentukan/ditemukan dengan cara memeriksa objek-objek dalam
sequence diagram dan collaboration diagram. Sebuah class digambarkan
seperti sebuah bujur sangkar dengan tiga bagian ruangan. Class sebaiknya
diberi nama menggunakan kata benda sesuai dengan domain/bagian/
kelompoknya (Whitten L. Jeffery et al, 2004).
Class Diagram adalah diagram yang menunjukan class-class yang
ada dari sebuah sistem dan hubungannya secara logika. Class diagram
menggambarkan struktur statis dari sebuah sistem. Karena itu class diagram
merupakan tulang punggung atau kekuatan dasar dari hampir setiap metode
berorientasi objek termasuk UML (Henderi, 2008). Sementara menurut
(Whitten L. Jeffery et al 2004:432) class diagram adalah gambar grafis
mengenai struktur objek statis dari suatu sistem, menunjukan class-class
objek yang menyusun sebuah sistem dan juga hubungan antara class objek
tersebut.
Elemen-eleman class diagram dalam pemodelan UML terdiri dari:
Class-class, struktur class, sifat class (class behavior),
perkumpulan/gabungan (association), pengumpulan/kesatuan (agregation),
ketergantungan (dependency), relasi-relasi turunannya, keberagaman dan
indikator navigasi, dan role name (peranan/tugas nama). Simbol-simbol class
diagram. Berikut adalah notasi notasi yang ada pada class diagram :
Table notasi class diagram
Nama
Keterangan
Notasi
Class
Class adalah blok - blok pembangun pada pemrograman berorientasi obyek.Sebuah class
digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas adalah bagian
nama dari class. Bagian tengah mendefinisikan property/atribut class. Bagian akhir
mendefinisikan methodmethod dari sebuah clas.
Association
Sebuah asosiasi merupakan sebuah relationship paling umum antara 2 class dan
dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Garis ini bisa
melambangkan tipe-tipe relationship dan juga dapat menampilkan hukum-hukum
multiplisitas pada sebuah relationship.(Contoh: One-to-one, one-to-many,many-to-many).
Composition
Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang
lain, maka class tersebut memiliki relasi Composition terhadap class tempat dia bergantung
tersebut. Sebuah relationship composition digambarkan sebagai garis dengan ujung
berbentuk jajaran genjang berisi/solid.
Dependency
Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut dependency.
Umumnya penggunaan dependency digunakan untuk menunjukkan operasi pada suatu class
yang menggunakan class yang lain. Sebuah dependency dilambangkan sebagai sebuah
panah bertitik-titik.

b. Contoh class diagram


Berikut ini merupakan contoh Class Diagram
1) Class Buku terdiri dari :
a) Atribut : judul, pengarang.
b) Method : ambilJenis(), ambilHalaman().
Penggambaran dalam Class diagram :

Buku

+judul : String;
+pengarang : String;

+setJenis(String tipe);
+ambilHalaman() : int

Gambar 1. Contoh Class Diagram.


2) Implementasi class Diagram Buku ke dalam program.
Keterangan :
Untuk judul buku Pemrograman Java, Jenis : Prog, Jumlah halaman :
100

Gambar 2. Contoh Implementasi Class Diagram.

2. Konstruktor
a. Definisi
Konstruktor adalah bagian dari definisi suatu kelas yang berfungsi
menciptakan instans dari kelas tersebut. Konstruktor ini bisa kita buat sendiri,
atau bila kita tidak mendefinisikannya, maka kompiler Java akan
membuatkan konstruktor default untuk kelas tersebut pada saat kompilasi.
Yang perlu diperhatikan adalah bahwa suatu konstrukor tidak termasuk
anggota suatu kelas seperti metode dan variabel dan bahwa konstruktor bisa
dibuat lebih dari satu.

Mahasiswa

+nrp : int;
+nama : String;

Konstruktor +Mahasiswa(String tipe);


+getNRP() : int
+getNama(): String

Gambar 3. Class diagram dengan konstruktor.


b. Implementasi konstruktor ke dalam program

Gambar 4. Implementasi konstruktor ke dalam program

3. Konsep Class dan object


Untuk memahami konsep object dan class perhatikanlah ilustrasi berikut ini,
Class dapat diumpamakan seperti spesifikasi atau blueprint. Dalam
hal
ini,Tuhan menciptakan manusia dengan spesifikasi tertentu.
Jadi dapat diumpamakan bahwa Tuhan memiliki class Orang
yang kemudian membuat banyak objek dari class Orang tsb, dan contoh
objek tersebut adalah Anda sendiri tersebut adalah Anda sendiri.
Objek dalam pemrograman adalah objek yang dibuat dari class
tertentu. a. Data Member
Setiap objek yang dinamakan orang pasti memiliki: nama, tinggi
badan, berat badan, warna rambut, warna kulit, jenis kelamin,
menggunakan kacamata, dll.
Ciri-ciri tersebut dapat dipindahkan menjadi variabel-variabel dari
Class yang sering disebutsebagai : data member.
Contoh pemisalan objek orang nyata menjadi kode program dalam Class
Orang :
Class Orang {
String nama; //nama orang
int tinggiBadan; //dalam
int beratBadan; cm //dlm kg
String warnaRambut; //hitam, pirang,
String warnaKulit; coklat //sawoMatang,
String jenisKelamin; hitam, putih //pria atau
boolean berkacamata; wanita
} //bila berkacamata berarti true

Dari definisi Class Orang di atas, kita bisa membuat objek-objek berdasar
Class tersebut.
Objek-objek yang dibuat perlu disimpan dalam variabel yang
akan menyimpanreferensi/address dari objek yang dibuat.
Proses pembuatan objek sering disebut sebagai instansiasi Class,
sedangkan objeknya disebutsebagai instance dari Class.
b. Method
Selain memiliki atribut atau STATE yang diimplementasikan sebagai
data member di atas, manusia juga dapat melakukan suatu aksi atau
pekerjaan tertentu (BEHAVIOR).
Contoh aksi/behavior yang umum adalah menangis dan tertawa.
Kedua behavior tsb bisa dipindahkan ke dalam bahasa
pemrograman menjadi method sbb :
void menangsi() {
System.out.println(hik..hikk..hik...);

}
void tertawa() {
System.out.println(ha..ha..ha..ha..);
}
Method merupakan perwujudan aksi atau tindakan dari dunia nyata di
dalam pemrograman komputer.
Method dalam dunia pemrograman juga pasti melakukan sesuatu
aksi, misalnya menampilkan String di konsol.

Class A

State:
Data Member/Variabel

Behavior :
method1();
method2();

object objek objek

Gambar 5. Ilustrasi perbedaan antara Class dan objek


4. Membuat class
a. Deklarasi Class
Pada dasarnya komponen dari Class ter diri dari modifier, Classname, atribut,
konstruktor, dan metode untuk lebih jelasnya bisa melihat susunannya seperti
dibawah ini :

<modifier> Class <Classname> {


[deklarasi_atribut]
[deklarasi_konstruktor]
[deklarasi_metode]
}
Contoh :

b. Deklarasi Atribut

Contoh :

c. Deklarasi Metode

Contoh :
d. Pengaksesan anggota obyek

Contoh :

Contoh
Class Coin :

public Class Coin {


public final int HEADS = 0;
public final int TAILS = 1;
private int face;

public Coin () {
flip();
}
public void flip (){
face = (int) (Math.random() *
2); }
public int getFace ()
{ return face;
}

public String toString(){


String faceName;
if (face == HEADS)
faceName = "Heads";
else
faceName = "Tails";
return faceName;
}
}

Class Circle

public Class Circle {


public double x, y; // centre of the circle
public double r; // radius of circle

//Methods to return circumference and area


public double circumference()
{ return 2*3.14*r;
}

public double area() {


return 3.14 * r *
r; }
}

Penggunaan Class circle

// Circle.java: Contains both Circle Class and its user Class


//Add Circle Class code here
Class MyMain
{
public static void main(String args[])
{
Circle aCircle; // creating reference
aCircle = new Circle(); // creating object
aCircle.x = 10; // assigning value to data field
aCircle.y = 20;
aCircle.r = 5;
double area = aCircle.area(); // invoking method
double circumf = aCircle.circumference();
System.out.println("Radius="+aCircle.r+" Area="+area);
System.out.println("Radius="+aCircle.r+" Circumference
="+circumf);
}
}

Hasil :

5. Membuat Objek
LifeCycledariObjek Life Cycle dari Objek
a. Creation (Membuat objek)

public Class MyDate {


private int day=1;
private int month=1;
private int year=2000;

//konstruktor
public MyDate(int day, int month, int year)
{.}
}

public Class TestMyDate {


public static void main(String args[]) {
MyDate today = new MyDate(10,11,2006);
}
}

Cara membuat obyek berdasarkan Class yang ada diatas :


MyDate today = new MyDate(10, 11, 2006);
Pernyataan diatas terdiri dari 3 langkah :
Deklarasi objek MyDate today ;
Alokasi Memori menggunakan kata kunci
newMyDate(10, 11, 2006);
Inisialisasi Objek tergantung dari
konstruktornya b. Use (Menggunakan objek)
MenggunakanObjek Menggunakan Objek Ada 2 cara:
Memanipulasi variabelnya
Menggunakan metode dari objek
tersebut c. Destruction (Menghapus objek)
6. Access Modifiers
Pada saat membuat, mengatur properties dan class methods, kita ingin
untuk mengimplementasikan beberapa macam larangan untuk mengakses data.
Sebagai contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya
dengan method tertentu, tentu Anda ingin menyembunyikannya dari object lain
pada class. Di JAVA, implementasi tersebut disebut dengan access modifiers.
Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected
dan default. tipe akses pertama tertulis secara ekplisit pada kode untuk
mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe
default, tidak diperlukan penulisan keyword atas tipe.
a. Akses Default (Package Accessibility)
Tipe ini mempersyaratkan bahwa hanya classdalam package yang sama yang
memiliki hak akses terhadap variabel danmethods dalam class. Tidak terdapat
keyword pada tipe ini. Sebagai contoh :

public class StudentRecord


{
//akses dasar terhadap variabel
int name;
//akses dasar terhadap metode
String getName(){
return
name; }
Pada contoh diatas, variabel nama dan methodgetName() dapat diakses dari
object lain selama object tersebut berada pada package yang sama dengan
letak dari file StudentRecord.
b. Akses Public
Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan
luar class. Object apapun yang memiliki interaksi pada class memiliki akses
penuh terhadap member dari tipe ini. Sebagai contoh :

public class StudentRecord


{
//akses dasar terhadap variabel
public int name;
//akses dasar terhadap metode
public String getName(){
return
name; }
}
Dalam contoh ini, variabel name dan methodgetName() dapat diakses
dari objectlain.

c. Akses Protected
Tipe ini hanya mengijinkan class memberuntuk diakses oleh method dalam
class tersebut dan elemen elemen subclass. Sebagai contoh :

public class StudentRecord


{
//akses pada variabel
protected int
name; //akses pada
metode
protected String getName()
{ return name;
}

Pada contoh diatas, variabel name dan methodgetName() hanya dapat


diakses oleh methodinternal classdan subclass dari class StudentRecord.
Definisi subclass akan dibahas pada bab selanjutnya.
d. Akses Private
Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class
dimana tipe ini dibuat. Sebagai contoh :
public class StudentRecord
{
//akses dasar terhadap variabel
private int name;
//akses dasar terhadap metode
private String getName(){
return name;
}

Pada contoh diatas, variabel name dan methodgetName() hanya dapat


diakses oleh method internal class tersebut.
LP 1 : PRODUK

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Jawablah pertanyaan berikut ini!


1. Apakah yang dimaksud dengan class?
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
2. Jelaskan kegunaan class diagram?
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
3. Sebut dan jelaskan notasi-notasi yang ada pada class diagram?
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
4. Sebutkan komponen class diagram?
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
5. Jelaskan kegunaan dependency!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
6. Apakah yang dimaksud dengan construktor!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
7. Jelaskan hubungan antara class dengan data member!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
8. Jelaskan kegunaan method dalam class!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
9. Sebutkan langkah-langkah dalam mendeklarasikan sebuah class!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
10. Sebutkan langkah-langkah dalam mendeklarasikan sebuah object
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
11. Sebutkan lifecycle dari sebuah objek!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
12. Amatilah diagram class berikut ini kemudian identifikasilah komponen yang
ada didalamnya

13. Jelaskan yang dimaksud dengan behavior dalam class!


_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
14. Jelaskan yang dimaksud dengan class private!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
15. Jelaskan yang dimaksud dengan class public!
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
KUNCI LP 1 PRODUK

1. Class adalah kumpulan objek-objek yang mempunyai struktur umum,


behavior umum, relasi umum, dan semantic/kata yang umum. Class-class
ditentukan/ditemukan dengan cara memeriksa objek-objek dalam sequence
diagram dan collaboration diagram. Sebuah class digambarkan seperti sebuah
bujur sangkar dengan tiga bagian ruangan.
2. Kegunaan class diagram adalah untuk menunjukan class-class yang ada dari
sebuah sistem dan hubungannya secara logika. Class diagram menggambarkan
struktur statis dari sebuah sistem. Karena itu class diagram merupakan tulang
punggung atau kekuatan dasar dari hampir setiap metode berorientasi objek
termasuk UML.
3. Notasi dalam class diagram adalah sebagai berikut:
a. Class
Class adalah blok - blok pembangun pada pemrograman berorientasi
obyek.Sebuah class digambarkan sebagai sebuah kotak yang terbagi atas 3
bagian. Bagian atas adalah bagian nama dari class. Bagian tengah
mendefinisikan property/atribut class. Bagian akhir mendefinisikan
methodmethod dari sebuah clas.
b. Association
Sebuah asosiasi merupakan sebuah relationship paling umum antara 2
class dan dilambangkan oleh sebuah garis yang menghubungkan antara 2
class. Garis ini bisa melambangkan tipe-tipe relationship dan juga dapat
menampilkan hukum-hukum multiplisitas pada sebuah
relationship.(Contoh: One-to-one, one-to-many,many-to-many).
c. Composition
Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian
dari class yang lain, maka class tersebut memiliki relasi Composition
terhadap class tempat dia bergantung tersebut. Sebuah relationship
composition digambarkan sebagai garis dengan ujung berbentuk jajaran
genjang berisi/solid.
d. Dependency
Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut
dependency. Umumnya penggunaan dependency digunakan untuk
menunjukkan operasi pada suatu class yang menggunakan class yang lain.
Sebuah dependency dilambangkan sebagai sebuah panah bertitik-titik.
4. Komponen class diagram adalah
a. Atribut
b. Konstruktor
c. Method
5. penggunaan dependency digunakan untuk menunjukkan operasi pada suatu
class yang menggunakan class yang lain.
6. Konstruktor adalah bagian dari definisi suatu kelas yang berfungsi
menciptakan instans dari kelas tersebut.
7. Data member merupakan variable dari class yang merupakan ciri-ciri/sifat dari
sebuah objek
8. Kegunaan method adalah sebagai perwujudan aksi atau tindakan dari dunia
nyata di dalam pemrograman komputer. Method dalam dunia pemrograman
juga pasti melakukan sesuatu aksi, misalnya menampilkan String di konsol.
9. Langkah-langkah mendeklarasikan sebuah class adalah sebagai berikut:
membuat class name, mendeklarasikan atribur, mendeklarasikan konstruktor
dan mendeklarasikan metode.
10. Langkah membuat objek adalah Deklarasi objek, Alokasi Memori, dan
Inisialisasi Objek.
11. Lifecycle dalam membuat object adalah.
Membuat objek, menggunakan objek dan menghapus object.
12. Keterangan gambar
Keterangan
Gambar
nama class
atribut
method

13. Behavoiur adalah suatu aksi atau pekerjaan tertentu. Contoh aksi/behavior
yang umum adalah menangis dan tertawa. Kedua behavior tsb bisa
dipindahkan ke dalam bahasa pemrograman menjadi method sbb.
14. Class private adalah tipe yang mengijinkan pengaksesan class hanya dapat
diakses oleh class dimana tipe ini dibuat.
15. Class public adalah tipe yang mengijinkan seluruh class member untuk
diakses baik dari dalam dan luar class. Object apapun yang memiliki interaksi
pada class memiliki akses penuh terhadap member dari tipe ini.
RUBRIK PENILAIAN PRODUK

Penilaian untuk setiap butir soal menggunakan panduan rubric penilaian


sebagai berikut:
Rincian Tugas Kerja Keterangan Skor

Mengerti jalan cerita yang Lengkap 7


berkesinambungan yang dituangkan
Cukup lengkap 4
pada soal nomor 1 - 10
Kurang lengkap 2

Tidak lengkap 0
LP 2 : PROSES

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

A. Merancang class
1. Buatlah definisi class Motor, yang memiliki data : nama (String) ,status
(boolean) memiliki metod : tampilkan() : mencetak keterangan nama
keadaan motor (status mati /hidup) memiliki metod : nyalakan() :berfungsi
men-set status dari mati (false) menjadi hidup (true). Jika status sudah hidup
dan dipanggil metod nyalakan(), maka akan ada komentar Mesin sudah
hidup, jika mesin belum hidup dan meetod nyalakan() dipanggil maka status
diubah menjadi true.
2. Buatlah definisi class TesMotor , untuk membuat objek motor : motorku ,
nama motor HONDA kondisi mati, panggil metod tampilkan() motormu,
nama motor YAMAHA , panggil metod nyalakan() dan tampilkan().

B. Mengidentifikasi class public dan class private


Amatilah program berikut ini, kemudian sebutkan jenis access modifier
dari program berikut ini

No Program Jenis access modifier


1 class Mahasiswa {
public String nama;
public String kata() {
return Algoritma
JAVA; }
}

2 class Mahasiswa
{ private String
admin; private int
NIM; private String
nama;
public void setAdmin(String admin)
{ this.admin = admin;
}
public void setNIM(int NIM)
{ this.NIM = NIM;
}
public void setNama(String nama) {
this.nama =
nama; }
public void pesan()
{ System.out.println(Nama admin:
+admin); }
public int getNIM()
{ return NIM;
}
public String getNama()
{ return nama;
}
}
public class MainMahasiswa {
public static void main(String args[])
{ Mahasiswa m = new Mahasiswa();
m.setAdmin(kristantra);
m.setNIM(00224455);
m.setNama(Henry kristantra);
m.pesan();
System.out.println(NIM + m.getNIM() +
bernama + m.getNama());
}
}

3 public class manusia {


public static void main(String[] args)
{ public class Manusia {
private String nama;
private String jk;
public void setNama(String nama)
{ this.nama=nama;
}
public void setJk(String jk)
{ this.jk=jk;
}
public void cetak()
{ System.out.println(Nama : +nama);
System.out.println(Jenis Kelamin :
+jk); }
}
public class DemoManusia {
public void main(String args[])
{ Manusia m = new Manusia();
m.setNama(Sapto);
m.setJk(Laki-laki);
m.cetak();
} }
}

4 class Murid {
private String nama;

private String kata() {


return saya adalah
pelajar; }
}

5 public class orang1 {


private String nama="";
public orang1 (String nm)
{nama = nm;
}
public void setNama (String nm)
{this.nama = nm;}
public String getNama ()
{return nama;}
public String displayInfo()
{return "Nama: " +nama;
}

}
KUNCI LP 2 PROSES

A. Class motor

Motor

data : nama (String)


status (boolean)

tampilkan()
nyalakan()

B. Jenis Access modifier dalam program

No Program Jenis access modifier


1 class Mahasiswa { Public
public String nama;
public String kata() {
return Algoritma
JAVA; }
}

2 class Mahasiswa Private


{ private String
admin; private int
NIM; private String
nama;
public void setAdmin(String admin)
{ this.admin = admin;
} Public
public void setNIM(int NIM)
{ this.NIM = NIM;
}
public void setNama(String nama)
{ this.nama = nama;
}
public void pesan()
{ System.out.println(Nama admin:
+admin); }
public int getNIM()
{ return NIM;
}
public String getNama()
{ return nama;
}
}
public class MainMahasiswa {
public static void main(String args[])
{ Mahasiswa m = new Mahasiswa();
m.setAdmin(kristantra);
m.setNIM(00224455);
m.setNama(Henry kristantra);
m.pesan();
System.out.println(NIM + m.getNIM() +
bernama + m.getNama());
}
}

3 public class manusia { Public


public static void main(String[] args)
{ public class Manusia {
private String nama;
private String jk;
public void setNama(String nama)
{ this.nama=nama;
}
public void setJk(String jk)
{ this.jk=jk;
}
public void cetak()
{ System.out.println(Nama : +nama);
System.out.println(Jenis Kelamin :
+jk); }
}
public class DemoManusia {
public void main(String args[])
{ Manusia m = new Manusia();
m.setNama(Sapto);
m.setJk(Laki-laki);
m.cetak();
} }
}

4 class Murid { Private


private String nama;

private String kata() {


return saya adalah
pelajar; }
}

5 public class orang1 Public


{ private String
nama="";
public orang1 (String nm)
{nama = nm;
}
public void setNama (String nm)
{this.nama = nm;}
public String getNama ()
{return nama;}
public String displayInfo()
{return "Nama: " +nama;
}
RUBRIK PENILAIAN PROSES

A. Merancang class
Penilaian untuk setiap butir soal menggunakan panduan rubric
penilaian sebagai berikut:
Rincian Tugas Kerja Keterangan Skor
Dapat merancang membuat class dengan Nama class 30
benar meliputi: Atribut 30
Method 30
mengerjakan dengan 10
lengkap

B. Mengidentifikasi class public dan class private


Penilaian untuk setiap butir soal menggunakan panduan rubric
penilaian sebagai berikut:
Rincian Tugas Kerja Nomor soal Skor Benar Skor Salah
Mengidentifikasikan class public dan 1 20 5
class private yang dituangkan dalam 2 20 5
butir soal nomor 1-5 3 20 5
4 20 5
5 20 5
LP 3 : PSIKOMOTOR

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Prosedur
1. Implementasikan class diagram pada LP2A: proses ke dalam program java.
2. Buatlah sebuah class dalam java.
3. Buatlah sebuah class private
4. Buatlah sebuah class public

Format Assessment Kinerja Psikomotor


No Rincian Tugas Kinerja Keterangan Skor
1 Mengimplementasikan class motor Baik 25
pada LP2A: proses Cukup baik 15
Kurang baik 5
Tidak mengerjakan 0
2 Buatlah sebuah class dalam java. Baik 25
Cukup baik 15
Kurang baik 5
Tidak mengerjakan 0
3 Buatlah sebuah class private Baik 25
Cukup baik 15
Kurang baik 5
Tidak mengerjakan 0
4 Buatlah sebuah class public Baik 25
Cukup baik 15
Kurang baik 5
Tidak mengerjakan 0
LP 4 : PENGAMATAN KARAKTER

Nama : __________________ Kelas : ________


No. Absen : __________________ Tanggal : ________

Petunjuk:
Untuk setiap perilaku berkarakter berikut ini, beri penilaian atas perilaku
berkarakter siswa menggunakan skala berikut ini:

Format Pengamatan Perilaku Berkarakter

No Rincian Tugas Kinerja (RTK) A B C D

1. Jujur
2. Tanggung jawab
3. Kerja keras

4. Disiplin

5. Percaya diri
Rubrik Pengamatan Perilaku Berkarakter
No Rincian Tugas Kinerja yang Diamati Rubrik
A: sangat jujur
1. B: jujur
Jujur
C: cukup jujur
D: kurang jujur
A: sangat tanggung jawab
2. B: tanggung jawab
Tanggung jawab
C: cukup tanggung jawab
D: kurang tanggung jawab
A: sangat kerja keras
3. B: kerja keras
Kerja keras
C: cukup kerja keras
D: kurang kerja keras
A: sangat disiplin
4. B: disiplin
Disiplin
C: cukup disiplin
D: kurang disiplin
A: sangat Percaya diri
5 B: Percaya diri
Percaya diri
C: cukup Percaya diri
D: kurang Percaya diri
LP 5 : PENGAMATAN KETERAMPILAN SOSIAL

Nama : __________________ Kelas :


________ No. Absen : __________________ Tanggal :
________

Petunjuk:
Untuk setiap keterampilan sosial berikut ini, beri penilaian atas keterampilan
sosial siswa itu menggunakan skala berikut ini:

Format Pengamatan Keterampilan Sosial


No Rincian Tugas Kinerja (RTK) A B C D
1 Bertanya
2 Menyumbang ide atau berpendapat

Rubrik Pengamatan Keterampilan Sosial


No Rincian Tugas Kinerja yang Diamati Rubrik
A: selalu bertanya
B: sering bertanya
1. Bertanya
C: jarang bertanya
D: tidak pernah bertanya
A: selalu Menyumbang ide atau berpendapat
B: sering Menyumbang ide atau berpendapat
2. Menyumbang ide atau berpendapat C: jarang Menyumbang ide atau berpendapat
D: tidak pernah Menyumbang ide atau
berpendapat

Gending, 27 Juli 2015


Mengetahui,
Kepala SMK Negeri I Gending Guru Mata Pelajaran

Drs. H. SAHUDI DITA AGUSTIN DAMAYANTI, S.ST


NIP. 19670809 199802 1 004

Anda mungkin juga menyukai