Domeniul de vizibilitate

Delphi pentru profesioniști. Programarea orientată pe obiecte

Un compromis bun este important în descrierea unei noi clase. Pe de o parte, este necesar să se ascundă de celelalte metode și câmpuri care reprezintă structura internă a clasei (pentru aceasta, proprietățile au fost inventate). Detaliile minore la nivelul utilizatorului utilizatorului vor fi inutile și vor interfera doar cu integritatea percepției.







Pe de altă parte, în cazul în care este prea limitativ pentru cineva care va genera clase descendente, și nu îi oferă un set de instrumente suficiente și libertatea de manevră, și nu va utiliza clasa ta.

Zonele de vizibilitate definite de primele trei directive sunt următoarele.

  • Câmpurile, proprietățile și metodele din secțiunea publică nu au restricții privind vizibilitatea. Ele sunt disponibile din alte funcții și metode obiect, atât în ​​acest modul, cât și în toate celelalte obiecte care îl fac referire.
  • Câmpurile, proprietățile și metodele din secțiunea privată sunt disponibile numai în metodele de clasă și în funcțiile conținute în același modul ca și clasa descrisă. Această directivă vă permite să ascundeți complet detaliile implementării interne a clasei. Proprietățile și metodele din secțiunea privată pot fi modificate și acest lucru nu va afecta programele care funcționează cu obiecte din această clasă. Singura modalitate de a le adresa altora este rescrierea modulului nou creat (dacă, desigur, sursele sunt disponibile).
  • Câmpurile, proprietățile și metodele secțiunii protejate sunt de asemenea disponibile numai în cadrul modulului cu clasa descrisă. Dar - și acest lucru este important - sunt disponibile în clasele descendente ale acestei clase, inclusiv în alte module. Astfel de elemente sunt necesare în special pentru dezvoltatorii de componente noi - descendenți ai celor existenți. Lăsând libertatea de a moderniza clasa, ele ascund, totuși, detaliile realizării de la cei care folosesc doar obiecte din această clasă.






Să luăm în considerare un exemplu care ilustrează trei variante de domenii.

Listing 1.1. Un exemplu de stabilire a domeniilor metodei

prima unitate; | | unitate secundă;

TFirstObj = clasă TSecondObj = clasa (TFirstObj>

private | procedura Metoda4;

procedura Metoda; | | se încheie;







Articole similare

Trimiteți-le prietenilor: