Введение в технологию программирования. Ч.1. Среда объектно-ориентированного программирования Delphi. Коржов Е.Н - 12 стр.

UptoLike

Составители: 

12
Ɂɚɝɨɥɨɜɨɤ ɦɨɞɭɥɹ ɫɨɫɬɨɢɬ ɢɡ ɫɥɭɠɟɛɧɨɝɨ ɫɥɨɜɚ unit ɢ ɢɦɟɧɢ ɦɨɞɭ-
ɥɹ, ɤɨɬɨɪɨɟ ɨɛɹɡɚɬɟɥɶɧɨ ɞɨɥɠɧɨ ɫɨɜɩɚɞɚɬɶ ɫ ɢɦɟɧɟɦ ɮɚɣɥɚ. ȼ ɨɬɥɢɱɢɟ ɨɬ
ɡɚɝɨɥɨɜɤɚ ɩɪɨɝɪɚɦɦɵ, ɡɚɝɨɥɨɜɨɤ ɦɨɞɭɥɹ ɹɜɥɹɟɬɫɹ ɨɛɹɡɚɬɟɥɶɧɵɦ.
Ɋɚɡɞɟɥ ɢɧɬɟɪɮɟɣɫɚ ɫɨɞɟɪɠɢɬ ɨɩɢɫɚɧɢɟ ɤɨɧɫɬɚɧɬ, ɬɢɩɨɜ, ɩɟɪɟɦɟɧ-
ɧɵɯ, ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ, ɤɨɬɨɪɵɟ ɛɭɞɭɬ ɞɨɫɬɭɩɧɵ ɜ ɞɪɭɝɢɯ ɩɪɨɝɪɚɦɦɚɯ ɢ
ɦɨɞɭɥɹɯ. ɂɧɬɟɪɮɟɣɫɧɚɹ ɱɚɫɬɶ ɧɚɱɢɧɚɟɬɫɹ ɫ ɡɚɪɟɡɟɪɜɢɪɨɜɚɧɧɨɝɨ ɫɥɨɜɚ
interface ɢ ɜɫɟɝɞɚ ɞɨɥɠɧɚ ɫɥɟɞɨɜɚɬɶ ɫɪɚɡɭ ɡɚ ɡɚɝɨɥɨɜɤɨɦ. Ɋɚɡɞɟɥ ɢɧɬɟɪɮɟɣ-
ɫɚ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɨɛɴɹɜɥɟɧɢɟ uses, ɤɨɬɨɪɨɟ ɞɨɥɠɧɨ ɛɵɬɶ ɡɚɩɢɫɚɧɨ ɜ ɩɟɪ-
ɜɭɸ ɨɱɟɪɟɞɶ, ɞɨ ɜɫɟɯ ɞɪɭɝɢɯ ɨɛɴɹɜɥɟɧɢɣ. ȼ ɪɚɡɞɟɥɟ ɢɧɬɟɪɮɟɣɫɚ ɨɛɴɹɜɥɹ-
ɸɬɫɹ ɬɨɥɶɤɨ ɡɚɝɨɥɨɜɤɢ ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ. ɂɯ ɨɩɢɫɚɧɢɟ ɞɚɟɬɫɹ ɜ ɪɚɡɞɟɥɟ
ɪɟɚɥɢɡɚɰɢɢ.
Ɋɚɡɞɟɥ ɪɟɚɥɢɡɚɰɢɢ ɧɚɱɢɧɚɟɬɫɹ ɫ ɡɚɪɟɡɟɪɜɢɪɨɜɚɧɧɨɝɨ ɫɥɨɜɚ
implementation ɢ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɨɛɴɹɜɥɟɧɢɹ ɤɨɧɫɬɚɧɬ, ɩɟɪɟɦɟɧɧɵɯ, ɚ
ɬɚɤɠɟ ɨɩɢɫɚɧɢɹ ɬɢɩɨɜ, ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ, ɨɛɴɟɤɬɨɜ ɢɥɢ ɤɥɚɫɫɨɜ. ȼɫɟ ɷɬɢ
ɨɛɴɹɜɥɟɧɢɹ ɞɟɣɫɬɜɢɬɟɥɶɧɵ ɬɨɥɶɤɨ ɞɥɹ ɞɚɧɧɨɝɨ ɦɨɞɭɥɹ. Ʉɪɨɦɟ ɬɨɝɨ, ɜɪɚɡ-
ɞɟɥɟ implementation ɪɚɡɦɟɳɚɟɬɫɹ ɪɟɚɥɢɡɚɰɢɹ ɜɫɟɯ ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ,
ɡɚɝɨɥɨɜɤɢ ɤɨɬɨɪɵɯ ɨɛɴɹɜɥɟɧɵ ɜ ɪɚɡɞɟɥɟ ɢɧɬɟɪɮɟɣɫɚ. ȼɫɟ ɢɞɟɧɬɢɮɢɤɚɬɨɪɵ,
ɨɛɴɹɜɥɟɧɧɵɟ ɜ ɪɚɡɞɟɥɟ interface, ɞɨɫɬɭɩɧɵ ɬɚɤɠɟ ɜ ɪɚɡɞɟɥɟ ɪɟɚɥɢɡɚɰɢɢ.
Ɋɚɡɞɟɥ ɪɟɚɥɢɡɚɰɢɢ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɩɪɟɞɥɨɠɟɧɢɟ uses, ɤɨɬɨɪɨɟ
ɞɨɥɠɧɨ ɫɥɟɞɨɜɚɬɶ ɫɪɚɡɭ ɡɚ ɫɥɨɜɨɦ implementation, ɩɪɢɱɟɦ ɢɫɩɨɥɶɡɭɟɦɵɟ
ɦɨɞɭɥɢ ɥɭɱɲɟ ɭɤɚɡɵɜɚɬɶ ɢɦɟɧɧɨ ɜ ɪɚɡɞɟɥɟ ɪɟɚɥɢɡɚɰɢɢ.
Ɋɚɡɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɫɨɞɟɪɠɢɬ ɨɩɟɪɚɬɨɪɵ, ɜɵɩɨɥɧɹɟɦɵɟ ɬɨɥɶɤɨ
ɨɞɢɧ ɪɚɡ ɩɪɢ ɡɚɩɭɫɤɟ ɩɪɨɝɪɚɦɦɵ, ɜ ɤɨɬɨɪɨɣ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɚɧɧɵɣ ɦɨɞɭɥɶ.
Ɋɚɡɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɧɟɨɛɹɡɚɬɟɥɟɧ. ɇɚɱɚɥɨ ɛɥɨɤɚ ɭɤɚɡɵɜɚɟɬɫɹ ɡɚɪɟɡɟɪɜɢ-
ɪɨɜɚɧɧɵɦ ɫɥɨɜɨɦ initialization. ɂɧɢɰɢɚɥɢɡɚɰɢɨɧɧɵɟ ɪɚɡɞɟɥɵ ɦɨɞɭɥɟɣ ɜɵ-
ɩɨɥɧɹɸɬɫɹ ɜ ɬɨɦ ɩɨɪɹɞɤɟ, ɜ ɤɨɬɨɪɨɦ ɦɨɞɭɥɢ ɨɛɴɹɜɥɟɧɵ ɜ ɩɪɟɞɥɨɠɟɧɢɢ
uses.
Ɋɚɡɞɟɥ ɡɚɜɟɪɲɟɧɢɹ ɧɚɱɢɧɚɟɬɫɹ ɫ ɤɥɸɱɟɜɨɝɨ ɫɥɨɜɚ finalization ɢ
ɜɤɥɸɱɚɟɬɫɹ ɜ ɩɪɨɝɪɚɦɦɭ ɬɨɥɶɤɨ ɜ ɬɨɦ ɫɥɭɱɚɟ, ɟɫɥɢ ɦɨɞɭɥɶ ɫɨɞɟɪɠɢɬ ɪɚɡ-
ɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ. Ȼɥɨɤ ɡɚɜɟɪɲɟɧɢɹ ɫɨɞɟɪɠɢɬ ɨɩɟɪɚɬɨɪɵ, ɤɨɬɨɪɵɟ ɜɵ-
ɩɨɥɧɹɸɬɫɹ ɬɨɥɶɤɨ ɨɞɢɧ ɪɚɡ ɩɪɢ ɡɚɜɟɪɲɟɧɢɢ ɪɚɛɨɬɵ ɩɪɨɝɪɚɦɦɵ, ɢɫɩɨɥɶ-
ɡɭɸɳɟɣ ɞɚɧɧɵɣ ɦɨɞɭɥɶ. Ɋɚɡɞɟɥɵ ɡɚɜɟɪɲɟɧɢɹ ɜɵɩɨɥɧɹɸɬɫɹ ɜ ɩɨɪɹɞɤɟ, ɨɛ-
ɪɚɬɧɨɦ ɩɨɪɹɞɤɭ ɩɟɪɟɱɢɫɥɟɧɢɹ ɦɨɞɭɥɟɣ ɜ ɨɛɴɹɜɥɟɧɢɢ uses.
ɉɪɢ ɤɨɦɩɢɥɹɰɢɢ ɩɪɨɝɪɚɦɦɵ Delphi ɫɨɡɞɚɟɬ ɨɛɴɟɤɬɧɵɣ ɮɚɣɥ ɫ ɪɚɫɲɢ-
ɪɟɧɢɟɦ .dcu, ɫɨɞɟɪɠɚɳɢɣ ɜ ɫɟɛɟ ɪɟɡɭɥɶɬɚɬ ɩɟɪɟɜɨɞɚ ɬɟɤɫɬɚ ɤɨɞɚ ɩɪɨɝɪɚɦ-
ɦɵ ɜ ɦɚɲɢɧɧɵɟ ɤɨɞɵ ɫɨɞɟɪɠɢɦɨɝɨ ɮɚɣɥɨɜ ɫ ɪɚɫɲɢɪɟɧɢɟɦ .pas ɢ .dfm.
Ʉɨɦɩɨɧɨɜɳɢɤ ɢɥɢ ɪɟɞɚɤɬɨɪ ɫɜɹɡɟɣ ɩɪɟɨɛɪɚɡɭɟɬ ɫɨɜɨɤɭɩɧɨɫɬɶ ɨɛɴɟɤɬɧɵɯ
ɮɚɣɥɨɜ ɫ ɪɚɫɲɢɪɟɧɢɟɦ .dcu ɜ ɟɞɢɧɵɣ ɡɚɝɪɭɠɚɟɦɵɣ ɮɚɣɥ ɫ ɪɚɫɲɢɪɟɧɢɟɦ
.exe. ȼ ɮɚɣɥɚɯ, ɢɦɟɸɳɢɯ ɪɚɫɲɢɪɟɧɢɟ .~df, .~dp, .~pa, ɯɪɚɧɹɬɫɹ ɪɟɡɟɪɜɧɵɟ
ɤɨɩɢɢ ɮɚɣɥɨɜ ɫ ɨɛɪɚɡɨɦ ɮɨɪɦɵ, ɩɪɨɟɤɬɚ ɢ ɢɫɯɨɞɧɨɝɨ ɬɟɤɫɬɚ ɫɨɨɬɜɟɬɫɬɜɟɧ-
ɧɨ.
ȼ ɩɪɨɟɤɬɟ Delphi ɦɨɝɭɬ ɩɪɢɫɭɬɫɬɜɨɜɚɬɶ ɢ ɞɪɭɝɢɟ ɮɚɣɥɵ:
      Ɂɚɝɨɥɨɜɨɤ ɦɨɞɭɥɹ ɫɨɫɬɨɢɬ ɢɡ ɫɥɭɠɟɛɧɨɝɨ ɫɥɨɜɚ unit ɢ ɢɦɟɧɢ ɦɨɞɭ-
