C++ Academy · Pelajaran

Kompromi Pewarisan vs Komposisi

Bandingkan pewarisan dan komposisi lalu pilih alat yang tepat untuk rancangan

Pelajaran 4 dari 414 langkah

Kompromi Pewarisan vs Komposisi adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Dua Cara Menggunakan Kembali Kode

Anda dapat menggunakan kembali kode dengan mewarisi dari kelas lain atau dengan menyusunnya sebagai anggota. Keduanya memiliki kegunaan masing-masing.

Pewarisan: "Adalah"

Gunakan pewarisan ketika kelas turunan benar-benar merupakan jenis khusus dari kelas dasar.

class Vehicle {};
class Car : public Vehicle {};       // a Car IS a Vehicle
class SportsCar : public Car {};

Komposisi: "Memiliki"

Gunakan komposisi ketika hubungannya adalah "memiliki" atau "menggunakan".

class Engine {};
class Car {
    Engine engine_;                  // a Car HAS an Engine
};

Pertukaran Kopling

Pewarisan menciptakan kopling yang erat — kelas turunan bergantung pada detail internal kelas dasar. Komposisi menjaga modul tetap independen dan lebih mudah diubah.

Fleksibilitas

Komposisi memungkinkan perubahan perilaku saat program berjalan — Anda dapat mengganti objek yang disusun. Pewarisan mengikat perilaku pada waktu kompilasi.

class Logger {
    std::unique_ptr<LogSink> sink_;   // can swap implementations
public:
    void setSink(std::unique_ptr<LogSink> s) { sink_ = std::move(s); }
};

Pengujian

Objek yang disusun dapat digantikan dengan objek tiruan untuk pengujian. Kelas dasar yang diwariskan lebih sulit dibuat tiruannya tanpa fungsi virtual atau templat.

Masalah Kelas Dasar yang Rapuh

Perubahan pada kelas dasar dapat merusak banyak kelas turunan. Komposisi mengisolasi perubahan pada kelas yang menyusunnya.

Pilih Pewarisan Ketika

Pewarisan sesuai digunakan ketika:

  • Ada hubungan "adalah" yang jelas
  • Diperlukan polimorfisme melalui antarmuka kelas dasar
  • Kelas dasar secara khusus dirancang untuk pewarisan

Pilih Komposisi Ketika

Komposisi sesuai digunakan ketika:

  • Anda menginginkan fleksibilitas untuk mengganti implementasi
  • Hubungannya adalah "memiliki" atau "menggunakan"
  • Anda menginginkan kopling yang rendah dan pengujian yang lebih mudah

Pola Strategi

Gabungkan komposisi dengan polimorfisme: simpan penunjuk kelas dasar ke objek strategi yang disusun oleh kelas pemilik.

class Sorter {
    std::unique_ptr<SortStrategy> strategy_;
public:
    void sort(std::vector<int>& v) { strategy_->execute(v); }
};

Kelas Campuran dan Kelas Kebijakan

Untuk penyesuaian waktu kompilasi, gunakan kelas kebijakan bertemplat — komposisi pada tingkat tipe. Pendekatan ini bertenaga tanpa beban waktu berjalan.

Antarmuka + Komposisi

Pola modern yang umum: tentukan antarmuka (kelas dasar abstrak), lalu susun kelas konkret yang mengimplementasikannya. Gunakan pewarisan untuk antarmuka dan komposisi untuk implementasi.

Pemeriksaan Singkat

Pendekatan mana yang umumnya memberikan fleksibilitas lebih besar dan kopling yang lebih longgar?

Ringkasan

Pewarisan memodelkan "adalah"; komposisi memodelkan "memiliki". Komposisi lebih fleksibel dan memiliki kopling yang lebih longgar — pilih komposisi untuk penggunaan kembali kode. Gunakan pewarisan untuk polimorfisme melalui antarmuka, sering kali dipadukan dengan implementasi yang disusun.

Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kompromi Pewarisan vs Komposisi” gratis?

Ya — teks lengkap “Kompromi Pewarisan vs Komposisi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kompromi Pewarisan vs Komposisi”?

Bandingkan pewarisan dan komposisi lalu pilih alat yang tepat untuk rancangan Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Kompromi Pewarisan vs Komposisi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pewarisan Tunggal dan Jamak
  2. Fungsi Virtual dan vtable
  3. Class Abstrak dan Metode Virtual Murni
  4. Kompromi Pewarisan vs Komposisi
← Kembali ke C++ Academy