Caraguna
  • Home
  • Investasi
  • Teknologi
  • Jaringan
  • Berita
  • Blogging
  • Property
No Result
View All Result
Caraguna
  • Home
  • Investasi
  • Teknologi
  • Jaringan
  • Berita
  • Blogging
  • Property
No Result
View All Result
Caraguna
No Result
View All Result
Open closed principle

Open-Closed Principle (OCP): Membuka Kemungkinan, Menutup Perubahan dalam Desain Perangkat Lunak

Roziq by Roziq
August 8, 2023
in SOLID Principles
0
Share on FacebookShare on Twitter

Dalam dunia pengembangan perangkat lunak, kemampuan beradaptasi dengan perubahan tanpa merusak struktur yang sudah ada merupakan hal yang penting.

Salah satu prinsip utama yang membantu mengatasi tantangan ini adalah “Open-Closed Principle” (Prinsip Terbuka-Tertutup). Prinsip ini memungkinkan pengembang untuk menambahkan fungsionalitas baru tanpa harus mengubah kode yang sudah ada, menciptakan fleksibilitas dan stabilitas dalam desain perangkat lunak.

You might also like

Dependency Inversion

Dependency Inversion Principle (DIP): Membalikkan Arus Ketergantungan untuk Desain yang Fleksibel

August 9, 2023
Interface segregation principle

Interface Segregation Principle (ISP): Membagi Antarmuka untuk Keterkaitan yang Relevan

August 9, 2023

Apa itu Open-Closed Principle?

Open-Closed Principle (OCP) menyatakan bahwa entitas perangkat lunak (kelas, modul, fungsi, dll.) seharusnya terbuka untuk perluasan (open) tetapi tertutup untuk modifikasi (closed).

Dalam kata lain, kita dapat menambahkan fungsionalitas baru melalui perluasan tanpa harus merubah atau memodifikasi kode yang sudah ada.

Mengapa OCP Penting?

Menerapkan OCP memberikan manfaat yang signifikan dalam pengembangan perangkat lunak:

  1. Perluasan Mudah: OCP memungkinkan penambahan fitur atau fungsionalitas baru tanpa risiko mengganggu kode yang sudah ada. Perluasan dapat diimplementasikan melalui warisan (inheritance), antarmuka (interface), atau polimorfisme.
  2. Pemeliharaan yang Aman: Kode yang sudah ada tetap utuh dan tidak terpengaruh oleh perubahan. Ini meminimalkan risiko memperkenalkan bug baru atau merusak fungsionalitas yang sudah berjalan.
  3. Mendorong Reusabilitas: Dengan memisahkan fungsionalitas baru dalam entitas baru, kita menciptakan komponen yang dapat digunakan kembali dalam konteks yang berbeda.

Contoh Penerapan OCP dalam Dart

Misalkan kita memiliki sistem pembayaran yang mengolah pembayaran berbagai jenis metode: kartu kredit, PayPal, dan transfer bank.

class PaymentProcessor {
  void processPayment(String method, double amount) {
    if (method == 'CreditCard') {
      // logika pemrosesan kartu kredit
    } else if (method == 'PayPal') {
      // logika pemrosesan PayPal
    } else if (method == 'BankTransfer') {
      // logika pemrosesan transfer bank
    }
  }
}

Pada contoh di atas, saat ingin menambahkan metode pembayaran baru, kita perlu merubah kelas PaymentProcessor, yang melanggar OCP.

Solusi yang mematuhi OCP adalah dengan menerapkan polimorfisme dan menggunakan pola strategi:

abstract class PaymentMethod {
  void processPayment(double amount);
}

class CreditCardPayment implements PaymentMethod {
  @override
  void processPayment(double amount) {
    // logika pemrosesan kartu kredit
  }
}

class PayPalPayment implements PaymentMethod {
  @override
  void processPayment(double amount) {
    // logika pemrosesan PayPal
  }
}

class BankTransferPayment implements PaymentMethod {
  @override
  void processPayment(double amount) {
    // logika pemrosesan transfer bank
  }
}

Dengan memisahkan metode pembayaran ke dalam kelas-kelas yang berbeda, kita dapat menambahkan metode pembayaran baru tanpa harus mengubah PaymentProcessor, memenuhi prinsip Open-Closed.

Kesimpulan

Open-Closed Principle adalah prinsip yang penting dalam mengembangkan perangkat lunak yang fleksibel dan mudah diperluas. Dengan memungkinkan penambahan fitur tanpa merusak kode yang sudah ada, OCP membantu menciptakan desain yang stabil, terkelola dengan baik, dan siap menghadapi perubahan di masa depan.

Dalam konteks dunia pengembangan perangkat lunak yang terus berkembang, penerapan OCP adalah langkah penting menuju kesuksesan proyek dan kepuasan pengguna akhir.

Tags: cleanarchitectureopenclosedprinciplesolidprinciples
Roziq

Roziq

Write for share about latest technology.

Related Stories

Dependency Inversion

Dependency Inversion Principle (DIP): Membalikkan Arus Ketergantungan untuk Desain yang Fleksibel

by Roziq
August 9, 2023
0

Dalam dunia pengembangan perangkat lunak, interaksi antara komponen-komponen berperan penting dalam membentuk desain yang efisien dan mudah diubah. Namun, seringkali...

Interface segregation principle

Interface Segregation Principle (ISP): Membagi Antarmuka untuk Keterkaitan yang Relevan

by Roziq
August 9, 2023
0

Dalam dunia pengembangan perangkat lunak, antarmuka (interface) berperan penting dalam menghubungkan berbagai komponen. Namun, seringkali antarmuka menjadi terlalu kompleks dan...

Liskov Substitution

Liskov Substitution Principle (LSP): Fondasi Kuat untuk Hubungan Pewarisan yang Benar

by Roziq
August 8, 2023
0

Dalam pengembangan perangkat lunak berorientasi objek, salah satu tantangan utama adalah memastikan bahwa pewarisan (inheritance) diantara kelas-kelas dapat dilakukan dengan...

Single Responsibility Principle (SRP): Penerapan Pemisahan Tanggung Jawab dalam Desain Perangkat Lunak

Single Responsibility Principle (SRP): Penerapan Pemisahan Tanggung Jawab dalam Desain Perangkat Lunak

by Roziq
August 7, 2023
0

Dalam pengembangan perangkat lunak, keberhasilan sebuah proyek tidak hanya bergantung pada fungsionalitas yang dihasilkan, tetapi juga pada kemampuan perangkat lunak...

Next Post
Liskov Substitution

Liskov Substitution Principle (LSP): Fondasi Kuat untuk Hubungan Pewarisan yang Benar

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Caraguna

Caraguna adalah sebuah situs yang menyediakan berbagai informasi seputar dunia teknologi informasi. Seperti penggunaan dari sebuah library, tools, hardware, software, dan lain-lain.

  • Teknologi
  • SEO
  • Sitemap
  • Resep Masakan
  • Contact Us

© 2025 Caraguna - Informasi Seputar Teknologi Informasi.

No Result
View All Result
  • Home
  • Teknologi
  • Komputer
  • Framework
  • Jaringan
  • Blogging
  • Investasi

© 2025 Caraguna - Informasi Seputar Teknologi Informasi.