Skip to content

Simulasi Sistem Parkir Gate Teknik Elektro ITS

[!NOTE] Status: Work in Progress

Nama NRP
Hendra Manudinata 5027251051

Ini adalah simulasi sistem parkir dan gate untuk Teknik Elektro ITS, yang dirancang menggunakan prinsip Object-Oriented Programming (OOP). Sistem ini mencakup berbagai jenis pengguna (Dosen, Mahasiswa, Tamu) dengan hak akses yang berbeda terhadap fasilitas parkir dan gate. Program ini juga menyertai special setter untuk mengubah perilaku parkir secara dinamis, serta implementasi interface untuk mengelola akses gate berdasarkan peran pengguna.

Kode dibuat seminimal mungkin untuk fokus pada konsep OOP, sehingga beberapa detail implementasi mungkin disederhanakan atau diabaikan.

Class Diagram

Klik tombol salin untuk menyalin kode diagram ke clipboard.

classDiagram
    %% Bagian Interface dan Implementasinya (Behavior Parkir)
    class SistemParkir {
        <<interface>>
        +aksesParkir() void
    }

    class FullAccessParkir {
        +aksesParkir() void
    }

    class LimitedAccessParkir {
        +aksesParkir() void
    }

    class NoAccessParkir {
        +aksesParkir() void
    }

    %% Bagian Interface dan Implementasinya (Behavior Gate)
    class SistemGate {
        <<interface>>
        +aksesGate() void
        +aksesGate(String nrp) void
    }

    class FullAccessGate {
        +aksesGate() void
    }

    class ConditionalAccessGate {
        +aksesGate(String nrp) void
    }

    class NoAccessGate {
        +aksesGate() void
    }

    %% Bagian Abstract Class dan Subclass (Identitas)
    class Pengguna {
        <<abstract>>
        #String nama
        #int role
        #SistemParkir parkir
        #SistemGate gate
        +Pengguna(String nama, int role)
        +getNama() String
        +getRole() int
        +parkir() void
        +aksesGate() void
        +setSistemParkir(SistemParkir newParkir) void
    }

    class Dosen {
        +Dosen(String nama)
    }

    class Mahasiswa {
        #String nrp
        +Mahasiswa(String nama, String nrp)
        +aksesGate() void
    }

    class Tamu {
        +Tamu(String nama)
    }

    %% Relasi Realization/Implementation (Parkir)
    SistemParkir <|.. FullAccessParkir : implements
    SistemParkir <|.. LimitedAccessParkir : implements
    SistemParkir <|.. NoAccessParkir : implements

    %% Relasi Realization/Implementation (Gate)
    SistemGate <|.. FullAccessGate : implements
    SistemGate <|.. ConditionalAccessGate : implements
    SistemGate <|.. NoAccessGate : implements

    %% Relasi Generalization/Inheritance (Garis tegas dengan panah kosong)
    Pengguna <|-- Dosen : extends
    Pengguna <|-- Mahasiswa : extends
    Pengguna <|-- Tamu : extends

    %% Relasi Aggregation (behavior yang dimiliki Pengguna)
    Pengguna o-- SistemParkir : has-a behavior
    Pengguna o-- SistemGate : has-a behavior

Deskripsi Sistem

Sistem ini terdiri dari beberapa kelas utama yang merepresentasikan pengguna dan sistem parkir serta gate. Setiap pengguna memiliki hak akses yang berbeda terhadap fasilitas parkir dan gate, yang diimplementasikan melalui interface dan kelas konkret.

Prinsip OOP yang Digunakan

1. Encapsulation

Setiap kelas memiliki atribut dan metode yang membungkus data dan perilaku terkait, menjaga agar data tetap aman dan hanya dapat diakses melalui metode yang telah ditentukan.

2. Inheritance

Kelas Dosen, Mahasiswa, dan Tamu mewarisi dari kelas abstrak Pengguna, memungkinkan mereka untuk memiliki atribut dan metode yang sama, serta menambahkan perilaku khusus sesuai kebutuhan.

3. Polymorphism

Melalui penggunaan interface SistemParkir dan SistemGate, sistem dapat menangani berbagai jenis akses parkir dan gate secara fleksibel, memungkinkan pengguna untuk berinteraksi dengan sistem tanpa perlu mengetahui detail implementasi.

4. Abstraction

Kelas Pengguna adalah kelas abstrak yang mendefinisikan struktur dasar untuk semua jenis pengguna, sementara kelas konkret seperti Dosen, Mahasiswa, dan Tamu mengimplementasikan detail spesifik sesuai dengan peran mereka dalam sistem.