ɥɹ, ɤɨɬɨɪɨɟ ɨɛɹɡɚɬɟɥɶɧɨ ɞɨɥɠɧɨ ɫɨɜɩɚɞɚɬɶ ɫ ɢɦɟɧɟɦ ɮɚɣɥɚ. ȼ ɨɬɥɢɱɢɟ ɨɬ
ɡɚɝɨɥɨɜɤɚ ɩɪɨɝɪɚɦɦɵ, ɡɚɝɨɥɨɜɨɤ ɦɨɞɭɥɹ ɹɜɥɹɟɬɫɹ ɨɛɹɡɚɬɟɥɶɧɵɦ.
      Ɋɚɡɞɟɥ ɢɧɬɟɪɮɟɣɫɚ ɫɨɞɟɪɠɢɬ ɨɩɢɫɚɧɢɟ ɤɨɧɫɬɚɧɬ, ɬɢɩɨɜ, ɩɟɪɟɦɟɧ-
ɧɵɯ, ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ, ɤɨɬɨɪɵɟ ɛɭɞɭɬ ɞɨɫɬɭɩɧɵ ɜ ɞɪɭɝɢɯ ɩɪɨɝɪɚɦɦɚɯ ɢ
ɦɨɞɭɥɹɯ. ɂɧɬɟɪɮɟɣɫɧɚɹ ɱɚɫɬɶ ɧɚɱɢɧɚɟɬɫɹ ɫ ɡɚɪɟɡɟɪɜɢɪɨɜɚɧɧɨɝɨ ɫɥɨɜɚ
interface ɢ ɜɫɟɝɞɚ ɞɨɥɠɧɚ ɫɥɟɞɨɜɚɬɶ ɫɪɚɡɭ ɡɚ ɡɚɝɨɥɨɜɤɨɦ. Ɋɚɡɞɟɥ ɢɧɬɟɪɮɟɣ-
ɫɚ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɨɛɴɹɜɥɟɧɢɟ uses, ɤɨɬɨɪɨɟ ɞɨɥɠɧɨ ɛɵɬɶ ɡɚɩɢɫɚɧɨ ɜ ɩɟɪ-
ɜɭɸ ɨɱɟɪɟɞɶ, ɞɨ ɜɫɟɯ ɞɪɭɝɢɯ ɨɛɴɹɜɥɟɧɢɣ. ȼ ɪɚɡɞɟɥɟ ɢɧɬɟɪɮɟɣɫɚ ɨɛɴɹɜɥɹ-
ɸɬɫɹ ɬɨɥɶɤɨ ɡɚɝɨɥɨɜɤɢ ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ. ɂɯ ɨɩɢɫɚɧɢɟ ɞɚɟɬɫɹ ɜ ɪɚɡɞɟɥɟ
ɪɟɚɥɢɡɚɰɢɢ.
      Ɋɚɡɞɟɥ ɪɟɚɥɢɡɚɰɢɢ ɧɚɱɢɧɚɟɬɫɹ ɫ ɡɚɪɟɡɟɪɜɢɪɨɜɚɧɧɨɝɨ ɫɥɨɜɚ
