"Helo, Amigo! Saya ingin memberitahu anda tentang satu lagi faedah OOP. Anda lihat, program lebih seperti haiwan daripada bangunan. Mereka tidak dibina, ia telah berkembang. Pembangunan bermakna perubahan berterusan. Dalam pembinaan, anda boleh mempunyai rancangan yang baik dan ikutinya kepada T. Tetapi dalam pembangunan perisian, itu tidak berlaku."

Selalunya, anda tidak boleh melakukan sesuatu mengikut cara yang anda mahukan, dan anda perlu banyak mengolah semula program anda. Dan lebih kerap, keperluan pelanggan berubah.

"Tetapi bagaimana jika pelanggan memberikan spesifikasi yang sangat terperinci?"

"Sila lihat apa yang berlaku dari semasa ke semasa. Jika produk berjaya, pelanggan akan mahu mengeluarkan versi baharu, dan kemudian satu lagi, dan satu lagi. Dan, sudah tentu, anda perlu membuat beberapa « perubahan kecil » kepada produk sedia ada. Jadi pembangunan perisian ialah satu siri perubahan yang panjang. Hanya irama yang berbeza. Versi baharu mungkin dikeluarkan setiap minggu, sebulan sekali atau setiap enam bulan."

"Jadi apa yang kita simpulkan daripada semua ini?"

"Struktur dalaman produk mesti dikekalkan dengan cara yang membolehkan perubahan besar (dan kecil) dibuat dengan kerja semula minimum."

"Macam mana nak buat macam tu?"

"Kami telah bercakap tentang bagaimana program terdiri daripada objek yang berinteraksi antara satu sama lain. Mari gunakan titik tebal untuk mewakili semua objek program kami di papan. Kami akan melukis anak panah dari setiap objek (titik) ke semua objek (titik) yang berinteraksi dengannya."

Sekarang mari kita gabungkan objek (titik) ke dalam kumpulan. Titik tergolong dalam kumpulan yang sama jika ia lebih bersambung antara satu sama lain daripada titik yang lain. Jika kebanyakan anak panah titik menghala ke titik dalam kumpulannya, maka kami telah mengumpulkan objek dengan betul. Titik dalam kumpulan yang sama dikatakan berganding rapat, manakala titik dalam kumpulan berbeza digandingkan secara longgar.

Ini dipanggil « prinsip gandingan longgar ».Aturcara dibahagikan kepada beberapa bahagian, selalunya lapisan, yang logiknya terikat kuat dengan struktur dalaman mereka dan terikat lemah dengan lapisan/bahagian lain. Interaksi antara lapisan biasanya sangat terbahagi. Satu lapisan boleh memanggil lapisan lain menggunakan hanya subset kecil kelasnya.

"Prinsip 'pembahagian kerja' yang sama, tetapi pada skala yang lebih besar?"

"Tepat sekali. Ini membolehkan kami menyusun semula jabatan, menjadikannya lebih cekap, dan mengupah lebih ramai orang, dan jika kami tidak mengubah protokol antara jabatan, maka semua perubahan kami akan menjadi setempat. Tiada siapa yang perlu dilatih semula. Kami tidak t perlu mengolah semula keseluruhan sistem. Setiap jabatan boleh mengoptimumkan hal ehwal dalamannya dengan cara ini jika mekanisme untuk interaksi jabatan dipilih dengan baik."

"Jika mereka dipilih dengan baik. Dan bagaimana jika mereka tidak dipilih dengan baik?"

'Kemudian anda akan cepat kehabisan « bilik goyang » untuk membuat perubahan, dan perlu mengolah semula keseluruhan sistem. Itu berlaku dari semasa ke semasa. Kami tidak boleh meramalkan masa depan, tetapi kami boleh meminimumkan bilangan kali kami perlu menulis semula program itu."

"Baiklah. Saya nampak faedah membahagikan program seperti itu, tetapi bagaimana OOP muncul dalam gambar?"

"Apabila kita memilih cara untuk menstruktur jabatan dan bagaimana ia akan berinteraksi, kita menggunakan ' prinsip abstraksi '. Dalam pengaturcaraan, abstraksi digunakan untuk menentukan cara terbaik untuk memisahkan atur cara dan bagaimana bahagian-bahagian itu harus berinteraksi. Prinsip ini boleh juga digunakan berulang kali pada bahagian konstituen sehingga kami telah memecahkan program kepada kelas individu."

"Dan menyembunyikan struktur dalaman bahagian ini, dan mengehadkan cara ia berinteraksi dengan bahagian lain - itu pengkapsulan , bukan?"

"Tepat sekali. Pengkapsulan dan pengabstrakan adalah asas OOP. Program yang baik mesti mematuhi dua prinsip ini. Kemudian kita akan melihat prinsip lain dan memahami kelebihannya."

"Barang bagus. Saya tidak sabar!"