Content is user-generated and unverified.

RANGKUMAN JENI - PENGENALAN PEMROGRAMAN JAVA

Mata Kuliah: Pemrograman Berorientasi Objek (PBO)


BAB 1: PENGENALAN PEMROGRAMAN KOMPUTER

Definisi Pemrograman Komputer

Pemrograman komputer adalah proses menulis, menguji, dan memelihara kode sumber dari program komputer. Proses ini melibatkan:

  • Analisis masalah
  • Perancangan algoritma
  • Implementasi dalam bahasa pemrograman
  • Testing dan debugging

Bahasa Pemrograman

Tingkat Rendah (Low Level):

  • Bahasa mesin (machine language)
  • Assembly language

Tingkat Tinggi (High Level):

  • Java, C++, Python, Pascal
  • Lebih mudah dipahami manusia
  • Memerlukan compiler/interpreter

Proses Pengembangan Program

  1. Analisis masalah - memahami kebutuhan
  2. Perancangan - membuat algoritma dan flowchart
  3. Implementasi - menulis kode program
  4. Testing - menguji program
  5. Dokumentasi - membuat manual penggunaan
  6. Maintenance - pemeliharaan dan perbaikan

BAB 2: PENGENALAN BAHASA JAVA

Sejarah Java

  • Dikembangkan oleh Sun Microsystems (1995)
  • Dibuat oleh James Gosling
  • Awalnya bernama "Oak"
  • Diakuisisi Oracle Corporation (2010)

Karakteristik Java

Platform Independent:

  • "Write Once, Run Anywhere" (WORA)
  • Menggunakan Java Virtual Machine (JVM)

Object-Oriented:

  • Semua adalah objek (kecuali tipe primitif)
  • Mendukung enkapsulasi, inheritance, polimorfisme

Robust & Secure:

  • Automatic memory management
  • Exception handling
  • Security manager

Multithreaded:

  • Mendukung pemrograman concurrent
  • Thread management built-in

Komponen Java Platform

  1. JVM (Java Virtual Machine) - menjalankan bytecode
  2. JRE (Java Runtime Environment) - lingkungan runtime
  3. JDK (Java Development Kit) - tools pengembangan

Proses Kompilasi Java

Source Code (.java) → Compiler (javac) → Bytecode (.class) → JVM → Machine Code

BAB 3: MENGENALI LINGKUP PEMROGRAMAN ANDA

Struktur Program Java

java
public class NamaClass {
    public static void main(String[] args) {
        // kode program
    }
}

Aturan Penamaan (Naming Convention)

Class: PascalCase (ContohClass) Method: camelCase (namaMethod) Variable: camelCase (namaVariable) Constant: UPPER_CASE (NAMA_KONSTANTA)

Komentar dalam Java

java
// Komentar satu baris
/* Komentar 
   multiple baris */
/** Javadoc comment */

Statement dan Block

  • Statement: instruksi yang diakhiri semicolon (;)
  • Block: kumpulan statement dalam kurung kurawal { }

Identifier

  • Nama yang diberikan untuk class, method, variable
  • Aturan: huruf, digit, underscore, dollar sign
  • Tidak boleh dimulai dengan digit
  • Case sensitive

BAB 4: DASAR-DASAR PEMROGRAMAN

Tipe Data Primitif

Integer:

  • byte (8 bit): -128 to 127
  • short (16 bit): -32,768 to 32,767
  • int (32 bit): -2,147,483,648 to 2,147,483,647
  • long (64 bit): -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Floating Point:

  • float (32 bit): single precision
  • double (64 bit): double precision

Lainnya:

  • char (16 bit): karakter Unicode
  • boolean: true atau false

Deklarasi dan Inisialisasi Variable

java
int umur;           // deklarasi
umur = 25;          // inisialisasi
int tinggi = 170;   // deklarasi + inisialisasi

Operator

Aritmatika: +, -, *, /, % Assignment: =, +=, -=, *=, /=, %= Comparison: ==, !=, <, >, <=, >= Logical: &&, ||, ! Unary: ++, --, +, -

Konversi Tipe Data

Implicit (Widening):

java
int a = 10;
double b = a;  // otomatis convert

Explicit (Narrowing):

java
double a = 10.5;
int b = (int) a;  // manual casting

Literal

  • Integer: 123, 0x7B (hex), 0173 (octal)
  • Float: 3.14f, 2.5d
  • Character: 'A', '\n', '\u0041'
  • String: "Hello World"
  • Boolean: true, false

BAB 5: MENDAPATKAN INPUT DARI KEYBOARD

Menggunakan Scanner Class

java
import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.print("Masukkan nama: ");
        String nama = input.nextLine();
        
        System.out.print("Masukkan umur: ");
        int umur = input.nextInt();
        
        input.close();
    }
}

Method dalam Scanner

  • nextLine(): membaca string dengan spasi
  • next(): membaca string tanpa spasi
  • nextInt(): membaca integer
  • nextDouble(): membaca double
  • nextBoolean(): membaca boolean

Menggunakan BufferedReader

java
import java.io.*;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();

Validasi Input

java
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
    int number = sc.nextInt();
} else {
    System.out.println("Input tidak valid");
}

BAB 6: STRUKTUR KONTROL

Conditional Statements

If Statement:

java
if (kondisi) {
    // statement
}

If-Else:

java
if (kondisi) {
    // statement jika true
} else {
    // statement jika false
}

If-Else If:

java
if (kondisi1) {
    // statement 1
} else if (kondisi2) {
    // statement 2
} else {
    // statement default
}

Switch Statement:

java
switch (variable) {
    case value1:
        // statement
        break;
    case value2:
        // statement
        break;
    default:
        // statement default
}

Looping Statements

For Loop:

java
for (int i = 0; i < 10; i++) {
    // statement
}

Enhanced For Loop:

java
int[] array = {1, 2, 3, 4, 5};
for (int element : array) {
    System.out.println(element);
}

While Loop:

java
while (kondisi) {
    // statement
}

Do-While Loop:

java
do {
    // statement
} while (kondisi);

Branching Statements

  • break: keluar dari loop atau switch
  • continue: skip iterasi saat ini
  • return: keluar dari method

BAB 7: JAVA ARRAY

Deklarasi Array

java
int[] numbers;              // deklarasi
numbers = new int[5];       // inisialisasi
int[] values = {1,2,3,4,5}; // deklarasi + inisialisasi

Mengakses Array

java
int[] arr = {10, 20, 30, 40, 50};
System.out.println(arr[0]);  // output: 10
arr[2] = 35;                 // mengubah nilai

Properties Array

java
int[] arr = {1, 2, 3, 4, 5};
int length = arr.length;     // mendapatkan panjang array

Multidimensional Array

java
int[][] matrix = new int[3][4];  // 3 baris, 4 kolom
int[][] table = {{1,2}, {3,4}, {5,6}};

// Mengakses elemen
matrix[0][1] = 10;

Array Operations

Iterasi Array:

java
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

Array Copy:

java
int[] source = {1, 2, 3};
int[] dest = new int[source.length];
System.arraycopy(source, 0, dest, 0, source.length);

BAB 8: ARGUMEN DARI COMMAND-LINE

Main Method Arguments

java
public static void main(String[] args) {
    // args adalah array String dari command line
}

Menggunakan Command Line Arguments

java
public class CommandLineExample {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("Argument pertama: " + args[0]);
        }
        
        System.out.println("Total arguments: " + args.length);
        
        for (String arg : args) {
            System.out.println("Argument: " + arg);
        }
    }
}

Menjalankan Program dengan Arguments

bash
java CommandLineExample arg1 arg2 arg3

Konversi Arguments

java
// Command line arguments selalu String
String strAge = args[0];
int age = Integer.parseInt(strAge);  // convert ke int
double salary = Double.parseDouble(args[1]);  // convert ke double

Validasi Arguments

java
if (args.length < 2) {
    System.out.println("Usage: java Program <arg1> <arg2>");
    System.exit(1);
}

BAB 9: BEKERJA DENGAN JAVA CLASS LIBRARY

Java API (Application Programming Interface)

Kumpulan class dan interface yang sudah disediakan Java untuk mempermudah pengembangan aplikasi.

Package Utama

java.lang: otomatis di-import

  • String, Math, System, Object, Thread

java.util: collection framework, utilities

  • ArrayList, HashMap, Scanner, Date

java.io: input/output operations

  • FileReader, FileWriter, BufferedReader

java.net: networking

  • URL, Socket, ServerSocket

Menggunakan String Class

java
String str = "Hello World";
int length = str.length();          // panjang string
String upper = str.toUpperCase();   // ke uppercase
String lower = str.toLowerCase();   // ke lowercase
boolean contains = str.contains("World");  // cek substring
String[] parts = str.split(" ");    // split string

Menggunakan Math Class

java
double result = Math.sqrt(16);      // akar kuadrat
double power = Math.pow(2, 3);      // pangkat
int random = (int)(Math.random() * 100);  // random number
double max = Math.max(10, 20);      // nilai maksimum

Menggunakan ArrayList

java
import java.util.ArrayList;

ArrayList<String> list = new ArrayList<>();
list.add("Java");           // menambah elemen
list.add("Python");
String item = list.get(0);  // mengambil elemen
list.remove(0);             // menghapus elemen
int size = list.size();     // ukuran list

Wrapper Classes

java
Integer intObj = new Integer(10);    // deprecated
Integer intObj2 = Integer.valueOf(10);  // recommended
int primitive = intObj2.intValue();

// Autoboxing dan Unboxing
Integer autoBox = 10;        // autoboxing
int unbox = autoBox;         // unboxing

BAB 10: MEMBUAT CLASS SENDIRI

Struktur Class

java
public class NamaClass {
    // Fields (attributes)
    private int field1;
    private String field2;
    
    // Constructor
    public NamaClass() {
        // constructor default
    }
    
    public NamaClass(int f1, String f2) {
        field1 = f1;
        field2 = f2;
    }
    
    // Methods
    public void setField1(int value) {
        field1 = value;
    }
    
    public int getField1() {
        return field1;
    }
}

Encapsulation

Menyembunyikan detail implementasi dan menyediakan interface publik:

java
public class Student {
    private String name;    // private field
    private int age;
    
    // Public methods untuk akses
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}

Constructor

java
public class Person {
    private String name;
    private int age;
    
    // Default constructor
    public Person() {
        name = "Unknown";
        age = 0;
    }
    
    // Parameterized constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Method Overloading

java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

Static Members

java
public class Counter {
    private static int count = 0;  // static field
    
    public static void increment() {  // static method
        count++;
    }
    
    public static int getCount() {
        return count;
    }
}

BAB 11: PEWARISAN, POLIMORFISME, DAN INTERFACE

Inheritance (Pewarisan)

java
// Parent class
public class Animal {
    protected String name;
    
    public void eat() {
        System.out.println("Animal is eating");
    }
}

// Child class
public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
    
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
}

Super Keyword

java
public class Vehicle {
    protected String brand;
    
    public Vehicle(String brand) {
        this.brand = brand;
    }
}

public class Car extends Vehicle {
    private int doors;
    
    public Car(String brand, int doors) {
        super(brand);  // memanggil constructor parent
        this.doors = doors;
    }
}

Polymorphism

java
Animal animal1 = new Dog();     // upcasting
Animal animal2 = new Cat();

animal1.eat();  // akan memanggil Dog.eat()
animal2.eat();  // akan memanggil Cat.eat()

Method Overriding

java
public class Shape {
    public void draw() {
        System.out.println("Drawing a shape");
    }
}

public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

Interface

java
public interface Drawable {
    void draw();  // abstract method
    
    default void print() {  // default method (Java 8+)
        System.out.println("Printing...");
    }
}

public class Rectangle implements Drawable {
    @Override
    public void draw() {
        System.out.println("Drawing rectangle");
    }
}

Abstract Class

java
public abstract class Animal {
    protected String name;
    
    public abstract void makeSound();  // abstract method
    
    public void sleep() {              // concrete method
        System.out.println("Sleeping...");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
}

BAB 12: DASAR EXCEPTION HANDLING

Konsep Exception

Exception adalah event yang terjadi selama eksekusi program yang mengganggu alur normal instruksi.

Hierarchy Exception

Throwable
├── Error (system errors)
└── Exception
    ├── RuntimeException (unchecked)
    │   ├── NullPointerException
    │   ├── ArrayIndexOutOfBoundsException
    │   └── IllegalArgumentException
    └── Checked Exceptions
        ├── IOException
        ├── SQLException
        └── ClassNotFoundException

Try-Catch Block

java
try {
    // kode yang mungkin throw exception
    int result = 10 / 0;
} catch (ArithmeticException e) {
    // handle exception
    System.out.println("Cannot divide by zero");
} catch (Exception e) {
    // handle semua exception lainnya
    System.out.println("Error: " + e.getMessage());
}

Try-Catch-Finally

java
try {
    // risky code
    FileReader file = new FileReader("data.txt");
} catch (FileNotFoundException e) {
    System.out.println("File not found");
} finally {
    // selalu dieksekusi
    System.out.println("Cleanup resources");
}

Throw Statement

java
public void validateAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Age cannot be negative");
    }
}

Throws Clause

java
public void readFile(String filename) throws IOException {
    FileReader file = new FileReader(filename);
    // method yang memanggil harus handle IOException
}

Custom Exception

java
public class InvalidAgeException extends Exception {
    public InvalidAgeException(String message) {
        super(message);
    }
}

public void setAge(int age) throws InvalidAgeException {
    if (age < 0 || age > 150) {
        throw new InvalidAgeException("Invalid age: " + age);
    }
}

Best Practices

  1. Catch specific exceptions - jangan catch Exception secara umum
  2. Use finally for cleanup - tutup resource di finally block
  3. Don't ignore exceptions - selalu handle atau log exception
  4. Use try-with-resources - untuk automatic resource management
java
try (FileReader file = new FileReader("data.txt")) {
    // use file
} catch (IOException e) {
    System.out.println("Error reading file");
}
// file otomatis ditutup

KESIMPULAN

Materi JENI ini memberikan foundation yang kuat untuk pemrograman Java dan konsep OOP. Dari dasar syntax hingga konsep advanced seperti inheritance, polymorphism, dan exception handling, semua merupakan building blocks penting untuk menjadi programmer Java yang kompeten.

Poin Penting untuk Diingat:

  1. Java adalah bahasa OOP yang platform-independent
  2. Encapsulation, Inheritance, dan Polymorphism adalah pilar OOP
  3. Exception handling penting untuk robust programming
  4. Java API menyediakan banyak class yang siap pakai
  5. Pemahaman structure control dan array fundamental untuk logic programming

Rangkuman ini disusun untuk membantu pemahaman materi PBO dengan fokus pada konsep-konsep kunci yang perlu dikuasai.

Content is user-generated and unverified.
    Rangkuman JENI - Pengenalan Pemrograman Java (PBO) | Claude