implementation ɢ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɨɛɴɹɜɥɟɧɢɹ ɤɨɧɫɬɚɧɬ, ɩɟɪɟɦɟɧɧɵɯ, ɚ
ɬɚɤɠɟ ɨɩɢɫɚɧɢɹ ɬɢɩɨɜ, ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ, ɨɛɴɟɤɬɨɜ ɢɥɢ ɤɥɚɫɫɨɜ. ȼɫɟ ɷɬɢ
ɨɛɴɹɜɥɟɧɢɹ ɞɟɣɫɬɜɢɬɟɥɶɧɵ ɬɨɥɶɤɨ ɞɥɹ ɞɚɧɧɨɝɨ ɦɨɞɭɥɹ. Ʉɪɨɦɟ ɬɨɝɨ, ɜ ɪɚɡ-
ɞɟɥɟ implementation ɪɚɡɦɟɳɚɟɬɫɹ ɪɟɚɥɢɡɚɰɢɹ ɜɫɟɯ ɩɪɨɰɟɞɭɪ ɢ ɮɭɧɤɰɢɣ,
ɡɚɝɨɥɨɜɤɢ ɤɨɬɨɪɵɯ ɨɛɴɹɜɥɟɧɵ ɜ ɪɚɡɞɟɥɟ ɢɧɬɟɪɮɟɣɫɚ. ȼɫɟ ɢɞɟɧɬɢɮɢɤɚɬɨɪɵ,
ɨɛɴɹɜɥɟɧɧɵɟ ɜ ɪɚɡɞɟɥɟ interface, ɞɨɫɬɭɩɧɵ ɬɚɤɠɟ ɜ ɪɚɡɞɟɥɟ ɪɟɚɥɢɡɚɰɢɢ.
      Ɋɚɡɞɟɥ ɪɟɚɥɢɡɚɰɢɢ ɦɨɠɟɬ ɫɨɞɟɪɠɚɬɶ ɩɪɟɞɥɨɠɟɧɢɟ uses, ɤɨɬɨɪɨɟ
