(Lanjutan dari artikel pertama)
Dengan tetap mempertahankan pemikiran berorientasi objek, topik ini tampaknya agak besar. Apa yang baru saja saya katakan dan sebutkan di sini sebenarnya hanyalah beberapa masalah kecil yang harus diperhatikan saat coding. Oleh karena itu, mungkin lebih tepat jika istilah 'seluruh' diubah menjadi 'ingat'.
Beberapa komentar mengenai beberapa fitur Delphi:
Saya ingin tahu apakah Anda memperhatikan bahwa semua komponen (termasuk kontrol) yang ditempatkan dalam Formulir Delphi dapat dilihat oleh Formulir lain. Tepatnya, komponen ini adalah isi dari bagian Publik Formulir. Di satu sisi, hasil ini bagus, karena fleksibilitasnya, kelas lain dapat dengan mudah mereferensikan komponen ini pada Formulir, mengatur propertinya, menjalankan metode, kejadian, dll., tetapi di sisi lain, kekurangannya juga terlihat jelas . Ya, itu menyebabkan hilangnya enkapsulasi Formulir. Menurut pendapat saya, komponen-komponen yang ditempatkan pada Formulir ini, sejauh menyangkut niat pengguna, harus ada sebagai milik pribadi Formulir dan tidak boleh terlihat oleh kelas lain atau Formulir lain. Bahkan jika Anda perlu mengaksesnya, Anda harus mengaksesnya secara tidak langsung melalui serangkaian metode properti yang disediakan oleh Formulir.
Berikan contoh untuk memberikan pemahaman persepsi kepada semua orang:
Prosedur TForm1.Button1Click(Pengirim: TObject);
mulai
Form2.Edit1.Text := 'abc'; // <-- Saya tidak setuju dengan cara penulisan kalimat ini.
akhir;
Banyak orang mungkin tidak memikirkan konsep enkapsulasi saat menulis kode seperti itu, tetapi setelah membaca artikel ini, Anda tidak akan pernah melakukan hal seperti itu lagi (ubah cara Anda!). Menurut pendapat saya, TForm1 adalah TForm1, dan TForm2 adalah TForm2. Semuanya ada untuk mencapai fungsi spesifik tertentu, sehingga menyediakan beberapa antarmuka ke dunia luar (beberapa atribut, metode, dan peristiwa. Sebenarnya, peristiwa juga merupakan atribut. ) ke. mencapai fungsi yang dijanjikan. Adapun implementasi spesifik dari antarmuka ini, mereka harus dipertahankan sendiri. Tidak perlu atau ada cara bagi dunia luar untuk campur tangan. Ide ini sesuai dengan aplikasi praktis, yaitu pertanyaan apakah Form2.Edit1 perlu diakses langsung oleh From1. Saya pribadi lebih suka implementasi berikut:
//Berikut ini adalah bagian isi TForm1 di Unit1
prosedur TForm1.Button1Click(Pengirim: TObject);
mulai
TForm2(FAnotherForm).EditText := 'abc'; // <-- Implementasi ini mewujudkan gagasan enkapsulasi
akhir;
//Berikut ini adalah definisi TForm2 di Unit2
jenis
TForm2 = kelas(TForm)
Sunting1: TEdit;
pribadi
fungsi GetEditTeks: string;
prosedur SetEditTeks(Nilai const: string);
publik
properti EditText: string baca GetEditText tulis SetEditText;
// <-- Penggunaan yang saya rekomendasikan;
akhir;
…
fungsi TForm2.GetEditText: string;
mulai
hasil := Edit1.Teks;
akhir;
prosedur TForm2.SetEditText(Nilai const: string);
mulai
jika Nilai <> EditTeks lalu
Sunting1.Teks := Nilai;
akhir;
FAnotherForm di sini adalah milik pribadi TForm1, yang merupakan penunjuk ke instance TForm2 (penggunaan ini ditekankan di artikel pertama). Mengakses properti EditText dari TForm2 alih-alih mengakses langsung Edit1 secara sembarangan.Teks dari TForm2 mewujudkan sebuah gagasan, yaitu gagasan pembagian kerja dan kolaborasi, yaitu gagasan kemerdekaan, yaitu gagasan tentang enkapsulasi.
(Belum selesai, untuk dilanjutkan)
Lebih banyak artikel