Rumah Kewangan Peribadi Pemfaktoran dan Warisan dalam C ++ - dummies

Pemfaktoran dan Warisan dalam C ++ - dummies

Video: 2014 08 UA3 Ringkasan Pemfaktoran Ungkapan Algebra 2025

Video: 2014 08 UA3 Ringkasan Pemfaktoran Ungkapan Algebra 2025
Anonim

Konsep warisan, dan dengan itu pemfaktoran, dalam C ++ membolehkan satu kelas mewarisi sifat kelas asas. Warisan mempunyai beberapa tujuan; manfaat utama warisan adalah keupayaan untuk menunjukkan hubungan antara kelas. Inilah hubungan IS_A yang dipanggil - Oven Ketuhar Ketuhar Microwave Oven dan barangan seperti itu.

Pemfaktoran adalah perkara yang bagus jika anda membuat korelasi yang betul. Sebagai contoh, hubungan gelombang ketuhar gelombang mikro berbanding konvensional kelihatan semula jadi. Tuntut bahawa microwave adalah pemanggang roti khas, dan anda menuju masalah. Benar, kedua-dua mereka panas, kedua-duanya menggunakan elektrik, dan kedua-duanya terdapat di dapur, namun persamaannya berakhir di sana - microwave tidak boleh membuat roti bakar dan pemanggang roti tidak boleh membuat nachos.

Mengenal pasti kelas-kelas yang wujud dalam masalah dan menggambarkan hubungan yang betul antara kelas-kelas ini adalah proses yang dikenal sebagai pemfaktoran. (Perkataan itu berkaitan dengan aritmetik yang anda terpaksa lakukan di sekolah menengah: memfaktorkan penyebut yang paling umum, contohnya 12 adalah sama dengan 2 kali 2 kali 3.)

Berikut adalah cara anda boleh menggunakan warisan untuk memudahkan program anda menggunakan contoh akaun bank. Katakan anda diminta menulis program bank mudah yang melaksanakan konsep akaun simpanan dan akaun cek.

Pengaturcara berorientasikan objek telah menghasilkan dengan ringkas cara untuk menerangkan titik penting kelas dalam lukisan. Kelas Memeriksa dan Simpanan ditunjukkan dalam angka ini. (Ini adalah hanya satu daripada beberapa cara untuk menggambarkan perkara yang sama secara grafik.)

Memeriksa dan Simpanan. ">

Kelas Bebas Memeriksa dan Simpanan.

Untuk membaca angka ini dan angka-angka lain, ingat yang berikut:

  • Kotak besar adalah kelas, dengan nama kelas di bahagian atas.

  • Nama dalam kotak adalah fungsi ahli.

  • Nama tidak dalam kotak adalah ahli data.

  • Nama-nama yang melangkau dari kotak adalah ahli yang boleh diakses secara umum; iaitu, ahli-ahli ini boleh diakses oleh fungsi-fungsi yang bukan sebahagian daripada kelas atau mana-mana keturunannya. Ahli-ahli yang berada di dalam kotak tidak boleh diakses dari luar kelas.

  • Anak panah tebal mewakili hubungan IS_A.

  • Anak panah tipis mewakili hubungan HAS_A.

Kenderaan IS_A Kereta , tetapi Kereta HAS_A Motor .

Anda dapat melihat pada angka pertama bahawa kelas Memeriksa dan Simpanan mempunyai banyak kesamaan. Sebagai contoh, kedua-dua kelas mempunyai fungsi pengeluaran () dan deposit () anggota.Kerana kedua-dua kelas tidak sama, bagaimanapun, mereka mesti tetap sebagai kelas yang berasingan. (Dalam aplikasi bank seumur hidup, kedua-dua kelas akan menjadi lebih baik daripada contoh ini.) Namun, ada cara untuk mengelakkan pengulangan ini.

Anda boleh mempunyai satu daripada kelas ini mewarisi dari yang lain. Simpanan mempunyai lebih banyak anggota daripada Memeriksa, sehingga Anda dapat membiarkan Simpanan mewarisi dari Memeriksa. Pengaturan ini ditunjukkan dalam angka seterusnya ini.

Kelas Simpanan mewarisi semua ahli. Kelas ini diselesaikan dengan penambahan ahli data tanpa pengeluaran dan dengan mengatasi penarikan fungsi () . Anda perlu mengatasi penarikan balik () kerana peraturan untuk mengeluarkan wang dari akaun simpanan adalah berbeza daripada mereka untuk mengeluarkan wang dari akaun cek.

Simpanan dilaksanakan sebagai subclass Checking. ">

Simpanan dilaksanakan sebagai subclass Checking.

Walaupun membiarkan Simpanan mewarisi dari Memeriksa adalah laborsaving, itu tidak sepenuhnya memuaskan. Masalah utama ialah, seperti berat yang disenaraikan di lesen pemandu saya, ia menyalahtafsirkan kebenaran. Hubungan warisan ini menunjukkan bahawa akaun simpanan adalah jenis akaun pemeriksaan khas, yang tidak.