ɞɨɥɠɧɨ ɫɥɟɞɨɜɚɬɶ ɫɪɚɡɭ ɡɚ ɫɥɨɜɨɦ implementation, ɩɪɢɱɟɦ ɢɫɩɨɥɶɡɭɟɦɵɟ
ɦɨɞɭɥɢ ɥɭɱɲɟ ɭɤɚɡɵɜɚɬɶ ɢɦɟɧɧɨ ɜ ɪɚɡɞɟɥɟ ɪɟɚɥɢɡɚɰɢɢ.
      Ɋɚɡɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɫɨɞɟɪɠɢɬ ɨɩɟɪɚɬɨɪɵ, ɜɵɩɨɥɧɹɟɦɵɟ ɬɨɥɶɤɨ
ɨɞɢɧ ɪɚɡ ɩɪɢ ɡɚɩɭɫɤɟ ɩɪɨɝɪɚɦɦɵ, ɜ ɤɨɬɨɪɨɣ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɚɧɧɵɣ ɦɨɞɭɥɶ.
Ɋɚɡɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɧɟɨɛɹɡɚɬɟɥɟɧ. ɇɚɱɚɥɨ ɛɥɨɤɚ ɭɤɚɡɵɜɚɟɬɫɹ ɡɚɪɟɡɟɪɜɢ-
ɪɨɜɚɧɧɵɦ ɫɥɨɜɨɦ initialization. ɂɧɢɰɢɚɥɢɡɚɰɢɨɧɧɵɟ ɪɚɡɞɟɥɵ ɦɨɞɭɥɟɣ ɜɵ-
ɩɨɥɧɹɸɬɫɹ ɜ ɬɨɦ ɩɨɪɹɞɤɟ, ɜ ɤɨɬɨɪɨɦ ɦɨɞɭɥɢ ɨɛɴɹɜɥɟɧɵ ɜ ɩɪɟɞɥɨɠɟɧɢɢ
uses.
      Ɋɚɡɞɟɥ ɡɚɜɟɪɲɟɧɢɹ ɧɚɱɢɧɚɟɬɫɹ ɫ ɤɥɸɱɟɜɨɝɨ ɫɥɨɜɚ finalization ɢ
