Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Sunday, January 8, 2023

Apa itu package dan import statement pada Java

Package adalah struktur direktori yang digunakan untuk mengelompokkan class dan interface pada Java. Package juga merupakan bagian dari Java Naming Convention yang digunakan untuk mengelompokkan class dan interface sesuai dengan fungsinya. Contohnya, package java.util berisi class-class yang berguna untuk melakukan operasi input/output, manipulasi tanggal, dan lain-lain.

Import statement adalah statement yang digunakan untuk mengimport class atau interface dari package yang telah ditentukan. Import statement dapat digunakan untuk mempersingkat penulisan fully qualified name (FQN) dari class atau interface. FQN merupakan nama lengkap dari class atau interface yang disertai dengan nama package-nya.

Contoh penggunaan package dan import statement adalah sebagai berikut:

package com.example.app;

import java.util.ArrayList;
import java.util.Date;

public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
Date date = new Date();
}
}
Di sini, kita menggunakan package com.example.app untuk mengelompokkan class Main. Kita juga mengimport class ArrayList dan Date dari package java.util sehingga tidak perlu menuliskan FQN-nya setiap kali memanggil class tersebut.

Package dan import statement dapat membantu kita dalam mengelompokkan class dan interface sesuai dengan fungsinya, serta mempermudah dalam penulisan kode dengan mempersingkat FQN dari class atau interface. Namun, perlu diperhatikan bahwa penggunaan package dan import statement yang tidak tepat dapat menyebabkan ambiguitas (tidak jelas).

Pada Java, kita dapat mengimport beberapa class atau interface dari package yang sama dengan menggunakan wildcard (*). Wildcard akan mengimport semua class dan interface yang ada di dalam package tersebut. Contohnya:

import java.util.*;

public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
HashMap map = new HashMap<>();
}
}
Di sini, kita mengimport semua class dan interface yang ada di package java.util sehingga tidak perlu menuliskan FQN-nya setiap kali memanggil class ArrayList atau HashMap.
Selain itu, kita juga dapat mengimport static field atau static method dari class dengan menambahkan tanda titik (.) setelah nama class atau interface. Contohnya:

import static java.lang.Math.PI;
import static java.lang.Math.sqrt;

public class Main {
public static void main(String[] args) {
System.out.println(PI);
// Output: 3.141592653589793
System.out.println(sqrt(4));
// Output: 2.0
}
}
Di sini, kita mengimport static field PI dan static method sqrt dari class Math. Sehingga tidak perlu menuliskan FQN-nya setiap kali memanggil static field atau static method tersebut.

Import statement hanya dapat digunakan pada file yang berisi class atau interface, tidak bisa digunakan pada file yang berisi method atau block code. Import statement harus diletakkan pada baris pertama setelah package statement jika terdapat, atau di baris pertama jika tidak ada package statement.

Itu dia penjelasan tentang package dan import statement pada Java. Dengan menggunakan package dan import statement, kita dapat mengelompokkan class dan interface sesuai dengan fungsinya, serta mempermudah dalam penulisan kode dengan mempersingkat FQN dari class atau interface.

Saturday, January 7, 2023

Oriented Object Programming (OOP) adalah suatu paradigma pemrograman yang menekankan pada pembuatan program berdasarkan objek-objek yang saling terkait satu sama lain. OOP merupakan salah satu cara yang efektif dalam mengelola proyek pemrograman yang kompleks karena dapat membantu dalam mengelompokkan objek-objek sesuai dengan kebutuhan dan mempermudah proses pemeliharaan kode program. 

Java merupakan bahasa pemrograman yang menggunakan paradigma OOP. Berikut ini adalah beberapa contoh implementasi OOP dalam Java: 

#Pembuatan class dan object 

Class adalah sebuah template atau blue print yang menentukan atribut dan behavior dari sebuah object. Atribut adalah data yang disimpan di dalam object, sedangkan behavior adalah aksi yang dapat dilakukan oleh object tersebut. 

Contoh pembuatan class dan object adalah sebagai berikut:

class Mobil {
// Atribut
String merk;
String warna;
int tahunProduksi;

// Behavior
void jalankan() {
System.out.println("Mobil sedang berjalan");
}

void berhenti() {
System.out.println("Mobil berhenti");
}
}

class Main {
public static void main(String[] args) {
Mobil mobil1 = new Mobil();
mobil1.merk = "Toyota";
mobil1.warna = "Merah";
mobil1.tahunProduksi = 2019;
mobil1.jalankan();
// Output: Mobil sedang berjalan

Mobil mobil2 = new Mobil();
mobil2.merk = "Honda";
mobil2.warna = "Biru";
mobil2.tahunProduksi = 2020;
mobil2.berhenti();
// Output: Mobil berhenti
}
}
Di sini, terdapat class Mobil yang memiliki atribut merk, warna, dan tahunProduksi serta behavior jalankan dan berhenti. Kemudian dibuat object mobil1 dan mobil2 yang masing-masing memiliki atribut yang berbeda. 

#Inheritance 

Inheritance adalah konsep dimana sebuah class dapat "menurunkan" atribut dan behavior-nya kepada class lain yang disebut dengan child class. Dengan inheritance, proses pembuatan class baru menjadi lebih mudah karena tidak perlu menuliskan kembali atribut dan behavior yang sudah ada pada class parent-nya. 

Contoh penggunaan inheritance adalah sebagai berikut:

class Kendaraan {
// Atribut
String merk;
String warna;
int tahunProduksi;

// Behavior
void jalankan() {
System.out.println("Kendaraan sedang berjalan");
}

void berhenti() {
System.out.println("Kendaraan berhenti");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void ngebut() {
System.out.println("Mobil sedang ngebut");
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Kendaraan();
kendaraan1.merk = "Suzuki";
kendaraan1.warna = "Putih";
kendaraan1.tahunProduksi = 2015;
kendaraan1.jalankan();
// Output: Kendaraan sedang berjalan

Mobil mobil1 = new Mobil();
mobil1.merk = "Toyota";
mobil1.warna = "Merah";
mobil1.tahunProduksi = 2019;
mobil1.jumlahRoda = 4;
mobil1.jalankan();
mobil1.ngebut();
// Output: Kendaraan sedang berjalan
// Output: Mobil sedang ngebut
}
}
Di sini, class Mobil "mewarisi" atribut dan behavior dari class Kendaraan, yaitu merk, warna, tahunProduksi, jalankan, dan berhenti. Class Mobil juga memiliki atribut tambahan yaitu jumlahRoda dan behavior tambahan yaitu ngebut. 

#Polymorphism 

 Polymorphism : memungkinkan sebuah object memiliki beberapa bentuk atau sifat yang berbeda tergantung pada konteks penggunaannya, dapat dicapai dengan inheritance atau menggunakan interface. 
 
Berikut ini adalah contoh penggunaan polymorphism dengan inheritance:

class Kendaraan {
// Atribut
String merk;

// Behavior
void jalankan() {
System.out.println("Kendaraan sedang berjalan");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void ngebut() {
System.out.println("Mobil sedang ngebut");
}
}

class Motor extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void ngerem() {
System.out.println("Motor melakukan pengereman");
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Kendaraan();
kendaraan1.jalankan();
// Output: Kendaraan sedang berjalan

Kendaraan kendaraan2 = new Mobil();
kendaraan2.jalankan();
// Output: Kendaraan sedang berjalan

Kendaraan kendaraan3 = new Motor();
kendaraan3.jalankan();
// Output: Kendaraan sedang berjalan
}
}
Di sini, object kendaraan1, kendaraan2, dan kendaraan3 semuanya merupakan object dari class Kendaraan, namun kendaraan2 dan kendaraan3 sebenarnya merupakan object dari class Mobil dan Motor yang masing-masing "mewarisi" atribut dan behavior dari class Kendaraan. Dengan menggunakan polymorphism, object kendaraan2 yang sebenarnya merupakan object Mobil dapat diakses seolah-olah merupakan object Kendaraan, begitu juga dengan object kendaraan3 yang merupakan object Motor. 

#Encapsulation 

Encapsulation: menyembunyikan atribut dari class agar tidak dapat diakses secara langsung, sehingga hanya dapat diakses melalui method yang telah disediakan. 

Berikut ini adalah contoh penggunaan encapsulation:
 
class Kendaraan {
// Atribut dengan access modifier private
private String merk;
private int tahunProduksi;

// Getter dan setter untuk atribut merk
public String getMerk() {
return merk;
}

public void setMerk(String merk) {
this.merk = merk;
}

// Getter dan setter untuk atribut tahunProduksi
public int getTahunProduksi() {
return tahunProduksi;
}

public void setTahunProduksi(int tahunProduksi) {
this.tahunProduksi = tahunProduksi;
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Kendaraan();
kendaraan1.setMerk("Suzuki");
kendaraan1.setTahunProduksi(2015);

System.out.println(kendaraan1.getMerk());
// Output: Suzuki
System.out.println(kendaraan1.getTahunProduksi());
// Output: 2015
}
}
Di sini, atribut merk dan tahunProduksi dari class Kendaraan tidak dapat diakses secara langsung dari luar class, hanya dapat diakses melalui getter dan setter yang telah disediakan. Dengan demikian, proses pengubahan atribut tersebut dapat dikontrol dan diatur sesuai kebutuhan. Selain itu, encapsulation juga memudahkan dalam proses debugging dan maintenance karena hanya perlu mengubah implementasi pada getter dan setter, bukan langsung pada atributnya. Contoh penggunaan encapsulation dengan membuat atribut sebagai constant (final) adalah sebagai berikut:

class Kendaraan {
// Atribut dengan access modifier private
private final String merk;
private final int tahunProduksi;

// Konstruktor dengan parameter merk dan tahunProduksi
public Kendaraan(String merk, int tahunProduksi) {
this.merk = merk;
this.tahunProduksi = tahunProduksi;
}

// Getter untuk atribut merk
public String getMerk() {
return merk;
}

// Getter untuk atribut tahunProduksi
public int getTahunProduksi() {
return tahunProduksi;
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Kendaraan("Suzuki", 2015);

System.out.println(kendaraan1.getMerk());
// Output: Suzuki
System.out.println(kendaraan1.getTahunProduksi());
// Output: 2015
}
}
Di sini, atribut merk dan tahunProduksi dari class Kendaraan tidak memiliki setter, sehingga nilainya tidak dapat diubah setelah object dibuat. Nilai atribut tersebut harus ditentukan pada saat object dibuat dengan memanggil konstruktor yang telah disediakan. Dengan menggunakan encapsulation, nilai atribut tersebut dapat dijadikan constant (final) sehingga tidak dapat diubah setelah object dibuat. 

#Abstract class dan method 

Abstract class dan method: membuat class atau method yang tidak dapat diinstansiasi atau tidak dapat diimplementasikan secara langsung, harus diwarisi atau diimplementasikan oleh class lain terlebih dahulu. 
 
Berikut ini adalah contoh penggunaan abstract class dan method:

abstract class Kendaraan {
// Atribut
String merk;

// Method abstrak
abstract void jalankan();

// Method biasa
void berhenti() {
System.out.println("Kendaraan berhenti");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Implementasi method abstrak
@Override
void jalankan() {
System.out.println("Mobil sedang berjalan");
}
}

class Motor extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Implementasi method abstrak
@Override
void jalankan() {
System.out.println("Motor sedang berjalan");
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Mobil();
kendaraan1.jalankan();
// Output: Mobil sedang berjalan

Kendaraan kendaraan2 = new Motor();
kendaraan2.jalankan();
// Output: Motor sedang berjalan

kendaraan1.berhenti();
// Output: Kendaraan berhenti
}
}
Di sini, terdapat abstract class Kendaraan yang memiliki method abstrak jalankan dan method biasa berhenti. Kemudian terdapat class Mobil dan Motor yang masing-masing "mewarisi" atribut dan behavior dari class Kendaraan dan mengimplementasikan method abstrak jalankan. Class Kendaraan tidak dapat diinstansiasi (dibuat objectnya), sehingga harus diwarisi atau diimplementasikan oleh class lain terlebih dahulu. Method abstrak jalankan tidak memiliki implementasi, sehingga harus diimplementasikan oleh class yang mewarisi atau mengimplementasikan Kendaraan. 

#Overriding method 

Overriding method: menimpa implementasi method dari class parent dengan implementasi baru pada class child. 
 
Berikut ini adalah contoh penggunaan overriding method:

class Kendaraan {
// Atribut
String merk;

// Method
void jalankan() {
System.out.println("Kendaraan sedang berjalan");
}

void berhenti() {
System.out.println("Kendaraan berhenti");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Method dengan nama yang sama dengan method di class Kendaraan
@Override
void jalankan() {
System.out.println("Mobil sedang berjalan");
}

// Method dengan nama yang sama dengan method di class Kendaraan
@Override
void berhenti() {
System.out.println("Mobil melakukan pengereman");
}
}

class Motor extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Method dengan nama yang sama dengan method di class Kendaraan
@Override
void jalankan() {
System.out.println("Motor sedang berjalan");
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Kendaraan();
kendaraan1.jalankan();
// Output: Kendaraan sedang berjalan
kendaraan1.berhenti();
// Output: Kendaraan berhenti

Kendaraan kendaraan2 = new Mobil();
kendaraan2.jalankan();
// Output: Mobil sedang berjalan
kendaraan2.berhenti();
// Output: Mobil melakukan pengereman

Kendaraan kendaraan3 = new Motor();
kendaraan3.jalankan();
// Output: Motor sedang berjalan
kendaraan3.berhenti();
// Output: Kendaraan berhenti
}
}
Di sini, terdapat class Kendaraan dengan method jalankan dan berhenti. Kemudian terdapat class Mobil dan Motor yang masing-masing "mewarisi" atribut dan behavior dari class Kendaraan dan menimpa implementasi method jalankan dan berhenti. Method jalankan dan berhenti pada class Kendaraan disebut sebagai method parent, sedangkan method jalankan dan berhenti pada class Mobil disebut sebagai method child. Dengan menggunakan overriding, method child akan menimpa implementasi method parent sehingga saat method child dipanggil, implementasi method child yang akan dijalankan. 

#Overloading method 
 
Overloading method: membuat method dengan nama yang sama tapi dengan jumlah atau tipe parameter yang berbeda dalam satu class. 
 
Berikut ini adalah contoh penggunaan overloading method:

class Calculator {
// Method dengan nama yang sama dengan parameter dan tipe data yang berbeda
int add(int a, int b) {
return a + b;
}

int add(int a, int b, int c) {
return a + b + c;
}

double add(double a, double b) {
return a + b;
}
}

class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();

System.out.println(calc.add(1, 2));
// Output: 3
System.out.println(calc.add(1, 2, 3));
// Output: 6
System.out.println(calc.add(1.5, 2.5));
// Output: 4.0
}
}
Di sini, terdapat class Calculator dengan method add yang memiliki nama yang sama namun memiliki parameter dan tipe data yang berbeda. Dengan menggunakan overloading, kita dapat membuat beberapa method dengan nama yang sama namun memiliki parameter dan tipe data yang berbeda. Method yang akan dipanggil akan tergantung dari parameter yang diberikan pada saat memanggil method tersebut. Perhatikan bahwa pada contoh di atas, tidak terdapat method add dengan parameter (int a, double b). Jika terdapat method seperti itu, maka akan terjadi error karena terdapat ambiguitas (tidak jelas) antara method add(int, int) dan method add(double, double). 

