Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hafizhhasyhari/object-oriented-programming-oop-pbo-2024

collection of materials, labs, challenges, workshops, bootcamps, and projects designed to learn basic to advanced concepts in Object-Oriented Programming (OOP) using the Java programming language
https://github.com/hafizhhasyhari/object-oriented-programming-oop-pbo-2024

java netbeans object-oriented-programming oops-in-java pemrograman-berorientasi-objek

Last synced: 25 days ago
JSON representation

collection of materials, labs, challenges, workshops, bootcamps, and projects designed to learn basic to advanced concepts in Object-Oriented Programming (OOP) using the Java programming language

Awesome Lists containing this project

README

        

# OOBJECT ORIENTED PROGRAMMING DENGAN JAVA 2024
OOP Java / Pemrograman Berorientasi Objek 2024

Selamat datang di repositori **Pemrograman Berorientasi Objek (OOP)** dengan **Java**!
Repositori ini dirancang untuk membantu Anda memahami dan menguasai konsep-konsep OOP, yang merupakan dasar bagi pengembangan perangkat lunak modern. Di dalam repositori ini, Anda akan menemukan berbagai **materi**, **praktikum**, **tantangan**, **workshop**, **bootcamp**, dan **proyek** yang akan membawa Anda dari konsep dasar hingga aplikasi perangkat lunak yang lebih kompleks.

### *📂 Topik yang Dibahas **
## Struktur Data
- **Stack** : Sebuah struktur data linear yang mengikuti prinsip LIFO (Last In, First Out), digunakan untuk tugas-tugas seperti pemanggilan fungsi dan operasi undo.
- **Queue** : Struktur data FIFO (First In, First Out), ideal untuk mengelola tugas secara berurutan, seperti memproses permintaan.
- **- PriorityQueue**: Sebuah antrian khusus di mana elemen dieksekusi berdasarkan prioritas, bukan urutan penyisipan.
- **LinkedList**: Sebuah struktur data dinamis yang terdiri dari node yang saling terhubung secara berurutan, berguna untuk skenario yang membutuhkan penyisipan dan penghapusan yang sering.
- **ArrayList**: Implementasi array yang dapat diubah ukurannya, menyediakan akses acak dan penyesuaian ukuran dinamis.
- **Dynamic Array: Mirip dengan ArrayList, memungkinkan perubahan ukuran dinamis untuk menyesuaikan pertumbuhan data.
- **Hash Tables**: Struktur yang memetakan kunci ke nilai secara efisien menggunakan hashing.
- **Graph**:
- **Adjacency Matrix**: Sebuah matriks 2D yang merepresentasikan hubungan antar node dalam graf.
- **Adjacency Lists** : Representasi tepi graf berbasis daftar.
- **Depth First Search (DFS)** : Menjelajahi sejauh mungkin di setiap cabang sebelum mundur kembali.
- **Breadth First Search (BFS)** : Melakukan penelusuran node level per level dalam sebuah graf.
- **Struktur Data Pohon (Tree Data Structures):
- **Binary Search Trees (BST)** : Pohon di mana setiap node anak kiri lebih kecil dan anak kanan lebih besar.
- **Tree Traversal**: Teknik seperti in-order, pre-order, dan post-order untuk mengunjungi node pada pohon.

---
## A. Materi

Dalam bagian ini, Anda akan mempelajari berbagai konsep dasar dan lanjutan dari Pemrograman Berorientasi Objek, seperti:
- **Kelas dan Objek**: Pengertian dan cara mendeklarasikan kelas serta objek di Java.
- **Encapsulation**: Penggunaan modifier akses untuk membatasi akses data.
- **Inheritance**: Pewarisan properti dan metode dari kelas induk.
- **Polymorphism**: Menggunakan metode yang sama dengan implementasi berbeda.
- **Abstraction**: Menyembunyikan detail implementasi dengan menggunakan kelas abstrak dan interface.
- **Interfaces dan Abstract Classes**: Perbedaan dan penerapan dalam desain perangkat lunak.