Kesilapan seperti itu mengelirukan kepada pengaturcara, baik hari ini dan esok. Suatu hari nanti, seorang pengaturcara yang tidak dikenali dengan helah pengaturcaraan kami perlu membaca dan memahami apa kod kami lakukan. Perwakilan mengelirukan sukar untuk didamaikan dan difahami.

Selain itu, salah nyata seperti itu boleh menyebabkan masalah di jalan raya. Katakan, contohnya, bank mengubah dasarnya berkenaan dengan menyemak akaun. Katakan ia memutuskan untuk mengenakan yuran perkhidmatan pada memeriksa akaun hanya jika baki minimum menurun di bawah nilai yang diberikan pada bulan tersebut.

Perubahan seperti ini dapat dikendalikan dengan mudah dengan perubahan minimum ke kelas Checking. Anda perlu menambah ahli data baru ke kelas Memeriksa untuk menjejaki baki minimum selama sebulan. Mari keluar pada anggota badan dan panggilnya minimumBalance.

Tetapi sekarang anda mempunyai masalah. Kerana Simpanan mewarisi dari Pemeriksaan, Simpanan mendapat ahli data baru ini juga. Ia tidak digunakan untuk ahli ini kerana baki minimum tidak menjejaskan akaun simpanan, jadi hanya duduk di sana. Ingat bahawa setiap objek akaun semak mempunyai ahli tambahan minimumBalance ini. Satu ahli data tambahan mungkin tidak menjadi masalah besar, tetapi ia menambah kekeliruan lebih lanjut.

Perubahan seperti ini berkumpul. Hari ini ia adalah ahli data tambahan - esok ia adalah fungsi ahli berubah. Akhirnya, kelas akaun simpanan membawa banyak bagasi tambahan yang hanya boleh digunakan untuk menyemak akaun.

Sekarang bank kembali dan memutuskan untuk menukar beberapa dasar akaun simpanan. Ini memerlukan anda mengubahsuai beberapa fungsi dalam Memeriksa. Perubahan seperti ini dalam kelas asas secara automatik menyebarkan ke subclass melainkan fungsi tersebut telah ditindih dalam subclass Simpanan.

Sebagai contoh, katakan bahawa bank memutuskan untuk memberikan toasters untuk setiap deposit ke dalam akaun cek. Tanpa bank (atau pengaturcara) mengetahui, deposit untuk memeriksa akaun secara automatik akan menghasilkan sumbangan toaster. Kecuali anda berhati-hati, perubahan kepada Memeriksa secara tidak dijangka muncul dalam Simpanan.

Bagaimana anda boleh mengelakkan masalah ini? Mengaku bahawa Memeriksa adalah kes khas Simpanan perubahan tetapi tidak menyelesaikan masalah kita. Apa yang anda perlukan adalah kelas ketiga (memanggilnya Akaun, hanya untuk merenung) yang merangkumi perkara yang biasa antara Memeriksa dan Simpanan, seperti yang ditunjukkan di sini.

Memeriksa dan Simpanan pada kelas Akaun yang biasa. ">

Basing Memeriksa dan Simpanan pada kelas Akaun biasa.

Bagaimanakah membina akaun baru menyelesaikan masalah? Pertama, mencipta kelas Akaun yang baru adalah penerangan yang lebih tepat mengenai dunia sebenar (apa pun). Sudah tentu, ada sesuatu yang dikenali sebagai akaun. Akaun simpanan dan akaun semakan adalah kes-kes khas konsep yang lebih asas ini.

Selain itu, kelas Simpanan terlindung daripada perubahan kepada kelas Memeriksa (dan sebaliknya). Sekiranya bank mendirikan perubahan asas kepada semua akaun, anda boleh mengubah Akaun, dan semua subclass secara automatik akan mewarisi perubahan itu. Tetapi jika bank mengubah dasarnya hanya untuk menyemak akaun, anda boleh mengubah hanya kelas Memeriksa tanpa menjejaskan Simpanan.

Proses pemusnahan biasa dari kelas yang sama adalah intipati kelas pemfaktualan .

Pemfaktoran hanya sah jika hubungan warisan sepadan dengan realiti. Pemfaktoran bersama dengan kelas Mouse dan Joystick kerana kedua-dua peranti penunjuk perkakasan adalah sah. Pemfaktoran bersama dengan kelas Mouse dan Paparan kerana kedua-duanya membuat panggilan sistem operasi tahap rendah tidak.

Pemfaktoran dan Warisan dalam C ++ - dummies

Pilihan Editor

Bagaimana Menghubungkan Item Menu ke Kategori di Joomla - dummies

Bagaimana Menghubungkan Item Menu ke Kategori di Joomla - dummies