ɜɤɥɸɱɚɟɬɫɹ ɜ ɩɪɨɝɪɚɦɦɭ ɬɨɥɶɤɨ ɜ ɬɨɦ ɫɥɭɱɚɟ, ɟɫɥɢ ɦɨɞɭɥɶ ɫɨɞɟɪɠɢɬ ɪɚɡ-
ɞɟɥ ɢɧɢɰɢɚɥɢɡɚɰɢɢ. Ȼɥɨɤ ɡɚɜɟɪɲɟɧɢɹ ɫɨɞɟɪɠɢɬ ɨɩɟɪɚɬɨɪɵ, ɤɨɬɨɪɵɟ ɜɵ-
ɩɨɥɧɹɸɬɫɹ ɬɨɥɶɤɨ ɨɞɢɧ ɪɚɡ ɩɪɢ ɡɚɜɟɪɲɟɧɢɢ ɪɚɛɨɬɵ ɩɪɨɝɪɚɦɦɵ, ɢɫɩɨɥɶ-
ɡɭɸɳɟɣ ɞɚɧɧɵɣ ɦɨɞɭɥɶ. Ɋɚɡɞɟɥɵ ɡɚɜɟɪɲɟɧɢɹ ɜɵɩɨɥɧɹɸɬɫɹ ɜ ɩɨɪɹɞɤɟ, ɨɛ-
ɪɚɬɧɨɦ ɩɨɪɹɞɤɭ ɩɟɪɟɱɢɫɥɟɧɢɹ ɦɨɞɭɥɟɣ ɜ ɨɛɴɹɜɥɟɧɢɢ uses.
     ɉɪɢ ɤɨɦɩɢɥɹɰɢɢ ɩɪɨɝɪɚɦɦɵ Delphi ɫɨɡɞɚɟɬ ɨɛɴɟɤɬɧɵɣ ɮɚɣɥ ɫ ɪɚɫɲɢ-
