Jurusan Informatika - Fakultas Teknologi Industri - Universitas Islam Indonesia
  • PROFIL
    • Visi dan Misi
    • Sambutan Ketua Jurusan
    • Struktur Organisasi
    • Dosen
    • Staf
    • Kontak
  • PROGRAM STUDI
    • Program Sarjana
      • Sambutan Kaprodi S1
      • Profil Lulusan
      • Kurikulum 2020
      • Capstone
      • Jalur Tahun Keempat
      • Informatics Expo
      • Informasi & Layanan
      • Prospektus S1
      • Mahasiswa
        • Informasi Akademik
        • Mahasiswa Baru S1 – 2022
        • New IP Students – 2022
        • S1 2021 – Reguler
        • S1 – 2021 – International Program
        • S1 – 2020
    • Program Magister
    • Program Doktor
    • International Program
    • Informatika PJJ
  • UNIT PENDUKUNG
    • Laboratorium
    • Pusat Studi
      • Pusat Studi Forensika Digital
      • Pusat Studi Informatika Medis
        • Visi-Misi
        • Struktur Organisasi
        • Mitra Kerjasama
        • Kegiatan
      • Pusat Studi Sistem Informasi Enterprise
      • Pusat Studi Sains Data
    • ITCentrum
    • Student Staff
    • Komunitas Mahasiswa
    • Lembaga Mahasiswa
  • KEMITRAAN
  • ARTIKEL
    • Pojok Dakwah
    • Pojok Informatika
  • Click to open the search input field Click to open the search input field Search
  • Menu Menu
  • Link to Instagram
  • Link to Facebook
  • Link to Youtube
Pojok Informatika

Single Responsibility Principle (SRP) dalam Paradigma Pemrograman Berorientasi Objek

informatika wajib coding - freepik
Serial Prinsip SOLID Dalam Paradigma Pemrograman Berorientasi Objek
Oleh Andhik Budi Cahyono

SOLID adalah prinsip-prinsip yang dapat membantu para pengembang perangkat lunak dalam merancang dan membangun program yang berkualitas tinggi dan mudah untuk dipelihara. Pemeliharaan yang mudah dan kualitas perangkat lunak yang baik bisa membuat umur perangkat lunak jadi lebih lama dan tentu saja menguntungkan bagi pengembang maupun penggunanya. Selain itu, dengan prinsip SOLID, perubahan kebutuhan di masa yang akan datang jadi lebih mudah untuk diakomodasi. SOLID sendiri merupakan akronim dari lima prinsip dasar dalam pemrograman berorientasi objek, yaitu: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, dan Dependency Inversion. 

Definisi dan Tujuan SRP

Prinsip Single Responsibility (SRP) merupakan prinsip pertama dari SOLID. Prinsip ini menyatakan bahwa: 

“Sebuah kelas seharusnya hanya memiliki satu tanggung jawab, tugas, atau fokus pada satu tujuan tertentu dan hanya memiliki satu alasan untuk berubah” 

SRP sangat penting dalam pengembangan perangkat lunak karena dapat membantu mengurangi kompleksitas, meningkatkan keterbacaan, dan mempermudah perawatan kode program. Dengan menerapkan prinsip SRP, setiap bagian dari program memiliki satu tujuan yang jelas dan terpisah dari tugas lain, sehingga perubahan atau penambahan fitur pada satu bagian tidak akan memengaruhi bagian lain.

Implementasi dan Contoh SRP

SRP tidak berarti dalam satu kelas hanya boleh memiliki satu buah method (fungsi/prosedur) saja. Sebuah kelas bisa saja memiliki lebih dari satu fungsi, tetapi fungsi-fungsi yang dimilikinya masih relevan dan terkait dengan tugas utama dari kelas tersebut. Sebagai contoh, sebuah kelas untuk mengelola basis data tidak seharusnya juga bertanggung jawab untuk mengirim email atau menghasilkan laporan karena tugas-tugas tersebut memiliki tanggung jawab yang berbeda. Fungsi-fungsi yang berkaitan dengan pengiriman email dan generate laporan bisa dibuatkan pada kelas tersendiri. 

Berikut contoh kode program yang belum menerapkan SRP: 

public class Payment {

    private double amount;

    private String paymentMethod;

    public Payment(double amount, String paymentMethod) {

        this.amount = amount;

        this.paymentMethod = paymentMethod;

    }

    public double getAmount() {

        return amount;

    }

    public void setAmount(double amount) {

        this.amount = amount;

    }

    public String getPaymentMethod() {

        return paymentMethod;

    }

    public void setPaymentMethod(String paymentMethod) {

        this.paymentMethod = paymentMethod;

    }

 

// kode ini belum optimal dan bisa dioptimalkan dengan prinsip SOLID yang lain

    public void processPayment() {

        if (paymentMethod.equals(“credit card”)) {

            // Process credit card payment

        } else if (paymentMethod.equals(“debit card”)) {

            // Process debit card payment

        } else if (paymentMethod.equals(“paypal”)) {

            // Process PayPal payment

        } else {

            // Invalid payment method

        }

    }

 // fungsi yang memiliki tugas berbeda atau tidak relevan

    public void sendPaymentConfirmationEmail() {

        // Send payment confirmation email

    }

}

Sekilas mungkin terlihat tidak ada masalah pada kelas Payment tersebut baik secara semantik maupun sintaksis. Namun, kelas tersebut melanggar prinsip SRP karena memiliki dua tugas yaitu: memproses pembayaran dan mengirimkan email konfirmasi pembayaran. Fungsi sendPaymentConfirmationEmail() sebaiknya dipisahkan dari kelas Payment dan diletakkan pada kelas baru, misalnya kelas PaymentConfirmationSender. Kode program di atas bisa diperbaiki menjadi: 

Payment.java

public class Payment {

    private double amount;

    private String paymentMethod;

    public Payment(double amount, String paymentMethod) {

        this.amount = amount;

        this.paymentMethod = paymentMethod;

    }

    public double getAmount() {

        return amount;

    }

    public void setAmount(double amount) {

        this.amount = amount;

    }

    public String getPaymentMethod() {

        return paymentMethod;

    }

    public void setPaymentMethod(String paymentMethod) {

        this.paymentMethod = paymentMethod;

    }

 

// kode ini belum optimal dan bisa dioptimalkan dengan prinsip   SOLID yang lain

    public void processPayment() {

        if (paymentMethod.equals(“credit card”)) {

            // Process credit card payment

        } else if (paymentMethod.equals(“debit card”)) {

            // Process debit card payment

        } else if (paymentMethod.equals(“paypal”)) {

            // Process PayPal payment

        } else {

            // Invalid payment method

        }

    }

}

PaymentConfirmationSender.java

public class PaymentConfirmationSender {

    public void sendPaymentConfirmationEmail() {

        // Send payment confirmation via email

    }

    public void sendPaymentConfirmationWhatsapp() {

        // Send payment confirmation via whatsapp    

    }

}

Kedua kelas bisa dihubungkan ketika proses checkout dilakukan, misalnya seperti contoh kode berikut: 

public void checkout() {

    Payment payment = new Payment(100000, “paypal”);

    payment.processPayment();

    PaymentConfirmationSender emailSender = new PaymentConfirmationSender();

    emailSender.sendPaymentConfirmationEmail();

}

Dalam fungsi checkout() di atas, setelah proses pembayaran selesai diproses, objek PaymentConfirmationSender digunakan untuk mengirim email konfirmasi pembayaran. Dengan cara ini, tanggung jawab pengiriman email telah dipisahkan dari kelas Payment dan kelas Payment hanya bertanggung jawab untuk menyimpan informasi pembayaran dan memproses pembayaran. Fungsi checkout() bisa ditaruh pada kelas tersendiri, kelas Checkout misalnya, yang memiliki tugas menyelesaikan rangkaian proses checkout seperti menerima input dari pengguna, melakukan validasi, memproses pembayaran, dan mengirim email konfirmasi pembayaran.

Demikian penjelasan dan pembahasan mengenai salah satu prinsip SOLID yaitu Single Responsibility Principle (SRP). Pada kesempatan berikutnya, kita akan membahas prinsip kedua yaitu Open-Closed Principle. 

