Menjelajahi generalisasi, spesialisasi, dan ketergantungan di OOP

OOP (pemrograman berorientasi objek) adalah paradigma yang berpusat pada objek dan data daripada tindakan dan logika. Saat bekerja dengan OOP, Anda harus mengidentifikasi objek dan hubungannya.

Dalam OOP, masalah diuraikan menjadi sejumlah objek dan bagaimana mereka berhubungan satu sama lain - sebuah proses yang dikenal sebagai pemodelan data. Hubungan penting antara objek meliputi: asosiasi, generalisasi, spesialisasi, agregasi, ketergantungan, dan komposisi. Pada artikel ini kita akan membahas ketergantungan dan hubungan warisan di OOP dengan contoh kode di C # untuk menggambarkan konsep.

Ketergantungan

Ketergantungan adalah hubungan antara dua atau lebih objek di mana satu objek bergantung pada objek atau objek lain untuk implementasinya. Jika salah satu dari objek ini berubah, objek lainnya dapat terkena dampak. Hubungan ketergantungan antara dua atau lebih objek digambarkan dalam UML menggunakan panah putus-putus. Dengan kata lain, ketika ada hubungan ketergantungan antara dua atau lebih objek, objek perlu tahu tentang objek lain yang bergantung padanya.

Pertimbangkan kelas BlogEntry dan View. Sementara yang pertama berisi semua informasi terkait yang terkait dengan entri blog, yang terakhir berkaitan dengan menampilkan data yang diterima dari kelas BlogEntry ke antarmuka pengguna. Jadi, kelas View bergantung pada kelas BlogEntry untuk menampilkan konten (entri blog) di antarmuka pengguna. Oleh karena itu, terdapat hubungan ketergantungan antara kelas View dan BlogEntry. Hubungan ketergantungan direpresentasikan dalam UML menggunakan panah putus-putus.

public class BlogEntry

    {

        //Members of the BlogEntry class

    }

public class View

    {

        //Members of the View class

    }

Generalisasi dan spesialisasi

Generalisasi dapat didefinisikan sebagai teknik mengekstraksi karakteristik esensial (ini termasuk atribut, properti dan metode) dari dua atau lebih subclass dan kemudian menggabungkannya di dalam kelas dasar yang digeneralisasi (juga disebut superclass). Sebaliknya, spesialisasi adalah kebalikan dari generalisasi - spesialisasi digunakan untuk merepresentasikan hubungan "tipe-of" dengan membuat subclass dari kelas dasar yang ada.

Pewarisan didefinisikan sebagai kemampuan suatu kelas untuk memperluas satu atau lebih kelas (juga dikenal sebagai kelas dasar). Perhatikan bahwa generalisasi adalah bentuk terkuat dari hubungan kelas karena kelas-kelas yang berpartisipasi dalam hubungan generalisasi berpasangan erat satu sama lain - sebagian besar kerumitan internal kelas induk terlihat oleh kelas anak.

Kelas yang memperluas basis atau kelas induk juga dikenal sebagai kelas anak atau kelas turunan. Kelas yang diwariskan atau digeneralisasikan memperluas atau mewarisi basis atau kelas induknya. Dalam pewarisan, kelas anak mewarisi metode dan atribut dari kelas dasar atau induk kecuali yang bersifat pribadi. Intinya, anggota pribadi dari kelas dasar tidak diwariskan karena mereka "semata-mata" milik kelas tempat mereka menjadi bagian. Oleh karena itu, Anda harus memanfaatkan generalisasi hanya jika Anda perlu mewakili kelas yang sebenarnya merupakan bentuk yang lebih terspesialisasi dari kelas lain.

Jenis-jenis warisan adalah:

  • Tunggal
  • Banyak
  • Bertingkat
  • Hirarkis
  • Hibrida

Warisan tunggal adalah bentuk pewarisan paling sederhana di mana satu kelas memperluas kelas lain. Cuplikan kode berikut mengilustrasikan bentuk warisan ini - perhatikan bagaimana kelas BlogAuthor memperluas kelas Penulis.

public class Author

    {

        //Members of the Author class

    }

public class BlogAuthor : Author

    {

        //Members of the BlogAuthor class

    }

Dalam multiple inheritance Anda memiliki beberapa kelas dasar tempat kelas diturunkan. Perhatikan bahwa multiple inheritance tidak didukung dalam bahasa pemrograman OOP seperti Java atau C #.

Jenis warisan berikutnya dalam daftar kami adalah warisan berjenjang. Dalam bentuk warisan ini, Anda memiliki kelas yang diwarisi satu sama lain untuk membentuk rantai. Cuplikan kode berikut menggambarkan hal ini.

public class Person

    {

        //Members of the Person class

    }

public class Author : Person

    {

        //Members of the Author class

    }

public class BlogAuthor : Author

    {

        //Members of the BlogAuthor class

    }

Dalam pewarisan hierarkis Anda memiliki kelas yang mewakili struktur hierarki melalui pewarisan, mirip dengan pohon keluarga. Dalam jenis warisan ini, Anda memiliki lebih dari satu kelas anak yang memiliki basis atau kelas induk yang sama. Dengan kata lain, ini adalah jenis pewarisan di mana satu atau lebih kelas turunan memiliki basis atau kelas induk yang sama.

Pewarisan hibrida adalah jenis pewarisan di mana dua atau lebih bentuk warisan digabungkan menjadi satu. Intinya, jenis pewarisan ini merupakan kombinasi dari dua atau lebih bentuk pewarisan untuk membentuk struktur tertutup. Perhatikan bahwa pewarisan Hibrid juga tidak didukung dalam bahasa pemrograman OO seperti C # atau Java.