#Type casting 

Type casting: mengubah tipe data dari satu jenis ke jenis lain, baik secara implisit maupun eksplisit Exception handling: menangani kesalahan yang terjadi saat program dijalankan sehingga program tidak terhenti secara tiba-tiba. 

Berikut ini adalah contoh penggunaan type casting:

class Main {
public static void main(String[] args) {
// Widening casting (implicit casting)
int a = 100;
long b = a;

// Narrowing casting (explicit casting)
long c = 500;
int d = (int) c;

// Type casting untuk primitive data types
char e = 'A';
int f = (int) e;
System.out.println(f);
// Output: 65

// Type casting untuk object reference types
Object obj = "Hello";
String str = (String) obj;
System.out.println(str);
// Output: Hello
}
}
Di sini, terdapat dua jenis type casting yaitu widening casting dan narrowing casting. Widening casting adalah proses mengubah tipe data yang lebih kecil menjadi tipe data yang lebih besar secara otomatis. Contohnya adalah mengubah tipe data int menjadi tipe data long. Narrowing casting adalah proses mengubah tipe data yang lebih besar menjadi tipe data yang lebih kecil secara eksplisit dengan menggunakan tanda kurung (()). Contohnya adalah mengubah tipe data long menjadi tipe data int. 

Type casting juga dapat dilakukan untuk object reference types. Contohnya adalah mengubah tipe data Object menjadi tipe data String. Namun, perlu diperhatikan bahwa type casting yang dilakukan harus sesuai dengan class yang sebenarnya dari object tersebut. Jika tidak, maka akan terjadi error ClassCastException.



Wednesday, January 4, 2023