*masukan untuk tulisan ini bisa disampaikan langsung ke email: [email protected]

[/FA]

Related posts:

Rudi Muslim Temukan Lima Faktor Penentu Keberhasilan UKM di Sleman, Apa Saja?

Cara Membuat Program Login Sederhana dengan Bahasa Java

Di Balik Layar Gamifikasi

Seri Gen AI Gratisan - Intro: Imajinasi dan Inovasi

Algoritma Judi Online Menggunakan Random Number Generator

March 2, 2023/by informatika
Share this entry
  • Share on Facebook
  • Share on X
  • Share on WhatsApp
  • Share on LinkedIn
  • Share by Mail
https://informatics.uii.ac.id/wp-content/uploads/2021/06/programmer-scaled.jpg 1707 2560 informatika https://informatics.uii.ac.id/wp-content/uploads/2020/03/Logo-webTF-UII-1030x420.png informatika2023-03-02 12:10:012023-03-02 12:10:01Single Responsibility Principle (SRP) dalam Paradigma Pemrograman Berorientasi Objek
  • Selamat! Prof. Sri Kusumadewi Dilantik sebagai Dekan FTI UII Periode 2026–2030July 1, 2026 - 21:09
  • menunggu berbuka puasa di masjid
    Menjemput Keberkahan di Tanah Suci: Hakikat dan Manfaat Ibadah UmrahJuly 1, 2026 - 16:15
  • AI Mengubah Pekerjaan, Bukan Menghapusnya: Pesan Prof. Fathul Wahid bagi Mahasiswa InformatikaJuly 1, 2026 - 12:03
  • Belajar Sistem Enterprise dari Zulhia Septiandini, Alumni Informatika UII yang Berkarier 18 Tahun di Bidang SAPJuly 1, 2026 - 10:40
  • Pengumuman Pergantian Dosen Pembimbing Akademik (DPA)June 26, 2026 - 15:07
  • Dari Yogyakarta ke Hiroshima: Pandu Nur Afi Dewanto Bawa Riset Rekomendasi Micro-Credential Berbasis AIJune 8, 2026 - 10:27
  • Mozanda Presentasikan Penelitian AI untuk Bimbingan Akademik di Seminar Internasional JepangJune 8, 2026 - 10:13
  • Webinar PJJ Informatika UII: Menavigasi Pengambilan Keputusan di Era AIJune 6, 2026 - 20:42
  • PJJ Informatika UII Goes to Bogor: Pelatihan Network Engineering Skills di Era DigitalJune 6, 2026 - 09:42
  • Surat Edaran Dosen Pembimbing Skripsi TA Genap 2025-2026 Tahap-1May 25, 2026 - 08:55

Categories

JURUSAN INFORMATIKA

Gedung KH. Mas Mansyur  Lantai 2
Universitas Islam Indonesia
Jl. Kaliurang KM. 14,5 Sleman Yogyakarta 55584

Telepon: +62 274 895287 ext. 122
Faks: +62 274 895007
Email:
Jurusan: [email protected]
Prodi Informatika Program Sarjana: [email protected]
Prodi Informatika Program Magister : [email protected]
Prodi Informatika PJJ : [email protected]
Instagram: @informatics.uii

TAUTAN CEPAT

Universitas

Fakultas

UII Gateway

Admisi

© Hak Cipta 2022 - Jurusan Informatika UII - Yogyakarta
  • Link to Instagram
  • Link to Facebook
  • Link to Youtube
Link to: Sobat, Sadarkah Kita Bahwa Semuanya Akan Bersaksi? Link to: Sobat, Sadarkah Kita Bahwa Semuanya Akan Bersaksi? Sobat, Sadarkah Kita Bahwa Semuanya Akan Bersaksi?Al-Quran Link to: Dosen Pembimbing Tugas Akhir S-1 Jalur Penelitian Semester Genap 22/23 Link to: Dosen Pembimbing Tugas Akhir S-1 Jalur Penelitian Semester Genap 22/23 Dosen Pembimbing Tugas Akhir S-1 Jalur Penelitian Semester Genap 22/23
Scroll to top Scroll to top Scroll to top