Untuk artikel yang dikategorikan dalam Joomla untuk dilihat oleh pengguna laman web anda, anda perlu memautkan item menu Joomla anda ke kategori Joomla yang mengandungi artikel yang ingin anda siarkan. Dengan menyambungkan kategori ke item menu, semua artikel dalam kategori boleh didapati melalui item menu yang berkaitan. Untuk membuat ...

Cara Memasang Joomla CMS pada Server Jauh - dummies

Cara Memasang Joomla CMS pada Server Jauh - dummies

Sebaik sahaja anda telah memuatkan fail Joomla yang tidak diturunkan di pelayan jauh dan sediakan MySQL untuk Joomla, anda sudah bersedia untuk memasang Sistem Pengurusan Kandungan Joomla (CMS). Navigasi ke tapak anda di pelayan tuan rumah. Anda melihat halaman pemasangan Joomla pertama. Pilih bahasa. Klik Seterusnya. Semua item dalam pane bahagian atas ...

Cara Membiarkan Pengguna Menguruskan Akaun Sendiri di Joomla - dummies

Cara Membiarkan Pengguna Menguruskan Akaun Sendiri di Joomla - dummies

Walaupun anda boleh mengurus pengguna dari hujung belakang, Joomla menyediakan kemudahan yang baik yang membolehkan pengguna menguruskan diri mereka juga. Anda boleh membuat halaman di mana pengguna boleh mendaftar, log masuk, menetapkan semula kata laluan mereka, diingatkan kata laluan mereka, dan sebagainya. Buat laman pengurusan pengguna Untuk membuat halaman yang membolehkan pengguna mengurus sendiri, anda ...

Pilihan Editor

Pengguna dan Definisi SharePoint berbeza - dummies

Pengguna dan Definisi SharePoint berbeza - dummies

SharePoint mempunyai banyak jenis pengguna yang berbeza, dan bergantung di mana peranan anda sesuai , anda mungkin mempunyai pengalaman yang sangat berbeza dari pengguna SharePoint yang lain. Sebagai contoh, anda mungkin ditugaskan untuk membuat dan mentadbir laman web SharePoint untuk pasukan anda. Dalam kes ini, anda mungkin melihat ke hadapan fungsi yang luas SharePoint ...

Dan Microblog dalam SharePoint - dummies

Dan Microblog dalam SharePoint - dummies

Microblogging dibuat terkenal oleh Twitter. SharePoint 2013 membawa mikroblogging ke dunia korporat. Menggunakan Twitter, anda menghantar mesej ringkas kepada dunia. Anda boleh mengikuti orang lain dan menarik pengikut anda sendiri. Anda menyebut orang lain menggunakan simbol @ yang diikuti dengan nama mereka dan boleh menanda topik menggunakan # ...

Mengeksport Table Akses ke Senarai Dalam Talian SharePoint - dummies

Mengeksport Table Akses ke Senarai Dalam Talian SharePoint - dummies

Jika anda mempunyai meja dalam Akses yang ada pangkalan data yang anda ingin sediakan untuk ahli pasukan anda yang tidak mempunyai aplikasi MS Access 2010, cara terbaik untuk melakukan ini adalah untuk mengeksport jadual tersebut ke dalam senarai SharePoint. Ikuti langkah-langkah berikut: Dari pangkalan data anda, klik kanan pada jadual di ...

Pilihan Editor

Penyediaan aSVAB: Akar - patung

Penyediaan aSVAB: Akar - patung

Menjadi akrab dengan akar untuk ASVAB. Akar adalah kebalikan dari kuasa atau eksponen. Terdapat pelbagai jenis akar tak terhingga. Anda mempunyai akar kuadrat, yang bermaksud "membuang" asas kepada kuasa kedua; akar kubus, yang bermaksud "membuang" asas yang dinaikkan kepada kuasa ketiga; akar yang keempat, untuk ...

ASVAB Penyediaan: Bekerja dengan Perpuluhan - patung

ASVAB Penyediaan: Bekerja dengan Perpuluhan - patung

Anda perlu tahu bagaimana untuk bekerja dengan perpuluhan untuk ASBAB . Perpuluhan adalah kaedah menulis nombor pecahan tanpa menggunakan pengangka dan penyebut. Anda boleh menulis pecahan 7/10 sebagai perpuluhan 0. 7; anda menyebutnya "tujuh persepuluh" atau "titik nol tujuh. "Tempoh atau titik perpuluhan menunjukkan bahawa nombor itu ...

ASVAB Subtest Details - dummies

ASVAB Subtest Details - dummies

Tergantung di mana dan untuk tujuan apa yang anda ambil ujian, anda mungkin menghadapi beberapa versi ASVAB. Versi terkomputer dari ASVAB (CAT-ASVAB) mengandungi sembilan subtest masa yang berasingan. Pada CAT-ASVAB, Maklumat Auto dan Maklumat Kedai dipisahkan kepada dua ujian berbeza, sedangkan mereka digabungkan pada versi kertas. Lihatlah ...