Konsep kelas, objek, inheritance, polymorphism, dan encapsulation merupakan konsep dasar dalam OOP (Oriented Object Programming). Berikut ini adalah penjelasan detail terkait masing-masing konsep tersebut: 

#Class

Kelas adalah sebuah template atau blue print yang menentukan atribut dan behavior dari sebuah object. Atribut adalah data yang disimpan di dalam object, sedangkan behavior adalah aksi yang dapat dilakukan oleh object tersebut. Contoh kelas adalah sebagai berikut:

class Mobil {
// Atribut
String merk;
String warna;
int tahunProduksi;

// Behavior
void jalankan() {
System.out.println("Mobil sedang berjalan");
}

void berhenti() {
System.out.println("Mobil berhenti");
}
}

#Objek

Objek adalah sebuah instance atau realisasi dari sebuah kelas. Objek memiliki atribut dan behavior yang sama dengan kelasnya, namun setiap objek dapat memiliki atribut yang berbeda satu sama lain. Contoh pembuatan objek adalah sebagai berikut:

Mobil mobil1 = new Mobil();
mobil1.merk = "Toyota";
mobil1.warna = "Merah";
mobil1.tahunProduksi = 2019;

Mobil mobil2 = new Mobil();
mobil2.merk = "Honda";
mobil2.warna = "Biru";
mobil2.tahunProduksi = 2020;

#Inheritance

Inheritance adalah konsep dimana sebuah class dapat "menurunkan" atribut dan behavior-nya kepada class lain yang disebut dengan child class. Dengan inheritance, proses pembuatan class baru menjadi lebih mudah karena tidak perlu menuliskan kembali atribut dan behavior yang sudah ada pada class parent-nya. Contoh penggunaan inheritance adalah sebagai berikut:

class Kendaraan {
// Atribut
String merk;
String warna;
int tahunProduksi;

// Behavior
void jalankan() {
System.out.println("Kendaraan sedang berjalan");
}

void berhenti() {
System.out.println("Kendaraan berhenti");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void ngebut() {
System.out.println("Mobil sedang ngebut");
}
}

#Polymorphisme

Polymorphisme adalah konsep dimana sebuah object dapat memiliki banyak bentuk atau sifat. Ada dua jenis polymorphisme yang dikenal dalam OOP yaitu polymorphisme method dan polymorphisme tipe data. Polymorphisme method adalah dimana sebuah method dapat memiliki beberapa bentuk yang berbeda. Hal ini dapat dicapai dengan cara method overloading, yaitu dengan membuat method yang memiliki nama yang sama tetapi memiliki jumlah atau tipe parameter yang berbeda. Contoh penggunaan polymorphisme method adalah sebagai berikut:

class Matematika {
// Method overloading
int tambah(int a, int b) {
return a + b;
}

int tambah(int a, int b, int c) {
return a + b + c;
}

double tambah(double a, double b) {
return a + b;
}
}

class Main {
public static void main(String[] args) {
Matematika math = new Matematika();

System.out.println(math.tambah(1, 2)); // Output: 3
System.out.println(math.tambah(1, 2, 3)); // Output: 6
System.out.println(math.tambah(1.1, 2.2)); // Output: 3.3
}
}

#Polymorphisme tipe data

Polymorphisme tipe data adalah dimana sebuah tipe data dapat mengacu pada beberapa jenis object yang berbeda. Hal ini dapat dicapai dengan cara inheritance, yaitu dengan membuat child class yang mewarisi atribut dan behavior dari parent class-nya. Contoh penggunaan polymorphisme tipe data adalah sebagai berikut:

class Kendaraan {
// Atribut
String merk;

// Behavior
void jalankan() {
System.out.println("Kendaraan sedang berjalan");
}
}

class Mobil extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void ngebut() {
System.out.println("Mobil sedang ngebut");
}
}

class Motor extends Kendaraan {
// Atribut tambahan
int jumlahRoda;

// Behavior tambahan
void modifikasi() {
System.out.println("Motor sedang dimodifikasi");
}
}

class Main {
public static void main(String[] args) {
Kendaraan kendaraan1 = new Mobil();
kendaraan1.merk = "Toyota";
kendaraan1.jalankan();
// Output: Kendaraan sedang berjalan

Kendaraan kendaraan2 = new Motor();
kendaraan2.merk = "Honda";
kendaraan2.jalankan();
// Output: Kendaraan sedang berjalan
}
}
Di sini, tipe data Kendaraan dapat mengacu pada object mobil maupun motor, sehingga method jalankan dapat dipanggil pada kedua object tersebut. Namun, object mobil tidak dapat memanggil method ngebut karena method tersebut hanya ada pada class Mobil, dan sebaliknya object motor tidak dapat memanggil method modifikasi karena method tersebut hanya ada pada class Motor. 


#Encapsulation

Encapsulation adalah konsep dimana sebuah object dapat menyembunyikan atribut dan behavior-nya dari object lainnya. Encapsulation dapat dicapai dengan cara memberikan hak akses private pada atribut dan behavior yang tidak ingin diketahui oleh object lain. Hak akses private hanya dapat diakses oleh object yang memilikinya saja, sehingga menjamin kerahasia Contoh penggunaan encapsulation adalah sebagai berikut:

class Mobil {
// Atribut private
private String merk;
private String warna;
private int tahunProduksi;

// Method public untuk mengakses atribut private
public String getMerk() {
return merk;
}

public void setMerk(String merk) {
this.merk = merk;
}

public String getWarna() {
return warna;
}

public void setWarna(String warna) {
this.warna = warna;
}

public int getTahunProduksi() {
return tahunProduksi;
}

public void setTahunProduksi(int tahunProduksi) {
this.tahunProduksi = tahunProduksi;
}
}

