Dasar Pemrograman OOP dengan Java
Dasar Pemrograman OOP dengan Java
Dengan Java
Tingkat Dasar
KATA PENGANTAR
Pemgrograman Berorientasi Objek atau OOP merupakan metode yang menjadi standar industri
pengembangan perangkan lunak sekarang ini. Oleh karena itu sangat penting untuk dikuasai dan
dipahami, baik mulai dari sisi pemodelan sampai pada implementasi ke bahasa pemrograman. Bahasa
Java adalah bahasa yang mengadopsi secara sempurna konsep-konsep OOP yang meliputi: class, object,
encapsulation, inheritance, dan polymorphism.
Modul ini merupakan referensi untuk matakuliah Pemodelan dan Pemrograman Berorientasi Objek.
Dimana mahasiswa akan dibimbing untuk memahami konsep OOP dan juga bagaimana pemodelan dan
implementasinya di dalam pemrograman, dalam hal ini menggunakan bahasa Java. Modul ini meliputi
uraian konsep OOP, pemodelan class, source code, dan perancangan user interface.
Diharapkan modul ini dapat membantu mahasiswa di dalam memahami dan mengimplementasikan
konsep dan pemrograman berorientasi objek dalam dunia kerja nantinya.
3
DAFTAR ISI
Lembar Judul
Kata Pengantar ................................................................................................. 2
Daftar Isi .......................................................................................................... 3
Bab I Konsep OOP Dalam Bahasa Java .......................................................... 4
Class ..................................................................................................... 4
Object ................................................................................................... 5
Encapsulation ....................................................................................... 5
Polymorphism ...................................................................................... 5
Inheritance ............................................................................................ 6
Bab II Pemrograman Database Dengan Konsep OOP ..................................... 7
Perancangan Class Diagram ................................................................. 7
Source Code Class ................................................................................ 7
Perancangan User Interface .................................................................. 12
Menambahkan Library ......................................................................... 15
Mendesain Report Dengan I Report .................................................... 16
Bab III Aplikasi Java dengan Framework Hibernate ....................................... 26
4
BAB I
Tutorial ini akan membahasa implementasi OOP pada bahasa java. Berikut ini contoh penerapan
konsep OOP dalam bahasa pemrograman java.
1. Class
Class adalah struktur dasar dari suatu objek yang berisi atribut dan operasi. Berikut adalah
contoh dari class dalam bahasa Java.
class Ibu {
String nama;
int umur;
void getInfo(){
[Link](”Nama: ” + [Link]);
[Link](”Umur: ” + [Link]);
}
void menyanyi(){
[Link](”do re mi”);
}
}
Diatas adalah class Ibu yang mempunyai property nama dan umur. Dan mempunyai metode
getInfo dan menyanyi. berikut kita akan coba memangil kelas tersebut pada class utama/main.
[Link]();
[Link]();
}
}
2. Object
5
Object adalah instansiasi dari class, suatu object mereferensi ke suatu kelas. pada kode diatas
“mom” adalah object yang meng-instansiasi class Ibu. Setelah di-instansiasi baru bisa kita gunakan
property dan metode yang ada pada class Ibu dengan menggunakan objectnya.
3. Encapsulation / pembungkusan
Pada class Ibu ada metode getInfo dan menyanyi. Kita tidak tahu apa isi kode dari metode
tersebut, tapi kita bisa menggunakan metode tersebut pada class Main. Ini yang disebut
encapsulation / pembungkusan. Tidak perlu tahu apa isi kodenya, cukup tahu apa fungsi dari
metode tersebut.
4. Polymorphism
Berikut ini adalah contah konsep polymorphism. Kita akan coba modifikasi class Ibu, perhatikan
ada dua metode yang sama yaitu menyanyi tapi memiliki output yang berbeda.
class Ibu {
String nama;
int umur;
void getInfo(){
[Link](”Nama: ” + [Link]);
[Link](”Umur: ” + [Link]);
}
void menyanyi(String Lagu){
[Link](”Saya menyanyi lagu ” + Lagu);
}
void menyanyi(int Lagu){
if (Lagu==1){
[Link](”Saya menyanyi lagu Rock!”);
}else{
[Link](”Saya menyanyi lagu dangdut!”);
}
}
}
[Link](”Keroncong”);
[Link](2);
5. Inheritance
Pada contoh class Ibu di atas kita bisa praktekan inheritance dengan membuat class turunannya
misalkan class Anak. Class Anak ini mewarisi property dan metode yang ada pada class Ibu,
6
namun bisa juga kita tambahkan metode baru yang membedakannya dengan class Ibu. Misalkan
kita tambahkan metode menjahit pada class Anak.
void menjahit(){
[Link](”Saya menjahit baju!”);
}
}
Kita menggunakan keyword extends untuk menyatakan class ini adalah class turunan. Kemudian
kita panggil class Anak ini dari class Main.
}
}
Perhatikan di atas object rini yang merupakan instansiasi dari class Anak dapat juga menjalankan
metode getInfo dan menyanyi yang merupakan metode dari class Ibu.
7
BAB II
Dalam kasus ini kita akan menggunakan database mysql dengan database bernama latihan dan sebuah
table bernama karyawan dengan struktur sebagai berikut:
Nip : varchar
nm_kar :varchar
tem_lhr :varchar
tgl_lhr : date
jabatan : varchar
Tabel Karyawan
class j av atutorial
CConnection
CKaryaw an
+ cn: Connection - c: CConnection
- jabatan: String
+ closeConnection() : void - nama: String
+ openConnection() : void - nip: String
- temp_lahir: String
- tgl_lahir: String
+ CKaryawan() : void
+ delete() : boolean
+ getJabatan() : String
+ getNama() : String
+ getNip() : String
+ getRecordByNip() : ResultSet
+ getRecords() : ResultSet
+ getTempatLahir() : String
+ getTglLahir() : String
+ insert() : boolean
+ setJabatan(String) : void
+ setNama(String) : void
+ setNip(String) : void
+ setTempatLahir(String) : void
+ setTglLahir(String) : void
+ update() : boolean
Class Cconnection:
package javatutorial;
import [Link].*;
public class CConnection {
public Connection cn;
static final String JDBC_DRIVER = "[Link]";
static final String DATABASE_URL = "jdbc:mysql://localhost/latihan";
public void openConnection(){
try{
[Link](this.JDBC_DRIVER);
}catch(ClassNotFoundException ex){
[Link]();
}
try{
cn = [Link](this.DATABASE_URL,"root","aksi2006");
[Link]("Database Connected!");
}catch(SQLException ex){
[Link]();
}
}
public void closeConnection(){
try{
if(![Link]()){
[Link]();
[Link]("Database closed!");
}
}catch(SQLException ex){
[Link]();
}
}
}
9
Class Ckaryawan:
package javatutorial;
import [Link].*;
public class CKaryawan {
private String nip;
private String nama;
private String temp_lahir;
private String tgl_lahir;
private String jabatan;
private CConnection c=new CConnection();
/*Ini Konstruktor untuk membuka koneksi*/
public CKaryawan(){
[Link]();
}
}
public void setJabatan(String value){
[Link] = value;
}
public String getJabatan(){
return [Link];
}
r=true;
}catch(SQLException e){
[Link]([Link]());
r=false;
}
return r;
}
try{
Statement stmt = [Link]();
[Link](sql);
r=true;
}catch(SQLException e){
[Link]([Link]());
r=false;
}
return r;
}
Sekarang kita coba implementasikan class CKaryawan pada form seperti berikut:
• Fungsi (fillTable)
[Link]([Link]());
rs = [Link]();
}else{
rs = [Link]();
}
try {
while ([Link]()) {
String[] rows = {[Link](1), [Link](2), [Link](3),
[Link](4), [Link](5)};
[Link](rows);
}
[Link](defTab);
} catch (SQLException ex) {
[Link]([Link]());
}
ck=null;
}
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
[Link]([Link]() + [Link]() + [Link]());
[Link]([Link]());
if([Link]()){
[Link](rootPane, "Data Tersimpan");
[Link](false);
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
}
• Form (FormKaryawan)
private void formWindowActivated([Link] evt) {
[Link](false);
[Link]();
4. Menambahkan Library
Sebelum dijalankan pastikan terlebih dahulu anda sudah menambahkan libarary mysql drivernya,
caranya seperti berikut:
Sebelum mendesain report pastikan anda sudah menginstal aplikasi i-report (versi 3.1.2).
• Sekarang kita akan membuat menu untuk menampilkan formKaryawan dan reportnya,
namun sebelum itu buatlah sebuah class terlebih dahulu dengan nama FilePath seperti
berikut:
package javatutorial;
import [Link].*;
import [Link].*;
public class FilePath {
try {
filepath = filepath + [Link] + fileName;
[Link]("File Path : " + filepath);
[Link]();
} catch (Exception ex) {
[Link]();
}
return filepath;
}
}
Namun sebelumnya jangan lupa tambahkan library JasperReport kedalam project. Library yang
dibutuhkan untuk mengeksekusi JasperReport antara lain:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
• Klik kanan pada node Parameter pada Report Inspector pilih Add Parameter
24
• Berinama param_nip
BAB III
APLIKASI JAVA DENGAN FRAMEWORK HIBERNATE
Hibernate adalah sebuah librari Object-relational mapping (ORM) untuk bahasa pemrograman java, Yang
menyediakan framework untuk memetakan object-oriented domain model menjadi relational database
yang umum. Hibernate memecahkan masalah ketidaksesuaian impedansi object-relational dengan
menggantikan langsung akses persistence-related database dengan penanganan fungsi-fungsi object
tingkat tinggi.
Contoh Project.
5. Kemudian pilih table yang akan ditambahkan sebagai contoh disini table karyawan.
28
6. Klik Add Kemudian klik Next, anda dapat menempatkan class ini dalam package yang berbeda,
tapi disini kita coba dalam satu package yang sama.
12.
13. Berikut ini kode yang ada pada class Karyawan tersebut:
package javapersistence;
30
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Entity
@Table(name = "karyawan")
@NamedQueries({@NamedQuery(name = "[Link]", query = "SELECT k FROM Karyawan k"),
@NamedQuery(name = "[Link]", query = "SELECT k FROM Karyawan k WHERE [Link] =
:nip"), @NamedQuery(name = "[Link]", query = "SELECT k FROM Karyawan k WHERE
[Link] = :nmKar"), @NamedQuery(name = "[Link]", query = "SELECT k FROM
Karyawan k WHERE [Link] = :temLhr"), @NamedQuery(name = "[Link]", query =
"SELECT k FROM Karyawan k WHERE [Link] = :tglLhr"), @NamedQuery(name =
"[Link]", query = "SELECT k FROM Karyawan k WHERE [Link] = :jabatan")})
public class Karyawan implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "nip")
private String nip;
@Column(name = "nm_kar")
private String nmKar;
@Column(name = "tem_lhr")
private String temLhr;
@Column(name = "tgl_lhr")
@Temporal([Link])
private Date tglLhr;
@Column(name = "jabatan")
private String jabatan;
public Karyawan() {
}
@Override
public int hashCode() {
int hash = 0;
32
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Karyawan)) {
return false;
}
Karyawan other = (Karyawan) object;
if (([Link] == null && [Link] != null) || ([Link] != null &&
)) {
return false;
}
return true;
}
@Override
public String toString() {
return "[Link][nip=" + nip + "]";
}
14. Kemudian tambahkan library yang dibutuhkan, caranya klik kanan pada icon Libraries, pilih add
library, Pilih Hibernate JPA, dan Mysql JDBC, Pilih Add Library.
33
15. Kemudian selanjutnya kita desain class controller dengan nama “ControllerKaryawan”, seperti
berikut:
34
class j av apersistence
ControllerKaryaw an Karyaw an
Query
+ getResultList() : Collection
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@[Link](unitName="JPUKaryawan")
EntityManagerFactory emf = [Link]("JPUKaryawan");
EntityManager em = [Link]();
public ControllerKaryawan(){
}
public boolean delete(String nip){
boolean r = false;
Karyawan kar = [Link]([Link], nip);
if(kar != null){
[Link]().begin();
[Link](kar);
35
[Link]().commit();
r = true;
}
return r;
}
public Collection<Karyawan> getAllKaryawan(){
Query qry = [Link]("[Link]");
return (Collection<Karyawan>) [Link]();
}
public Collection<Karyawan> getFilteredKaryawan(String sql){
Query qry = [Link](sql);
return (Collection<Karyawan>) [Link]();
16. Kemudian copy frame “FormKaryawan” yang ada pada project JavaTutorial sebelumnya, dan
edit kodenya seperti dibawah ini:
uc Use Case
Tampilkan Data
Karyaw an
Actor1
sd Sequence Diagram
Actor1 FormKaryawan
formWindowActivated() ck qry :Query em :Karyaw an
:ControllerKaryaw an :EntityManager
fillTable(boolean: filter)
alt filter
[filter=true] karCol= getFilteredKaryawan(String) :
Collection<Karyawan>
getResultList() :Collection
createQuery(qry) :Query
:Collection<Karyawan>
karCol= :
Collection<Karyawan>
alt filter
[filter=false]
karCol= getAllKaryawan() :Collection<Karyawan>
getResultList() :Collection
createNamedQuery(qry) :Query
:Collection<Karyawan>
karCol= :Collection<Karyawan>
loop
[Iterator i = [Link]]
Rows[]= getNip() :String
[[Link]]
• Fungsi fillTable:
private void fillTable(boolean filter){
Object[] colHeader = {"Nip","Nama","Temp Lahir","Tgl Lahir","Jabatan"};
defTab = new DefaultTableModel(null,colHeader);
}else{
karCol = [Link]();
}
try {
for(Iterator i= [Link](); [Link]();){
Karyawan kar = (Karyawan) [Link]();
String[] rows = {[Link](), [Link](), [Link](),
[Link]().toString(), [Link]()};
[Link](rows);
}
[Link](defTab);
} catch (Exception ex) {
[Link]([Link]());
}
ck = null;
}
uc Use Case
sd SD Tambah Data
:Actor1 FormKaryawan
:Karyaw an ck em
:ControllerKaryaw an :EntityManager
insert()
setNip(txtNip)
setNmKar(txtNama)
setTemLhr(txtTempLhr)
setTglLhr(d)
setJabatan(txtJabatan)
alt
persist(obj)
getTransaction()
fillTable()
• Button Insert:
private void btnInsertActionPerformed([Link] evt) {
Karyawan k = new Karyawan();
ControllerKaryawan ck = new ControllerKaryawan();
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
Date d = [Link]([Link]() + "-" + [Link]() + "-" +
[Link]());
[Link](d);
[Link]([Link]());
if([Link](k)){
[Link](rootPane, "Data Tersimpan");
[Link](false);
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
40
[Link]("");
[Link]("");
}
}
uc Use Case
Actor1
Update Data
:Actor1 FormKaryawan
:Karyaw an ck em
:ControllerKaryaw an :EntityManager
update()
setNip(txtNip)
setNmKar(txtNama)
setTemLhr(txtTempLhr)
setTglLhr(d)
setJabatan(txtJabatan)
alt update(Karyawan) :
boolean
[[Link] = true] kar= find(Object,
Class) :T
alt getTransaction()
[kar != null]
merge(obj)
getTransaction()
fillTable()
• Button Update:
private void btnUpdateActionPerformed([Link] evt) {
Karyawan k = new Karyawan();
ControllerKaryawan ck = new ControllerKaryawan();
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
Date d = [Link]([Link]() + "-" + [Link]() + "-" +
[Link]());
[Link](d);
[Link]([Link]());
if([Link](k)){
[Link](rootPane, "Data Tersimpan");
[Link](false);
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
[Link]("");
}
uc Use Case
Cari Data
Actor1
sd SD Cari Data
:Actor1 FormKaryawan
:Karyaw an ck
:ControllerKaryaw an
txtNipKeyPress()
alt
[[Link] == 10]
k= getKaryawan() :
Collection<Karyawan>
alt
[k != null]
txtNama= getNmKar() :String
fillTable()
• TextField txtNip:
private void txtNipKeyPressed([Link] evt) {
if([Link]()==10){
ControllerKaryawan ck = new ControllerKaryawan();
Karyawan k = new Karyawan();
k = [Link]([Link]());
if(k != null) {
[Link]([Link]());
[Link]([Link]());
String tgllhr = [Link]().toString();
[Link](tgllhr);
[Link]([Link](8,10));
[Link]([Link](5, 7));
[Link]([Link](0, 4));
[Link]([Link]());
[Link](true);
}
}
}
43
uc Use Case
Actor1
Hapus Data
sd SD Hapus Data
:Actor1 FormKaryawan
ck em
:ControllerKaryaw an :EntityManager
delete()
alt
[answer == yes]
alt
delete(txtNip) :boolean
[delete == true]
alt
[kar != null]
getTransaction()
remove(obj)
getTransaction()
Data Terhapus()
• Button Delete:
private void btnDeleteActionPerformed([Link] evt) {
int answer = [Link](rootPane, "Yakin di
hapus?","Konfirmasi",JOptionPane.YES_NO_OPTION);
if(answer==JOptionPane.YES_OPTION){
ControllerKaryawan ck = new ControllerKaryawan();
if([Link]([Link]())){
[Link](rootPane, "Data Terhapus");
44
}
}
• Frame FormKaryawan:
private void formWindowActivated([Link] evt) {
[Link](false);
}
• Button Close:
private void btnCloseActionPerformed([Link] evt) {
[Link]();
}
17. Kemudian jalankan project tersebut, maka akan tampil seperti berikut:
DAFTAR PUSTAKA
Dennis, A., Wixom, B. H., & Roth, R. M. (2012). System Analysys And Design. John Wiley & Sons.