ɪɟɧɢɟɦ .dcu, ɫɨɞɟɪɠɚɳɢɣ ɜ ɫɟɛɟ ɪɟɡɭɥɶɬɚɬ ɩɟɪɟɜɨɞɚ ɬɟɤɫɬɚ ɤɨɞɚ ɩɪɨɝɪɚɦ-
ɦɵ ɜ ɦɚɲɢɧɧɵɟ ɤɨɞɵ ɫɨɞɟɪɠɢɦɨɝɨ ɮɚɣɥɨɜ ɫ ɪɚɫɲɢɪɟɧɢɟɦ .pas ɢ .dfm.
Ʉɨɦɩɨɧɨɜɳɢɤ ɢɥɢ ɪɟɞɚɤɬɨɪ ɫɜɹɡɟɣ ɩɪɟɨɛɪɚɡɭɟɬ ɫɨɜɨɤɭɩɧɨɫɬɶ ɨɛɴɟɤɬɧɵɯ
ɮɚɣɥɨɜ ɫ ɪɚɫɲɢɪɟɧɢɟɦ .dcu ɜ ɟɞɢɧɵɣ ɡɚɝɪɭɠɚɟɦɵɣ ɮɚɣɥ ɫ ɪɚɫɲɢɪɟɧɢɟɦ
.exe. ȼ ɮɚɣɥɚɯ, ɢɦɟɸɳɢɯ ɪɚɫɲɢɪɟɧɢɟ .~df, .~dp, .~pa, ɯɪɚɧɹɬɫɹ ɪɟɡɟɪɜɧɵɟ
ɤɨɩɢɢ ɮɚɣɥɨɜ ɫ ɨɛɪɚɡɨɦ ɮɨɪɦɵ, ɩɪɨɟɤɬɚ ɢ ɢɫɯɨɞɧɨɝɨ ɬɟɤɫɬɚ ɫɨɨɬɜɟɬɫɬɜɟɧ-
ɧɨ.
      ȼ ɩɪɨɟɤɬɟ Delphi ɦɨɝɭɬ ɩɪɢɫɭɬɫɬɜɨɜɚɬɶ ɢ ɞɪɭɝɢɟ ɮɚɣɥɵ:

                                   12