class Main {
public static void main(String[] args) {
Mobil mobil = new Mobil();

// Mencoba mengakses atribut merk secara langsung
// Akan terjadi error karena atribut merk bersifat private
// mobil.merk = "Toyota";

// Mengakses atribut merk melalui method public
mobil.setMerk("Toyota");
System.out.println(mobil.getMerk()); // Output: Toyota
}
}
Di sini, atribut merk, warna, dan tahunProduksi diberikan hak akses private sehingga tidak dapat diakses secara langsung dari luar class Mobil. Namun, agar atribut tersebut dapat diakses, dibuat method public bernama setter dan getter yang bertugas untuk mengatur dan mengambil nilai atribut tersebut. Dengan demikian, atribut merk hanya dapat diakses melalui method setMerk dan getMerk, sehingga menjamin kerahasiaan atribut tersebut. Itulah penjelasan mengenai konsep kelas, objek, inheritance, polymorphism, dan encapsulation dalam OOP. Konsep-konsep tersebut merupakan dasar dari pemrograman OOP yang digunakan dalam bahasa pemrograman Java dan banyak bahasa pemrograman lainnya.

Apa itu OOP (Object Oriented Programming)?

OOP (Oriented Object Programming) adalah paradigma pemrograman yang menekankan pada konsep object. OOP merupakan salah satu cara untuk memecah masalah yang banyak digunakan dalam pemrograman modern, termasuk dalam bahasa pemrograman Java.

Konsep object dalam OOP didasarkan pada konsep object dalam dunia nyata. Setiap object memiliki atribut (properti) dan behavior (aksi yang dapat dilakukan). Atribut object merupakan data yang disimpan di dalam object, sedangkan behavior object merupakan aksi yang dapat dilakukan oleh object tersebut.

Contoh sederhana menggunakan object adalah sebagai berikut:

class Mobil {
  // Atribut
  String merk;
  String warna;
  int tahunProduksi;

  // Behavior
  void jalankan() {
    System.out.println("Mobil sedang berjalan");
  }

  void berhenti() {
    System.out.println("Mobil berhenti");
  }
}
Di sini, class Mobil merupakan sebuah object yang memiliki atribut merk, warna, dan tahunProduksi.
Object dapat saling terhubung dengan masing-masing object lainnya melalui relasi yang disebut dengan inheritance. Inheritance adalah konsep dimana sebuah class dapat "menurunkan" atribut dan behavior-nya kepada class lain yang disebut dengan child class. Child class tersebut dapat mewarisi atribut dan behavior dari parent class-nya tanpa perlu menuliskannya kembali, sehingga memudahkan dalam proses pembuatan class baru yang memiliki kesamaan dengan class yang sudah ada.

Contoh penggunaan inheritance adalah sebagai berikut:
class Kendaraan {
  // Atribut
  String merk;
  String warna;
  int tahunProduksi;

  // Behavior
  void jalankan() {
    System.out.println("Kendaraan sedang berjalan");
  }

  void berhenti() {
    System.out.println("Kendaraan berhenti");
  }
}

class Mobil extends Kendaraan {
  // Atribut tambahan
  int jumlahRoda;

  // Behavior tambahan
  void ngebut() {
    System.out.println("Mobil sedang ngebut");
  }
}
Di sini, class Mobil mewarisi atribut merk, warna, dan tahunProduksi serta behavior jalankan dan berhenti dari parent class-nya yaitu Kendaraan. Selain itu, class Mobil juga memiliki atribut tambahan yaitu jumlahRoda serta behavior tambahan yaitu ngebut. Dengan menggunakan inheritance, proses pembuatan class Mobil menjadi lebih mudah karena tidak perlu menuliskan kembali atribut dan behavior yang sudah ada pada class Kendaraan.

Itulah penjelasan mengenai OOP dan mengapa OOP penting dalam pemrograman. OOP memudahkan dalam pembuatan aplikasi yang modular, scalable, dan mudah dipelihara dengan menggunakan konsep object dan inheritance. Bahasa pemrograman Java merupakan salah satu bahasa yang kuat dalam mendukung OOP, sehingga banyak developer yang memilih Java sebagai bahasa utama dalam pengembangan aplikasi.

Tuesday, January 3, 2023

Apa itu Object pada Java dan contohnya?

Object adalah konsep dasar dalam bahasa pemrograman Java yang bersifat OOP (Oriented Object Programming). Object merupakan representasi nyata dari suatu entitas yang memiliki atribut (properti) dan behavior (aksi yang dapat dilakukan). Atribut object merupakan data yang disimpan di dalam object, sedangkan behavior object merupakan aksi yang dapat dilakukan oleh object tersebut.

Contoh sederhana menggunakan object adalah sebagai berikut:

class Mobil {
  // Atribut
  String merk;
  String warna;
  int tahunProduksi;

  // Behavior
  void jalankan() {
    System.out.println("Mobil sedang berjalan");
  }

  void berhenti() {
    System.out.println("Mobil berhenti");
  }
}

Di sini, class Mobil merupakan sebuah object yang memiliki atribut merk, warna, dan tahunProduksi, serta behavior jalankan dan berhenti. Object dapat dibuat dari class dengan cara menggunakan keyword "new", seperti berikut:

Mobil mobilSaya = new Mobil();


Setelah object dibuat, atribut object dapat diubah dengan menggunakan operator titik (.), dan behavior object dapat dijalankan dengan menambahkan tanda kurung siku setelah nama behavior, seperti berikut:

mobilSaya.merk = "Toyota";
mobilSaya.warna = "Merah";
mobilSaya.tahunProduksi = 2019;

mobilSaya.jalankan();
mobilSaya.berhenti();


Itulah pengertian object pada Java. Object merupakan konsep yang sangat penting dalam pemrograman Java karena memudahkan pengembangan aplikasi yang modular dan scalable.

Berikut contoh dalam satu class :