## B. Praktikum

Praktikum ini berfokus pada penerapan langsung konsep-konsep OOP dalam proyek-proyek kecil. Di sini, Anda dapat mencoba berbagai latihan untuk meningkatkan pemahaman Anda tentang implementasi OOP di Java. Setiap praktikum akan memberikan pengalaman langsung dalam mengimplementasikan konsep OOP seperti:
- Membuat kelas dengan konstruktor dan metode
- Menggunakan inheritance untuk memperluas fungsionalitas
- Menerapkan polymorphism untuk fleksibilitas kode

## C. Challange

Di bagian ini, Anda akan menghadapi tantangan OOP yang dirancang untuk mengasah kemampuan pemrograman Anda. Tantangan-tantangan ini akan melibatkan penerapan konsep OOP dalam situasi dunia nyata. Beberapa tantangan yang bisa Anda temui antara lain:
- Menyusun sistem manajemen untuk toko online menggunakan OOP.
- Membuat aplikasi manajemen data dengan menerapkan prinsip-prinsip desain OOP.
- Mengembangkan aplikasi berbasis Java dengan penggunaan collections dan generics.

## D. Workshop

Workshop ini bertujuan untuk memberikan pemahaman praktis melalui sesi interaktif. Anda akan bekerja dalam kelompok kecil untuk membahas topik-topik OOP dan langsung mengimplementasikannya dalam kode. Workshop ini juga mencakup:
- Pemecahan masalah terkait desain kelas dan interaksi antar objek
- Penerapan prinsip OOP dalam pengembangan perangkat lunak nyata
- Diskusi kasus nyata dan praktik terbaik dalam OOP

## E. Bootcamp

Bootcamp OOP dengan Java adalah program intensif yang dirancang untuk memberikan pemahaman yang mendalam tentang pengembangan perangkat lunak menggunakan prinsip OOP. Di sini, Anda akan:
- Mengikuti sesi pembelajaran teori dan praktikum intensif
- Mengerjakan proyek besar yang menggabungkan semua konsep OOP
- Mengembangkan aplikasi perangkat lunak Java dengan pendekatan desain berorientasi objek

## F. Project

Bagian ini mencakup proyek-proyek yang mengimplementasikan prinsip-prinsip OOP yang telah dipelajari. Proyek-proyek ini dapat mencakup:
- Sistem manajemen inventaris berbasis Java
- Aplikasi desktop berbasis JavaFX dengan desain berorientasi objek
- Pengembangan game atau aplikasi berbasis grafis menggunakan OOP

## G. Desain dan Analisis Perangkat Lunak Desktop

Desain dan analisis perangkat lunak desktop adalah langkah awal yang sangat penting dalam pengembangan perangkat lunak. Di sini, Anda akan mempelajari cara merancang aplikasi desktop yang efisien menggunakan prinsip OOP. Beberapa topik yang akan dibahas meliputi:
- **Desain Sistem**: Merancang arsitektur sistem perangkat lunak berbasis OOP.
- **UML (Unified Modeling Language)**: Membuat diagram kelas, diagram urutan, dan diagram lainnya untuk menggambarkan struktur dan alur aplikasi.
- **Pengujian dan Debugging**: Menerapkan teknik pengujian untuk memastikan kualitas perangkat lunak yang dihasilkan.

---

**Ayo mulai perjalanan Anda dalam Pemrograman Berorientasi Objek menggunakan Java!**
Pastikan untuk mengeksplorasi setiap bagian di repositori ini dan mengasah keterampilan pemrograman Anda di dunia nyata. Selamat belajar!

---

Nama: Hafizh Hilman Asyhari
Tahun: 2024
Negara: Indonesia
GitHub: [hafizhhasyhari](https://github.com/hafizhhasyhari)