Știu, prelegere, ierarhia obiect intui

Vom continua testarea facilitate daemon. introducerea în programul de mai sus înainte de prima dintre procedurile readln recomandă metode moștenite de obiect monstru.

Vasia.move (200, 100); Vasia.move (200, 200); Vasia. lovit;

Rezultatele programului de funcționare este dezamăgitoare: imaginea apare pe ecran nu este un demon, și monstru - simbolul @. Prin urmare, metoda de mutare se numește desen și ștergerea metodelor obiect strămoș. Da, și metoda de atac, numit de la lovit. judecând după mesajul de diagnosticare face parte, de asemenea, obiect monstru. Pentru a înțelege de ce se întâmplă acest lucru, ia în considerare compilatorul mecanismului de lucru.

Astfel, la compilare obiect tehnica de mișcare monstru pentru a plasa metodele de ștergere de apel și de a trage tranzițiile inserate declarații executabile în primul dintre aceste metode de obiect monstru. Prin apelarea metodei muta din orice descendent al monstru. în orice caz, vom intra în metodele de ștergere și trage obiect monstru. deoarece acestea sunt conectate rigid unul cu altul, înainte de program (Fig. 7.1).

Situația este similară cu metoda de atac. Dacă el este numit în mod direct pentru facilitatea de exemplu daemon. atunci totul este bine, dar cauza tehnica sa lovit. descrisă în obiectul părinte, nu poate, pentru că atunci când compilați lovit metoda de transfer metoda de control al obiectului atac monstru a fost inserat (fig. 7.1).

Acest mecanism se numește timpuriu obligatoriu. întrucât toate trimiterile la compilatorul rezolvă subprogramul la runtime. Este clar că utilizarea timpurie cu caracter obligatoriu, nu va fi în măsură să ofere posibilitatea de a apela în aceleași rutine că metoda a obiectului, apoi celălalt. Acest lucru se poate face numai în cazul în care link-urile vor fi rezolvate în etapa punerii în aplicare a programului în momentul apelului metodei. Un astfel de mecanism este în Pascal este: se numește legarii, și este realizat printr-un așa-numitele metode virtuale. Dar înainte de a ajunge să le studieze, este necesar să se ia în considerare compatibilitatea tipurilor de obiecte.

tipuri de obiecte compatibile

Pascal - limbajul puternic tastat. Operanzi sunt implicate într-o expresie, parametrii subrutina și argumentele lor, părțile stânga și dreapta ale operatorului de atribuire trebuie să respecte regulile de tipuri de potrivire. Pentru obiectele conceptului de compatibilitate extinsă: tipul derivat este compatibil cu tipul său părinte. Această compatibilitate extinsă are trei tipuri de forme:

  • între instanțe de obiecte;
  • între indicii la instanțe ale obiectelor;
  • între parametrii și argumentele subrutină.

În toate cele trei cazuri, compatibilitatea unui unilaterală: obiectul părinte poate fi atribuită o instanță de oricare dintre descendenții săi. dar nu și invers. Acest lucru se datorează faptului că toate câmpurile sunt completate cu atribuirea, precum și orice descendent are aceeași dimensiune ca strămoș sau mai mare.

De exemplu, dacă definiți o variabilă:

articole similare