class Mobil {
  // Atribut
  String merk;
  String warna;
  int tahunProduksi;

  // Behavior
  void jalankan() {
    System.out.println("Mobil sedang berjalan");
  }

  void berhenti() {
    System.out.println("Mobil berhenti");
  }
}

class Main {
  public static void main(String[] args) {
    // Membuat object mobil pertama
    Mobil mobil1 = new Mobil();
    // Mengisi atribut mobil pertama
    mobil1.merk = "Toyota";
    mobil1.warna = "Merah";
    mobil1.tahunProduksi = 2019;
    // Memanggil behavior jalankan pada object mobil pertama
    mobil1.jalankan();

    // Membuat object mobil kedua
    Mobil mobil2 = new Mobil();
    // Mengisi atribut mobil kedua
    mobil2.merk = "Honda";
    mobil2.warna = "Biru";
    mobil2.tahunProduksi = 2020;
    // Memanggil behavior jalankan pada object mobil kedua
    mobil2.jalankan();
  }
}


Struktur program Java: sintaks, tipe data, operator, kontrol aliran

Struktur program Java mencakup sintaks, tipe data, operator, dan kontrol aliran yang digunakan dalam menulis program menggunakan bahasa Java. Berikut ini adalah penjelasan detail mengenai masing-masing topik tersebut:

  • Sintaks: Sintaks adalah aturan yang harus diikuti dalam menulis program Java. Contohnya adalah penggunaan tanda kurung, tanda kurung siku, titik dua, dan tanda kurawal untuk menandai blok kode, atau penggunaan tanda titik dua untuk menandai pembagian statement.
  • Tipe data: Tipe data adalah jenis data yang dapat ditampung oleh variabel dalam program Java. Java menyediakan berbagai macam tipe data primitif seperti integer, floating point, boolean, dan char, serta tipe data object seperti String, Array, dan lain-lain.
  • Operator: Operator adalah simbol yang digunakan untuk melakukan operasi matematika atau logika dalam program Java. Contohnya adalah operator penambahan (+), operator pengurangan (-), operator perkalian (*), dan operator pembagian (/). Java juga menyediakan operator logika seperti operator AND (&&), operator OR (||), dan operator NOT (!).
  • Kontrol aliran: Kontrol aliran adalah cara untuk mengontrol jalannya program sesuai dengan kondisi yang ditentukan. Java menyediakan beberapa statement kontrol aliran seperti if-else, switch-case, for, dan while. Statement kontrol aliran ini biasanya digunakan untuk mengeksekusi kode yang hanya perlu dijalankan jika kondisi tertentu terpenuhi, atau untuk mengulangi eksekusi kode beberapa kali sesuai dengan jumlah yang ditentukan.

Contoh sederhana menggunakan kontrol aliran adalah sebagai berikut:

int x = 10;
if (x > 5) {
  System.out.println("x lebih besar dari 5");
} else {
  System.out.println("x lebih kecil atau sama dengan 5");
}

Di sini, statement if-else akan mengeksekusi blok kode yang pertama jika nilai x lebih besar dari 5, atau mengeksekusi blok kode yang kedua jika nilai x lebih kecil atau sama dengan 5.

Itulah penjelasan mengenai struktur program Java: sintaks, tipe data, operator, dan kontrol aliran. Struktur program ini merupakan dasar yang perlu dipahami oleh developer Java agar dapat menulis program yang benar sesuai dengan aturan yang berlaku di Java.
Berikut ini adalah beberapa kelebihan dan kekurangan Java dibandingkan dengan bahasa pemrograman lainnya:

Kelebihan Java:

  • Portable: Java merupakan bahasa yang portable, yang berarti program yang ditulis menggunakan Java dapat dijalankan di berbagai macam sistem operasi tanpa perlu mengubah kode program. Hal ini memudahkan developer untuk mengembangkan aplikasi yang dapat dijalankan di berbagai macam perangkat.
  • OOP: Java adalah bahasa yang bersifat OOP (Oriented Object Programming), yang memudahkan pengembangan aplikasi yang modular dan scalable. OOP memberikan kelebihan dalam pengelolaan kode yang lebih terstruktur dan mudah dipelihara.
  • Dukungan komunitas yang kuat: Java memiliki komunitas yang sangat aktif dan terdapat banyak sumber belajar yang tersedia untuk mempelajari bahasa ini. Hal ini memudahkan developer untuk mempelajari dan mengembangkan aplikasi menggunakan Java.
  • Ketersediaan library dan framework: Java menyediakan banyak library dan framework yang dapat digunakan untuk mempercepat proses pengembangan aplikasi. Contohnya adalah library collections yang memudahkan penanganan data, atau framework seperti Spring yang mempermudah pengembangan aplikasi web.

Kekurangan Java:

  • Overhead yang lebih besar: Java memiliki overhead yang lebih besar dibandingkan dengan bahasa pemrograman lain yang bersifat compiled seperti C++. Hal ini menyebabkan program Java umumnya membutuhkan waktu eksekusi yang lebih lama dibandingkan dengan program yang ditulis dalam bahasa lain.
  • Ketergantungan pada runtime environment: Java bergantung pada runtime environment (JRE) untuk dijalankan. JRE harus terinstall di sistem yang akan menjalankan program Java, yang bisa menjadi masalah bagi aplikasi yang harus dijalankan di sistem yang tidak memiliki JRE terinstall.
  • Kurang cepat dibandingkan dengan bahasa compiled: Karena Java adalah bahasa yang bersifat interpreted, ia kurang cepat dibandingkan dengan bahasa compiled seperti C++ atau C#. Namun, kecepatan yang didapat dari bahasa compiled umumnya tidak terlalu terasa dalam aplikasi yang tidak membutuhkan waktu eksekusi yang sangat cepat.
  • Kurang fleksibel dibandingkan dengan bahasa yang bersifat dynamically-typed: Java merupakan bahasa yang bersifat statically-typed, yang berarti tipe data harus dideklarasikan saat program ditulis. Hal ini bisa menyulitkan developer dalam beberapa kasus, seperti saat ingin memproses data yang bervariasi tipe nya. Namun, kekurangan ini juga dapat dianggap sebagai kelebihan karena bahasa yang bersifat statically-typed biasanya lebih mudah dipelihara dan memiliki kesalahan yang lebih sedikit dibandingkan dengan bahasa yang bersifat dynamically-typed.
