Menguji Kompetensi Pengembang Muda: Contoh Soal Ujian Praktikum Bergerak Kelas 3 SMK Semester 1
Menguji Kompetensi Pengembang Muda: Contoh Soal Ujian Praktikum Bergerak Kelas 3 SMK Semester 1
Pendahuluan
Di era digital yang serba cepat ini, teknologi perangkat bergerak (mobile) telah menjadi tulang punggung kehidupan sehari-hari. Dari komunikasi, hiburan, hingga produktivitas, aplikasi mobile memainkan peran sentral. Oleh karena itu, kurikulum Sekolah Menengah Kejuruan (SMK) di bidang Rekayasa Perangkat Lunak (RPL) atau Teknik Komputer dan Jaringan (TKJ) semakin mengedepankan kompetensi pengembangan aplikasi bergerak. Kelas 3 SMK Semester 1 adalah fase krusial di mana siswa diharapkan mampu mengaplikasikan berbagai konsep yang telah dipelajari ke dalam proyek nyata yang lebih kompleks.
Ujian praktikum bergerak bukan hanya sekadar menguji kemampuan coding, tetapi juga mengukur pemahaman siswa terhadap arsitektur aplikasi, user interface (UI) dan user experience (UX), penanganan data, integrasi fitur perangkat keras, hingga kemampuan debugging dan pemecahan masalah. Artikel ini akan membahas secara mendalam contoh soal ujian praktikum bergerak yang relevatif untuk siswa kelas 3 SMK semester 1, dilengkapi dengan rubrik penilaian dan tips persiapan.
Tujuan Ujian Praktikum Bergerak untuk Kelas 3 SMK Semester 1
Ujian praktikum bergerak dirancang untuk mencapai beberapa tujuan utama, antara lain:
- Mengukur Kemampuan Implementasi: Memastikan siswa mampu menerjemahkan desain dan spesifikasi ke dalam kode program yang fungsional menggunakan Android Studio (atau platform lain yang relevan).
- Memahami Konsep Inti: Menguji pemahaman siswa tentang komponen-komponen dasar Android seperti Activity, Intent, Layouts, Widgets, Service, Broadcast Receiver, serta penyimpanan data (Shared Preferences, SQLite).
- Keterampilan Pemecahan Masalah: Mengembangkan kemampuan siswa dalam mengidentifikasi dan memperbaiki kesalahan (debugging) dalam kode mereka.
- Desain UI/UX Sederhana: Menilai kemampuan siswa dalam merancang antarmuka pengguna yang intuitif dan menarik, meskipun dalam batasan sederhana.
- Manajemen Proyek Mini: Menguji kemampuan siswa dalam mengelola struktur proyek, penamaan file, dan kebersihan kode.
- Kemandirian dan Kreativitas: Mendorong siswa untuk bekerja secara mandiri dan menemukan solusi inovatif dalam batasan masalah yang diberikan.
Materi Pokok yang Diuji pada Semester 1 Kelas 3 SMK
Sebelum masuk ke contoh soal, penting untuk mengetahui materi pokok yang umumnya menjadi fokus di semester ini:
- Pengantar Android Studio & Gradle: Penggunaan IDE, struktur proyek, manifest file.
- Komponen UI Dasar: LinearLayout, RelativeLayout, ConstraintLayout, TextView, EditText, Button, ImageView, CheckBox, RadioButton, Spinner.
- Activity dan Lifecycle: Pemahaman siklus hidup Activity, perpindahan antar Activity.
- Intent: Explicit Intent (perpindahan Activity), Implicit Intent (membuka aplikasi lain, mengirim data).
- Penyimpanan Data Lokal Sederhana:
- Shared Preferences: Untuk menyimpan data konfigurasi atau data kecil lainnya.
- SQLite Database: Untuk menyimpan data terstruktur dalam jumlah yang lebih besar (CRUD: Create, Read, Update, Delete).
- RecyclerView/ListView: Menampilkan daftar data yang dinamis secara efisien.
- Toast & Snackbar: Menampilkan pesan singkat kepada pengguna.
- Dialogs: AlertDialog, DatePickerDialog, TimePickerDialog.
- Permissions: Permintaan izin akses ke fitur perangkat (kamera, lokasi, penyimpanan).
- Debugging: Menggunakan Logcat dan Breakpoints.
Format Ujian Praktikum
Ujian praktikum bergerak umumnya dilaksanakan dalam waktu 3-5 jam di laboratorium komputer dengan akses internet terbatas (hanya untuk referensi dokumentasi resmi atau Stack Overflow yang relevan, bukan untuk copy-paste mentah). Setiap siswa akan diberikan satu set soal yang harus diselesaikan secara mandiri. Hasil akhir yang dikumpulkan biasanya berupa:
- File proyek Android Studio yang lengkap (source code).
- File APK yang sudah bisa diinstal dan dijalankan.
- Laporan singkat (opsional, tergantung instruksi guru) yang menjelaskan fitur dan cara penggunaan aplikasi.
Contoh Soal Ujian Praktikum Bergerak Kelas 3 SMK Semester 1
Berikut adalah tiga skenario soal dengan tingkat kesulitan yang meningkat, mencakup materi-materi yang telah disebutkan.
Soal 1: Aplikasi Data Diri & Kalkulator Sederhana (Bobot: 30%)
Tujuan: Menguji pemahaman dasar UI, Intent eksplisit dan implisit, serta penanganan input sederhana.
Skenario:
Anda diminta untuk membuat aplikasi Android yang terdiri dari dua Activity:
- Activity Utama (MainActivity): Berisi formulir data diri dan tombol untuk berpindah ke Activity Kalkulator.
- Activity Kalkulator (CalculatorActivity): Berisi dua input angka, empat tombol operasi (tambah, kurang, kali, bagi), dan satu TextView untuk menampilkan hasil.
Detail Tugas:
Bagian A: MainActivity
- Desain UI:
- Buat layout menggunakan
LinearLayout
atauConstraintLayout
. - Tambahkan
TextView
sebagai "Formulir Data Diri". - Tambahkan
EditText
untuk input:- Nama Lengkap (type: text)
- Nomor Induk Siswa (NIS) (type: number)
- Kelas (type: text)
- Alamat Email (type: textEmailAddress)
- Tambahkan
Button
dengan teks "Lihat Data & Hitung". - Tambahkan
Button
dengan teks "Hubungi Developer" yang akan membuka aplikasi email dengan alamat email developer tertentu.
- Buat layout menggunakan
- Fungsionalitas:
- Ketika tombol "Lihat Data & Hitung" diklik:
- Validasi input: Pastikan semua
EditText
tidak kosong. Jika ada yang kosong, tampilkanToast
peringatan. - Jika semua input terisi, kirimkan data Nama, NIS, dan Kelas ke
CalculatorActivity
menggunakanExplicit Intent
. - Pindah ke
CalculatorActivity
.
- Validasi input: Pastikan semua
- Ketika tombol "Hubungi Developer" diklik:
- Gunakan
Implicit Intent
untuk membuka aplikasi email default. - Atur penerima email ke
[email protected]
dan subjek "Pertanyaan Aplikasi".
- Gunakan
- Ketika tombol "Lihat Data & Hitung" diklik:
Bagian B: CalculatorActivity
- Desain UI:
- Buat layout yang menampilkan
TextView
untuk menyambut pengguna (misal: "Halo, [Nama Siswa] dari Kelas [Kelas Siswa]!"). Data Nama dan Kelas diambil dariMainActivity
. - Tambahkan dua
EditText
untuk input angka (type: numberDecimal). - Tambahkan empat
Button
untuk operasi: Tambah (+), Kurang (-), Kali (x), Bagi (/). - Tambahkan
TextView
untuk menampilkan hasil perhitungan. - Tambahkan
Button
untuk kembali keMainActivity
.
- Buat layout yang menampilkan
- Fungsionalitas:
- Terima data Nama dan Kelas dari
MainActivity
dan tampilkan diTextView
sambutan. - Ketika salah satu tombol operasi (+, -, x, /) diklik:
- Ambil nilai dari kedua
EditText
angka. - Lakukan operasi matematika yang sesuai.
- Tampilkan hasilnya di
TextView
hasil. - Tangani kasus pembagian dengan nol dengan menampilkan
Toast
peringatan "Tidak bisa dibagi nol!".
- Ambil nilai dari kedua
- Ketika tombol "Kembali" diklik, tutup
CalculatorActivity
dan kembali keMainActivity
.
- Terima data Nama dan Kelas dari
Soal 2: Aplikasi Manajemen Catatan Harian Sederhana (Bobot: 40%)
Tujuan: Menguji kemampuan penggunaan RecyclerView
, SQLite Database
(CRUD), Dialog
, dan Shared Preferences
.
Skenario:
Anda diminta untuk membuat aplikasi manajemen catatan harian yang memungkinkan pengguna menambah, melihat, mengedit, dan menghapus catatan. Aplikasi ini juga harus memiliki fitur pengaturan tema (terang/gelap) yang disimpan secara permanen.
Detail Tugas:
Bagian A: Daftar Catatan (MainActivity)
- Desain UI:
- Gunakan
RecyclerView
untuk menampilkan daftar catatan. Setiap item catatan harus menampilkan judul dan tanggal/waktu pembuatan. - Tambahkan
FloatingActionButton (FAB)
di pojok kanan bawah untuk menambah catatan baru. - Tambahkan
Toolbar
di bagian atas dengan judul "Catatan Harian" dan sebuah ikon menu (misal: tiga titik vertikal) untuk "Pengaturan".
- Gunakan
- Fungsionalitas:
- SQLite Database:
- Buat database SQLite dengan tabel
catatan
yang memiliki kolom:id (PRIMARY KEY AUTOINCREMENT)
,judul (TEXT)
,isi (TEXT)
,tanggal (TEXT)
. - Buat
DatabaseHelper
untuk mengelola operasi database (tambah, baca, update, hapus).
- Buat database SQLite dengan tabel
- RecyclerView:
- Tampilkan semua catatan dari database ke
RecyclerView
. - Ketika
FAB
diklik, bukaActivity
baru (AddEditNoteActivity
) untuk menambah catatan. - Ketika item catatan di
RecyclerView
diklik, bukaAddEditNoteActivity
dengan data catatan yang dipilih untuk mengedit. - Ketika item catatan ditekan lama (long press), tampilkan
AlertDialog
konfirmasi untuk menghapus catatan tersebut.
- Tampilkan semua catatan dari database ke
- Toolbar Menu:
- Ketika menu "Pengaturan" di
Toolbar
diklik, bukaActivity
baru (SettingsActivity
).
- Ketika menu "Pengaturan" di
- SQLite Database:
Bagian B: Tambah/Edit Catatan (AddEditNoteActivity)
- Desain UI:
- Tambahkan
EditText
untuk judul catatan. - Tambahkan
EditText
(multiline) untuk isi catatan. - Tambahkan
Button
"Simpan Catatan".
- Tambahkan
- Fungsionalitas:
- Jika
Activity
dibuka dariFAB
(mode tambah),EditText
kosong. - Jika
Activity
dibuka dari klik itemRecyclerView
(mode edit), tampilkan data catatan yang diterima dariMainActivity
diEditText
yang sesuai. - Ketika tombol "Simpan Catatan" diklik:
- Validasi: Pastikan judul tidak kosong.
- Jika mode tambah, simpan catatan baru ke database SQLite.
- Jika mode edit, update catatan yang ada di database SQLite.
- Setelah berhasil disimpan/diupdate, tampilkan
Toast
konfirmasi dan kembali keMainActivity
(yang akan otomatis me-refresh daftar catatan).
- Jika
Bagian C: Pengaturan (SettingsActivity)
- Desain UI:
- Tambahkan
Switch
atauRadioGroup
untuk pilihan tema: "Terang" dan "Gelap".
- Tambahkan
- Fungsionalitas:
- Gunakan
Shared Preferences
untuk menyimpan pilihan tema pengguna. - Ketika pilihan tema diubah, simpan nilai ke
Shared Preferences
. - Di
MainActivity
(danAddEditNoteActivity
jika memungkinkan), terapkan tema yang dipilih dariShared Preferences
saatActivity
dibuat (misalnya denganAppCompatDelegate.setDefaultNightMode
).
- Gunakan
Soal 3: Aplikasi Katalog Produk dengan Fitur Gambar & Pencarian (Bobot: 30%)
Tujuan: Menguji kemampuan integrasi SQLite
dengan data gambar, RecyclerView
yang lebih kompleks, Permissions
, dan fitur SearchView
.
Skenario:
Anda diminta untuk mengembangkan aplikasi katalog produk sederhana. Pengguna dapat menambah produk baru dengan nama, deskripsi, harga, dan gambar. Produk-produk ini akan ditampilkan dalam daftar, dapat dicari, dan diedit/dihapus.
Detail Tugas:
Bagian A: Daftar Produk (MainActivity)
- Desain UI:
- Gunakan
RecyclerView
untuk menampilkan daftar produk. Setiap item produk harus menampilkan gambar, nama produk, dan harga. - Tambahkan
FloatingActionButton (FAB)
untuk menambah produk baru. - Tambahkan
Toolbar
di bagian atas dengan judul "Katalog Produk" dan sebuahSearchView
yang terintegrasi.
- Gunakan
- Fungsionalitas:
- SQLite Database:
- Buat database SQLite dengan tabel
produk
yang memiliki kolom:id (PRIMARY KEY AUTOINCREMENT)
,nama (TEXT)
,deskripsi (TEXT)
,harga (REAL)
,image_path (TEXT)
.image_path
akan menyimpan URI/path gambar lokal. - Buat
DatabaseHelper
untuk operasi CRUD produk.
- Buat database SQLite dengan tabel
- RecyclerView:
- Tampilkan semua produk dari database ke
RecyclerView
. - Untuk gambar produk, gunakan
ImageView
dan muat gambar dariimage_path
yang tersimpan di database. Jikaimage_path
kosong atau tidak valid, tampilkan gambar placeholder default. - Ketika
FAB
diklik, bukaActivity
baru (AddEditProductActivity
) untuk menambah produk. - Ketika item produk di
RecyclerView
diklik, bukaAddEditProductActivity
dengan data produk yang dipilih untuk mengedit. - Ketika item produk ditekan lama, tampilkan
AlertDialog
konfirmasi untuk menghapus produk.
- Tampilkan semua produk dari database ke
- SearchView:
- Implementasikan
SearchView
diToolbar
untuk memfilter daftar produk berdasarkan nama produk. - Ketika teks pencarian berubah,
RecyclerView
harus diperbarui secara dinamis untuk hanya menampilkan produk yang cocok.
- Implementasikan
- SQLite Database:
Bagian B: Tambah/Edit Produk (AddEditProductActivity)
- Desain UI:
- Tambahkan
EditText
untuk nama produk. - Tambahkan
EditText
untuk deskripsi produk (multiline). - Tambahkan
EditText
untuk harga produk (type: numberDecimal). - Tambahkan
ImageView
untuk menampilkan gambar produk yang dipilih. - Tambahkan
Button
"Pilih Gambar" yang akan membuka galeri atau kamera (pilih salah satu, atau keduanya melaluiAlertDialog
). - Tambahkan
Button
"Simpan Produk".
- Tambahkan
- Fungsionalitas:
- Jika
Activity
dibuka dariFAB
(mode tambah),EditText
danImageView
kosong. - Jika
Activity
dibuka dari klik itemRecyclerView
(mode edit), tampilkan data produk yang diterima dariMainActivity
diEditText
yang sesuai, dan muat gambar produk keImageView
. - Pilih Gambar:
- Ketika tombol "Pilih Gambar" diklik, minta izin
READ_EXTERNAL_STORAGE
danCAMERA
(jika memilih dari kamera). - Setelah izin diberikan, gunakan
Implicit Intent
(Intent.ACTION_PICK
untuk galeri atauMediaStore.ACTION_IMAGE_CAPTURE
untuk kamera) untuk mendapatkan gambar. - Tangani hasil pemilihan gambar di
onActivityResult
atauregisterForActivityResult
. - Tampilkan gambar yang dipilih di
ImageView
dan simpan URI/path gambar secara sementara.
- Ketika tombol "Pilih Gambar" diklik, minta izin
- Ketika tombol "Simpan Produk" diklik:
- Validasi: Pastikan nama produk dan harga tidak kosong.
- Jika mode tambah, simpan produk baru ke database SQLite, termasuk path gambar yang dipilih.
- Jika mode edit, update produk yang ada di database SQLite, termasuk path gambar (jika ada perubahan).
- Setelah berhasil disimpan/diupdate, tampilkan
Toast
konfirmasi dan kembali keMainActivity
.
- Jika
Rubrik Penilaian Ujian Praktikum
Penilaian akan didasarkan pada beberapa aspek berikut, dengan bobot yang dapat disesuaikan oleh penguji:
- Fungsionalitas (40%):
- Semua fitur yang diminta berfungsi dengan baik tanpa crash.
- Validasi input berjalan sesuai harapan.
- Operasi CRUD database berjalan lancar.
- Intent (eksplisit & implisit) bekerja dengan benar.
- Pengelolaan izin (permissions) dilakukan dengan tepat.
- Fitur pencarian berfungsi.
- Desain UI/UX (25%):
- Tata letak (layout) rapi dan responsif.
- Komponen UI digunakan dengan benar dan sesuai konteks.
- Navigasi antar
Activity
jelas. - Tampilan konsisten dan enak dilihat.
- Penggunaan
Toast
/Snackbar
/Dialog
yang tepat untuk feedback pengguna.
- Kualitas Kode (25%):
- Kode bersih, terstruktur, dan mudah dibaca.
- Penggunaan nama variabel, metode, dan kelas yang deskriptif.
- Tidak ada kode yang redundan atau tidak perlu.
- Penanganan error yang memadai (misalnya
try-catch
untuk operasi kritis). - Pemisahan logika (misal:
DatabaseHelper
terpisah dariActivity
).
- Kepatuhan Instruksi & Kreativitas (10%):
- Semua instruksi dalam soal diikuti.
- Ada usaha untuk menambahkan fitur kecil atau penyempurnaan di luar instruksi (nilai plus).
- Ketepatan waktu pengerjaan.
Tips Persiapan untuk Siswa
- Pahami Konsep, Bukan Hanya Hafal Kode: Mengerti mengapa suatu kode ditulis dan bagaimana komponen bekerja akan lebih membantu daripada hanya menghafal sintaks.
- Latihan Mandiri: Kerjakan proyek-proyek kecil secara rutin. Ulangi materi yang dirasa sulit.
- Gunakan Dokumentasi Resmi: Biasakan membaca dokumentasi Android Developers. Ini adalah sumber informasi terbaik.
- Debugging adalah Kunci: Pelajari cara menggunakan Logcat dan breakpoints di Android Studio untuk menemukan dan memperbaiki kesalahan.
- Manajemen Waktu: Alokasikan waktu untuk setiap bagian soal. Jangan terpaku pada satu masalah terlalu lama.
- Istirahat Cukup: Kondisi fisik dan mental yang prima sangat penting saat ujian.
- Simulasi Ujian: Coba kerjakan soal-soal latihan dalam batas waktu yang ditentukan untuk melatih kecepatan dan ketepatan.
Kesimpulan
Ujian praktikum bergerak di kelas 3 SMK semester 1 adalah momen penting untuk mengukur kesiapan siswa menjadi seorang pengembang aplikasi mobile yang kompeten. Soal-soal yang diberikan dirancang untuk menguji berbagai aspek, mulai dari dasar-dasar UI hingga integrasi database dan fitur perangkat keras. Dengan persiapan yang matang, pemahaman konsep yang kuat, dan kemampuan pemecahan masalah yang baik, siswa SMK diharapkan mampu melewati ujian ini dengan sukses dan siap menghadapi tantangan pengembangan aplikasi bergerak di masa depan. Kemampuan ini tidak hanya relevan untuk dunia kerja, tetapi juga membuka pintu ke jenjang pendidikan yang lebih tinggi di bidang teknologi.