Evaluasi Akhir Semester P. Web - 2018
- - Login Aplikasi dengan user dan password
- - Mengisi Formulir pendaftaran
- - Edit profil dan biodata calon pendaftar
- - Memilih sekolah tujuan yang dipilih
- - View formulir pendaftaran yang sudah dipermanen
- - Download formulir pendaftaran
- Buat rancangan databasenya
- Buat rancangan interface aplikasi
- Implementasi dan hostingkan
- Tulis dokumentasi di Blog kemudian tweet dan mention @fajarbaskoro11 jika sudah selesai.
Sebagai ilustrasi bisa dijadikan gambaran bisa melihat manual di bawah ini.
Referensi
Aplikasi PPDB OnlinePembuatan Database PPDB
Aplikasi Kasir Cafe
Aplikasi PPDB Rot93
Evaluasi Akhir Semester PBO-2018
Gambar di bawah ini sebagai contoh image editor.
Soal
- Gambarkan rancangan interfacenya.
- Gambarkan dan jelaskan Class Diagram penyusun dari image viewer yang akan dibuat.
- Implementasikan ke dalam program dan buat link nya di posting blog ini.
PBO-Polymorphism - 9
Polimorfisme dalam inheritance memungkinkan objek dari
subclass digunakan di mana pun objek superclass diharapkan, dan memungkinkan
metode yang sama untuk berperilaku berbeda tergantung pada kelas objek yang
memanggilnya. Polimorfisme memberikan fleksibilitas pada kode sehingga metode
yang sama bisa diimplementasikan secara berbeda di kelas yang berbeda, namun
tetap bisa dipanggil melalui referensi superclass.
Penjelasan Polimorfisme
Dalam inheritance, polimorfisme memungkinkan satu metode
yang sama di superclass di-override (ditimpa) di subclass untuk
memberikan perilaku yang sesuai dengan subclass tersebut. Ini memungkinkan kode
yang memanggil metode di superclass tetap bisa menggunakan metode dengan nama
yang sama di subclass. Ini mengurangi kebutuhan untuk menulis kode tambahan
untuk memeriksa tipe objek atau memanggil metode spesifik berdasarkan tipe.
Dengan polimorfisme:
- Kita
dapat menambah jenis display baru dengan mudah tanpa harus mengubah kode
yang memanggil display().
- Kode
menjadi lebih modular dan mudah dibaca karena menggunakan metode yang sama
(display()) namun sesuai konteks.
- Menghindari
kondisi if-else untuk memeriksa tipe Post, sehingga kode lebih bersih dan
ringkas.
Polimorfisme memudahkan penulisan kode yang fleksibel dan
mudah di-maintain dalam sistem yang mengandung hierarki kelas yang beragam.
Overriding
Overriding adalah fitur dalam pemrograman
berorientasi objek yang memungkinkan subclass untuk menyediakan implementasi
spesifik dari suatu metode yang sudah didefinisikan di superclass.
Ciri-ciri utama Overriding:
- Nama,
Parameter, dan Tipe Pengembalian yang Sama: Metode di subclass harus
memiliki nama, parameter, dan tipe pengembalian yang sama dengan metode di
superclass.
- Dukungan
Polimorfisme: Overriding memungkinkan penggunaan polimorfisme, di mana
objek dari subclass dapat diperlakukan sebagai objek dari superclass,
tetapi tetap menjalankan versi metode yang di-override di subclass.
- Annotations:
Dalam Java, keyword @Override biasanya ditambahkan sebelum metode yang di-override
untuk memastikan bahwa metode tersebut memang merupakan overriding dari
superclass. Ini membantu menghindari kesalahan penulisan atau penamaan
yang mungkin tidak cocok dengan metode di superclass.
Manfaat Overriding:
- Spesialisasi
Metode untuk Subclass: Subclass dapat memiliki metode dengan perilaku
khusus, yang mungkin tidak relevan bagi superclass.
- Pemanfaatan
Polimorfisme: Memungkinkan satu metode yang sama untuk berperilaku
berbeda sesuai tipe objek yang memanggilnya.
- Modular
dan Extensible: Dengan overriding, kode menjadi modular karena kita
tidak perlu memodifikasi kode superclass untuk mengubah perilaku dalam
subclass.
Contoh Studi Kasus Overriding: Sistem Pengelolaan
Kendaraan di Rental Mobil
Misalkan kita mengelola sistem rental mobil yang mendukung
beberapa jenis kendaraan seperti mobil biasa, truk, dan kendaraan mewah. Setiap
kendaraan memiliki cara yang berbeda dalam menghitung tarif sewa berdasarkan
jenisnya. Kita bisa menggunakan overriding untuk menyediakan metode calculateRentalCost()
yang spesifik untuk setiap jenis kendaraan.
1. Membuat Superclass Vehicle
java
class Vehicle {
protected double
baseRate;
this.baseRate
= baseRate;
}
public double calculateRentalCost(int
days) {
return
baseRate * days;
}
}
- Vehicle
memiliki metode calculateRentalCost() yang menghitung tarif berdasarkan
tarif dasar (baseRate) dikalikan dengan jumlah hari (days).
- Subclass
nanti akan meng-override metode ini untuk menyesuaikan tarif sesuai
jenis kendaraannya.
2. Menggunakan Overriding dalam Subclass Car, Truck, dan LuxuryCar
java
class Car extends Vehicle {
public Car(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Mobil biasa
tanpa biaya tambahan
return
baseRate * days;
}
}
class Truck extends Vehicle {
public Truck(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Truk
memiliki biaya tambahan untuk penggunaan berat
double heavyDutyFee
= 50.0;
return
(baseRate * days) + heavyDutyFee;
}
}
class LuxuryCar extends Vehicle {
public LuxuryCar(double
baseRate) {
super(baseRate);
}
public double calculateRentalCost(int
days) {
// Kendaraan
mewah memiliki tarif tambahan untuk layanan premium
double luxuryFee
= 100.0;
return
(baseRate * days) + luxuryFee;
}
}
- Car:
calculateRentalCost() menggunakan tarif dasar saja tanpa tambahan.
- Truck:
calculateRentalCost() menambahkan biaya heavyDutyFee karena truk
memerlukan biaya tambahan untuk penggunaan berat.
- LuxuryCar:
calculateRentalCost() menambahkan luxuryFee untuk layanan premium.
3. Menggunakan Polimorfisme dengan Overriding
Karena Car, Truck, dan LuxuryCar adalah subclass dari Vehicle,
kita bisa menggunakan polimorfisme untuk memanggil calculateRentalCost() pada
objek dari tipe Vehicle namun hasilnya sesuai dengan tipe objek aslinya.
java
public class Main {
public static void
main(String[] args) {
Vehicle myCar =
new Car(200);
Vehicle myTruck
= new Truck(300);
Vehicle myLuxuryCar
= new LuxuryCar(500);
// Output: Car
rental cost for 3 days: 600.0
// Output:
Truck rental cost for 3 days: 950.0
// Output:
Luxury Car rental cost for 3 days: 1600.0
}
}
Penjelasan:
Pada contoh ini:
- myCar.calculateRentalCost(rentalDays)
memanggil versi metode calculateRentalCost() di kelas Car, yang hanya
mengalikan tarif dasar dengan jumlah hari.
- myTruck.calculateRentalCost(rentalDays)
memanggil versi calculateRentalCost() di Truck, yang menambahkan heavyDutyFee.
- myLuxuryCar.calculateRentalCost(rentalDays)
memanggil versi calculateRentalCost() di LuxuryCar, yang menambahkan luxuryFee.
Materi
Sourcecode
Pengumpulan Tugas
Form Monitoring Tugas
Latihan :
Buatlah sistem reservasi tiket pesawat
yang mendukung tiga jenis kelas penerbangan:
- Ekonomi
- Bisnis
- First
Class
Setiap kelas penerbangan memiliki perhitungan tarif yang
berbeda-beda. Selain itu, setiap kelas juga memiliki kebijakan khusus, seperti
fasilitas tambahan, batas bagasi, atau layanan yang disediakan.
Struktur Kelas:
- Kelas
Ticket adalah kelas dasar atau superclass yang berfungsi sebagai kelas
umum untuk semua jenis reservasi tiket pesawat.
- Kelas
EconomyTicket, BusinessTicket, dan FirstClassTicket adalah subclass yang
mewarisi dari Ticket. Setiap subclass mengoverride metode calculateFare()
untuk menentukan tarif sesuai kelas penerbangan.
- Ketentuan
Diskon ticket
· EconomyTicket memberikan diskon 10%.
· BusinessTicket menambahkan biaya 25%.
· FirstClassTicket menambahkan biaya 50%.
DOME source code
PBO-Memperbaiki Struktur dengan Inheritance
Pengantar Inheritance
Inheritance (pewarisan) adalah mekanisme dalam pemrograman berorientasi objek (OOP) yang memungkinkan sebuah kelas (child class) untuk mewarisi atribut dan metode dari kelas lain (parent class). Tujuannya adalah untuk meningkatkan struktur program, menghindari pengulangan kode, dan meningkatkan keterbacaan serta pemeliharaan kode.
Manfaat Inheritance
Inheritance memberikan berbagai manfaat struktural pada kode:
- Reusabilitas Kode: Memungkinkan reuse kode yang sudah ada pada parent class di child class.
- Konsistensi dan Keterbacaan: Dengan inheritance, struktur aplikasi dapat diatur secara hierarkis sehingga alur logika dan struktur program menjadi lebih jelas.
- Pemeliharaan Kode Lebih Mudah: Jika perubahan diperlukan pada fitur umum, kita hanya perlu mengubahnya di parent class, dan semua child class otomatis mewarisi perubahan tersebut.
Deskripsi Proyek
The Network Project bertujuan untuk membuat prototipe aplikasi jejaring sosial yang sangat sederhana. Dalam konteks ini, proyek hanya mencakup bagian kecil dari fitur dasar sebuah aplikasi jejaring sosial, seperti mengelola pengguna, menambahkan postingan, dan memanipulasi data pengguna.
Struktur dan Kelas Utama
Pada intinya, proyek ini memiliki beberapa kelas utama yang menggambarkan entitas sosial dalam aplikasi jejaring sosial:
User: Kelas
User
merepresentasikan individu pengguna dalam aplikasi. Atributnya mungkin termasukusername
,name
, danstatus
. Metode di dalamnya memungkinkan interaksi seperti meng-update status dan melihat informasi profil.Post: Kelas
Post
menggambarkan sebuah postingan yang bisa dibuat oleh pengguna. Setiap postingan mungkin memiliki atribut seperticontent
,timestamp
,author
, danlikes
. Metode pada kelas ini mungkin mencakup tindakan untuk menambah atau menghapus like.Network: Kelas
Network
berperan sebagai tempat untuk menyimpan daftar pengguna dan postingan dalam aplikasi. Kelas ini memungkinkan fungsi untuk menambah atau menghapus pengguna serta memanipulasi daftar postingan yang tersedia di aplikasi.
Implementasi Inheritance dalam Proyek
Studi kasus ini bisa mencakup penggunaan inheritance dalam menambah fitur pada aplikasi. Contohnya:
- Inheritance pada User Type: Anda bisa mengembangkan aplikasi ini dengan menambahkan beberapa tipe pengguna yang berbeda. Misalnya, Anda bisa membuat subclass
AdminUser
atauRegularUser
, yang masing-masing memiliki akses dan hak yang berbeda dalam sistem. - Polymorphism untuk Aksi Postingan: Dengan menerapkan inheritance pada
Post
, kita bisa membuat jenis-jenis postingan yang berbeda, sepertiImagePost
atauTextPost
. Setiap jenis postingan bisa memiliki cara yang berbeda dalam menampilkan konten atau mengolah data.
Encapsulation dan Akses Kontrol
Encapsulation atau pengkapsulan digunakan untuk melindungi data internal pada setiap kelas. Misalnya:
- Data pribadi dari
User
harus diakses melalui metode getter dan setter, bukan secara langsung. - Atribut
content
padaPost
sebaiknya bersifatprivate
atauprotected
untuk menjaga integritas data.
Contoh Kasus Penggunaan
- Menambahkan User: Administrator dapat menambah pengguna baru ke jaringan menggunakan metode di kelas
Network
. - Memposting Status: Pengguna dapat membuat objek
Post
baru yang berisi status atau gambar. Posting ini akan ditambahkan ke daftar posting di kelasNetwork
. - Interaksi pada Postingan: Pengguna dapat menambah atau menghapus "like" pada posting, yang ditangani melalui metode di dalam kelas
Post
.
Manfaat dari Struktur OOP di The Network Project
Studi kasus ini menunjukkan bahwa dengan struktur OOP:
- Program lebih modular dan mudah untuk dikembangkan lebih lanjut.
- Kode lebih mudah dipelihara, karena tiap kelas bertanggung jawab atas fungsinya sendiri.
- Fleksibilitas untuk memperluas sistem tanpa mengubah struktur dasar kode berkat penerapan inheritance dan encapsulation.
Peluang Pengembangan Lanjutan
- Menambah Komentar pada Postingan: Dengan membuat subclass
Comment
, kita dapat mengimplementasikan fitur komentar yang dapat ditautkan ke objekPost
. - Follower System: Dengan menambahkan atribut
followers
danfollowing
pada kelasUser
, pengguna bisa mengikuti satu sama lain, mirip dengan aplikasi media sosial modern. - Pengelolaan Data: Peningkatan pada struktur data, misalnya dengan menggunakan koleksi (list, map) yang lebih efisien untuk menampung pengguna dan postingan.
Latihan
- Buat rancangan class diagram dengan menggunakan inheritance
- Buat aplikasi yang bisa menampilkan list kendaraan yang tersedia, dan juga daftar nama penyewa beserta informasi detail kendaraan yang disewa
PWEB-2018-Mengenal Teknologi Ajax
Tanpa Ajax
Memakai Ajax
Materi
Referensi :
- Belajar Ajax
- Contoh Ajax untuk filter alamat-daerah
- Pengenalan Ajax untuk Designer
- Contoh Penggunaan Ajax
- https://www.w3bai.com/id/ajax/ajax_intro.html
- Contoh ajax lagi
PBO - Desain Class - Kopling Kohesi
World of Zuul
Referensi :
- Design Class
- Github Zuul Bad
- Github Game Java
- Silo Indiana Bluej
- ISG Blandford
- Kumpulan Java Comsigate
- BlueJ slide-1 and slide-2
UTS-APSI-2018
Soal
- Buatlah system request dari gambaran aplikasi di atas
- Tuliskan Functional Requirement nya
- Tuliskan Non Functional Requirementnya
- Buatlah studi kelayakan/ feasibility study dari aplikasi pendataan sekolah di atas
UTS-PWEB-2018-Manajemen Prestasi Siswa
Isian E-Rapor adalah nilai pelajaran, nilai ektra kurikuler, dan prestasi siswa yang di dapat selama semester berlangsung.
Contoh aplikasi E-Rapor bisa dilihat dalam video di bawah ini
Soal :
- Buatlah rancangan input prestasi untuk E-Rapor
- Buatlah rancangan database yang digunakan untuk menyimpan
- Implementasikan form input prestasi siswa dan hasil output penyimpanannya
UTS-PBO-B-2018 Manless Parking System
Perangkat Manless Parking system terdiri dari perangkat pintu masuk, dan perangkat pada pos pintu keluar.
Perankat Pintu Masuk Parkir
- Dispenser Box: adalah box dimana Termal Printer atau bisa juga berupa Card Dispenser dan perangkat lain dipasang. Box Dispenser ini berada paling depan karena pengunjung harus tekan tombol dan mendapatkan karcis parkir atau Kartu Parkir yang keluar dari Dispenser Box ini.
- Loop Detector: adalah perangkat sensor kendaraan yang mana terdiri dari antena loop yang di pasang dibawah lantai atau aspal atau paving (tergantung area) dan controller loop detector itu sendiri. Biasanya pada Sistim Parkir Manless paling tidak dipasang 2 unit loop detektor yaitu di depan Box Dispenser dan di depan Barrier Gate.
- Controller Manless: adalah modul yang didesain khusus dari microcontroller untuk bisa menterjemahkan input dan output yang diperlukan pada sistem parkir manless ini. Beda supplier beda pula controller manless ini. Controller Manless ini dipasang di dalam Box Dispenser. Dibeberapa suppler system parkir menggunakan mini-pc atau juga ada yang menggunakan motherboard Pc. Kami menggunakan pure controller yang berkomunikasi dengan PC di gate exit melalui LAN (local Area Network) yang terbukti lebih stabil.
- Thermal Printer: adalah printer thermal auto cutter yang dugunakan untuk print karcis setiap pengunjung yang masuk area parkir. Dan pasti Printer auto cutter ini berada didalam box dispenser yang dipasang sedemikian rupa sehingga karcir parkir bisa keluar dengan sempurna dan yang tidak kalah penting adalah gampang dalam mengganti kertas thermal.
- Camera: adalah perangkat yang digunakan untuk capture foto kendaraan yang masuk. Bisa capture pelat nomor, capture kendaraan utuh atau capture pengendara atau driver tergantung kebutuhan. Dan hasil foto yang dicapture ini adalah sebagai foto perbandingan yang akan muncul di komputer pos keluar untuk dibandingkan dengan hasil camera dipos keluar itu sendiri oleh operator parkir. Dalam hal ini kami menggunakan IP Camera dengan resolusi gambar yang cukup bagus dibandingkan dengan yang menggunakan webcam.
- Display: adalah perangkat tambahan yang jika diperlukan adalah untuk menampilkan text pada box dipenser yang seyogyanya bersifat interaktif dan memberikan petunjuk tambahan bagi pengendara tentang apa yang harus dilakukan dengan sistem parkir manless ini. Tidak semua supplier parkir menyedikan fitur tambahan ini.
- Speaker: adalah perangkat yang mengelaurkan suara tentang bagaimana pengendara bertindak dalam menggunakan Sistim Manless ini. Suara yang dimunculkan bisa berupa "Selamat datang di.................., Silakan tekan Tombol Hijau"
- Tombol: adalah perangkat yang ditekan berdasarkan instruksi yang muncul dari speaker agar Box Dispenser mengeluarkan Karcis, Camera akan capture gambar dan Barrier Gate akan terbuka.
- Barrier Gate: adalag Palang parkir yanga akan buka tutup sesuai instruksi yang diberikan oleh sistem menless ini.
Perangkat Pintu Keluar Parkir
- Pos Keluar: adalah tempat duduk operator di jaluar keluar dari system parkir ini. Pos Keluar ini bisa berupa Pos Permanen atau juga Pos Portable
- Komputer: adalah perangkat dimana software parking system di install
- Thermal Printer: untuk print tiket keluar jika pengunjung menghendaji bukti parkir
- Barcode Scanner: adalag alat pembaca barcode yang di cetak pada karcis parkir
- Mini Controller: adalah controller sederhana yang berfungsi sebagai interface antara barrier gate keluar dengan PC
- Camera: untuk capture gambar kendaraan pasa saat diam dan melakukan pembayaran parkir yang mana hasil capture gambar ini akan dibandingkan dengan capture pada saat kendaraan masuk tadi untuk selanjutnya pihak operator menilai kecocokannya
- Software Parking System
- Barrier Gate Keluar
- Loop Detector atau VLD
Soal
- Tuliskan deskripsi sistem parkir elektronik
- Sebutkan fitur/ menu yang ada di parkir elektronik
- Gambarkan alur cara pemakaiannya
- Gambarkan skema kelas untuk mengimplementasikannya beserta field dan methodnya
- Implementasikan program simulasinya (Buat komentar di blog untuk link solusinya)
UTS-PBO A-2018
Soal
- Tuliskan deskripsi sistem parkir elektronik
- Sebutkan fitur/ menu yang ada di parkir elektronik
- Gambarkan alur cara pemakaiannya
- Gambarkan skema kelas untuk mengimplementasikannya beserta field dan methodnya
- Implementasikan program simulasinya (Buat komentar di blog untuk link solusinya)
APSI-Analisa Use Case
Materi
APSI-Penentuan Kebutuhan PL
- Mengelola hasil elistasi kebutuhan untuk menghasilkan dokumen spesifikasi kebutuhan yang isi keseluruhannya sesuai dengan apa yang diinginkan pengguna (Liu and Yen, 1996).
- Mengembangkan persyaratan kualitas yang memadai dan rinci, dimana para manajer dapat membuat pekerjaan proyek yang realistis dan staf teknis dapat melanjutkan dengan perancangan, implementasi dan pengujian (Wiegers, 2003).
- Membangun pemahaman tentang karakteristik ranah permasalahan dan sekumpulan kebutuhan untuk menemukan solusi.
Studi Kasus
Deskripsi Kasus
System Proposal
Absensi
APSI-Seleksi dan Manajemen Proyek
Materi
APSI-Feasibility Study
Video
Absensi
Latihan
PWEB-2018-5-AJAX-JQuery
- URL, menentukan alamat URL mana yang akan direquest oleh HTTP Request (AJAX)type, tipe request yang akan dijalankan, apakah POST atau GET
- BeforeSend, event yang dilakukan ketika HTTP Request akan diproses
- Complete, event yang dilakukan ketika HTTP Request selesai dijalankan, namun tidak melihat apakah request sukses atau gagal
- Success, event yang dilakukan ketika HTTP Request selesai dan berhasil dijalankan dan mempunyai nilai balik yaitu data hasil request
- Data, data yang dikirim ke server ketika request dan diolah di server. Data ini akan diperlakukan berdasarkan 2 type yang ditentukan, yaitu GET atau POST.
Materi
Tutorial
Latihan
Referensi
- https://fajarbaskoro.blogspot.com/2018/10/pweb-2018-mengenal-teknologi-ajax.html
- http://jagocoding.com/tag/serial-ajax-dengan-jquery
- http://jagocoding.com/tutorial/99/AJAX_dengan_jQuery_Part_1
- https://www.malasngoding.com/pengertian-dan-cara-menggunakan-bootstrap/
- https://www.duniailkom.com/tutorial-belajar-jquery-bagi-pemula/
- https://www.malasngoding.com/belajar-javascript-pengertian-dan-pengenalan-javascript/