Itulah beberapa kelebihan dan kekurangan Java dibandingkan dengan bahasa pemrograman lainnya. Setiap bahasa pemrograman memiliki kelebihan dan kekurangan masing-masing, dan pilihan terbaik tergantung pada kebutuhan dan tujuan pengembangan aplikasi.

Sejarah dan latar belakang bahasa pemrograman Java

Sejarah dan latar belakang bahasa Java bermula pada tahun 1991, ketika perusahaan Sun Microsystems sedang mengembangkan sebuah proyek bernama Green Project. Tujuan dari proyek ini adalah untuk menciptakan sebuah sistem operasi yang dapat dijalankan di berbagai macam perangkat elektronik, seperti ponsel, televisi, dan set-top box.

Untuk mencapai tujuan tersebut, tim yang terlibat dalam proyek Green Project memutuskan untuk mengembangkan sebuah bahasa pemrograman baru yang mampu menjalankan aplikasi di berbagai macam perangkat dengan mudah. Bahasa pemrograman tersebut kemudian diberi nama "Oak" karena tim tersebut tinggal di dekat pohon oak di California.

Setelah beberapa tahun mengembangkan Oak, tim tersebut menyadari bahwa proyek Green Project tidak berjalan sesuai dengan rencana semula. Namun, demikian, bahasa pemrograman Oak tersebut ternyata cukup populer di kalangan developer dan dapat digunakan untuk mengembangkan aplikasi desktop. Oleh karena itu, tim tersebut memutuskan untuk mengubah nama Oak menjadi "Java" dan mengembangkannya menjadi bahasa pemrograman yang khusus digunakan untuk aplikasi desktop.

Pada tahun 1995, Sun Microsystems resmi merilis bahasa pemrograman Java ke publik. Java awalnya ditujukan untuk menjalankan aplikasi di perangkat elektronik seperti ponsel dan televisi. Namun, seiring dengan perkembangan teknologi, Java kini juga banyak digunakan untuk membuat aplikasi desktop, web, dan mobile.

Sampai saat ini, Java masih menjadi salah satu bahasa pemrograman terpopuler di dunia dan terus dikembangkan oleh Oracle untuk menyesuaikan dengan kebutuhan dan perkembangan teknologi yang terus berubah.

Topik atau langkah belajar pemrograman Java

Berikut ini adalah outline yang dapat digunakan untuk membahas bahasa pemrograman Java:

I. Pengenalan

II. OOP (Oriented Object Programming)
III. Package dan import
IV. Exception handling
  • Apa itu exception dan mengapa exception handling penting
  • Cara menangani exception di Java menggunakan try-catch dan throw statement
V. Collection framework
  • Apa itu collection framework dan mengapa collection framework penting
  • Kelas-kelas yang tersedia di dalam package java.util untuk mengelola koleksi data: array, list, set, map
  • Cara menggunakan kelas-kelas tersebut untuk menyimpan, mengambil, dan memproses data
VI. Input/output
  • Apa itu input/output dalam pemrograman dan mengapa input/output penting
  • Kelas-kelas yang tersedia di dalam package java.io untuk melakukan operasi input/output: FileReader, FileWriter, BufferedReader, BufferedWriter, dll.
  • Cara membaca dan menulis ke file di Java
VII. Multithreading
  • Apa itu multithreading dan mengapa multithreading penting
  • Cara membuat dan mengelola thread di Java menggunakan kelas Thread dan Runnable
  • Synchronization dan volatile keyword
VIII. GUI (Graphical User Interface) programming

  • Apa itu GUI dan mengapa GUI penting dalam pemrograman
  • Kelas-kelas yang tersedia di dalam package java.awt dan javax.swing untuk membuat interface pengguna yang interaktif
  • Cara menggunakan kelas-kelas tersebut untuk membuat aplikasi dengan GUI sederhana


Itu hanya contoh outline yang dapat digunakan untuk membahas bahasa pemrograman Java. Outline ini dapat diubah sesuai dengan kebutuhan dan tujuan pembelajaran.

Tuesday, September 3, 2019

Apa sih Konstruktor (Constructor) pada Java?

Apa itu Contuctor di Java?


Konstruktor (Constructor) adalah method khusus yang akan dieksekusi pertama kali saat pembuatan (inisiasi) suatu Object (Class)) .Konstruktor merupakan sebuah method dimana nama konstruktor harus sama persis dengan nama file dan Class-nya. Konstruktor merupakan komponen wajib yang harus ada dalam suatu class, jika tidak dituliskan dalam class maka java akan secarra otomatis membuat satu contructor pada class tersebut.

Ciri-ciri konstruktor yaitu, tidak memiliki return value. Kontruktor harus punya nama yang sama dengan nama Class-nya. Bisa memiliki parameter ataupun tidak.

Konstruktor berfungsi untuk memberikan nilai awal (instans) pada sebuah class ketika class tersebut dibuat.

Syntax Penulisan / Contoh Constructor


Berikut Contoh Penulisan Constructor pada java. nama file : NamaClass.java


public class NamaClass {
 // this is (default) constructor. without parameter
 public NamaClass() {
 
 }
 
 // this is (costumize) constructor. with parameter
 public NamaClass(String param1, String param2) {
 
 }
}


Contoh Konstruktor (default) tanpa Parameter


Sesuai dengan keterangannya, Kontruktor ini ditulis tanpa parameter didalamnya. Panggil (initialize) constructor ini digunakan untuk membuat sebuah Object dari class tersebut, dimana variable akan terisi sesuai default value dari masing-masing variable.

Contoh penulisan constuctor tanpa parameter :


public class NamaClass {
 public int num;
 
 // this is (default) constructor. without parameter
 public NamaClass() {
  this.num  = 100;
  System.out.println("Initialized default constructor");
 }
}

Berikut contoh pemanggilan constructor (instance).


public class ClassMain {
 public static void main(String args[]) {
  NamaClass t1 = new NamaClass();
  System.out.println("Num = " + t1.num);
 }
}

Output :


Initialized default constructor
Num = 100


Contoh Konstruktor dengan Parameter


Biasanya kita akan membutuhkan suatu constructor yang memiliki satu atau lebih parameter didalamnya. dengan tujuan untuk membuat suatu Object, dimana object tersebut sudah mempunyai default value dari variables didalamnya.

Contoh penulisan constuctor dengan parameter :


public class NamaClass {
 public int num;
 
 // this is (default) constructor. without parameter
 public NamaClass(int num) {
  this.num  = num;
  System.out.println("Initialized default constructor");
 }
}

Berikut contoh pemanggilan constructor (instance).


public class ClassMain {
 public static void main(String args[]) {
  NamaClass t2 = new NamaClass(200);
  System.out.println("Num = " + t2.num);
 }
}

Output :


Initialized default constructor
Num = 200

Demikian untuk penjelasan dari Konstruktor, semoga bermanfaat. Jika butuh code utuhnya bisa lihat contoh dibawah.


public class NamaClass {
 public int num;
 
 // this is (default) constructor. without parameter
 public NamaClass() {
  this.num  = 100;
  System.out.println("Initialized default constructor");
 }
 
 // this is (default) constructor. without parameter
 public NamaClass(int num) {
  this.num  = num;
  System.out.println("Initialized default constructor");
 }
}

public class ClassMain {
 public static void main(String args[]) {
  NamaClass t1 = new NamaClass();
  NamaClass t2 = new NamaClass(200);
  
  System.out.println("Num = " + t1.num);
  System.out.println("Num = " + t2.num);
 }
}

Output :


Initialized default constructor
Initialized default constructor
Num = 100
Num = 200



Saturday, August 31, 2019

How to Convert Integer To Long in Java

you can't cast Integer to Long, even though you can convert from int to long. For an individual value which is known to be a number and you want to get the long value, you could use:

package com.mkyong.example;

public class TestInteger {

    public static void main(String[] args) {

        Integer num = 1;

        System.out.println(num);            // 1

        Long numInLong = Long.valueOf(num);

        System.out.println(numInLong);      // 1

    }
}



Java – How to get Values by Keys from Map

Java Map Interface

A map contains values on the basis of key, i.e. key and value pair. Each key and value pair is known as an entry. A Map contains unique keys.

A Map is useful if you have to search, update or delete elements on the basis of a key.

How to get Keys and Value from Map ?

In Java, we can get the keys and values via map.entrySet()

Map map = new HashMap<>();

 // Get keys and values
 for (Map.Entry entry : map.entrySet()) {
  String k = entry.getKey();
  String v = entry.getValue();
  System.out.println("Key: " + k + ", Value: " + v);
 }

 // Java 8
 map.forEach((k, v) -> {
  System.out.println("Key: " + k + ", Value: " + v);
 });
 
Full Example.
package com.mkyong;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class JavaMapExample {

    public static void main(String[] args) {

        Map map = new HashMap<>();
        map.put("db", "oracle");
        map.put("username", "user1");
        map.put("password", "pass1");

        // Get keys and values
        for (Map.Entry entry : map.entrySet()) {
            String k = entry.getKey();
            String v = entry.getValue();
            System.out.println("Key: " + k + ", Value: " + v);
        }

        // Get all keys
        Set keys = map.keySet();
        for (String k : keys) {
            System.out.println("Key: " + k);
        }

        // Get all values
        Collection values = map.values();
        for (String v : values) {
            System.out.println("Value: " + v);
        }

        // Java 8
        map.forEach((k, v) -> {
            System.out.println("Key: " + k + ", Value: " + v);
        });

    }
}


Key: password, Value: pass1
Key: db, Value: oracle
Key: username, Value: user1

Key: password
Key: db
Key: username

Value: pass1
Value: oracle
Value: user1

Key: password, Value: pass1
Key: db, Value: oracle
Key: username, Value: user1


This is way to get Value by Key in Java Map, hope this article can help you guys.
Thank You.

Wednesday, October 25, 2017

Java MySQL JDBC Connection Example

1. Simple Connection JDBC


import java.sql.*;

public class FirstExample {
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {

   Connection conn = null;
   try{

      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);

   }catch(SQLException se){
      se.printStackTrace();
   }catch(Exception e){
      e.printStackTrace();
   }
   System.out.println("Goodbye!");
}
}

2 Connection With SQL Query Statement


import java.sql.*;

public class FirstExample {

   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);

      System.out.println("Creating statement...");
      stmt = conn.createStatement();
      String sql;
      sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);

      while(rs.next()){
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         System.out.print("ID: " + id);
         System.out.print(", Age: " + age);
         System.out.print(", First: " + first);
         System.out.println(", Last: " + last);
      }
 
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      se.printStackTrace();
   }catch(Exception e){
      e.printStackTrace();
   }finally{
      try{
         if(stmt!=null)
            stmt.close();
      }catch(SQLException se2){
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }
   }
   System.out.println("Goodbye!");
}
}
Source www.tutorialspoint.com