Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка_и_анализ_требований_практика

.pdf
Скачиваний:
26
Добавлен:
04.06.2015
Размер:
5.31 Mб
Скачать

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

ɫɭɦɦɚ ɪɚɛɨɱɢɯ ɱɚɫɨɜ ɩɪɟɜɵɲɚɟɬ ɞɨɩɭɫɬɢɦɨɟ ɡɧɚɱɟɧɢɟ, ɧɟɞɨɫɬɭɩɧɚ, ɩɨɤɚ ɩɪɟɩɨɞɚɜɚɬɟɥɸ ɧɟ ɭɜɟɥɢɱɚɬ ɦɚɤɫɢɦɚɥɶɧɨɟ ɤɨɥɢɱɟɫɬɜɨ ɱɚɫɨɜ ɢɥɢ ɧɟ ɫɨɤɪɚɬɹɬ ɤɨɥɢɱɟɫɬɜɨ ɱɚɫɨɜ ɞɥɹ ɞɢɫɰɢɩɥɢɧɵ.

ɉɜɨɩɝɦɠɨɣɠ ɜɛɢɶ ɟɛɨɨɶɰ

1.ɑɬɨɛɵ ɫɝɟɧɟɪɢɪɨɜɚɬɶ ɢɫɯɨɞɧɵɣ ɤɨɞ ECO ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɩɨɫɬɪɨɟɧɧɨɣ ɦɨɞɟɥɶɸ, ɜɵɛɟɪɟɦ ɨɩɟɪɚɰɢɸ Regenerate ECO

source code ɢɡ ɤɨɧɫɨɥɶɧɨɝɨ ɦɟɧɸ ɨɤɧɚ Model View. Ɍɚɤɠɟ ɬɚɤɚɹ ɨɩɟɪɚɰɢɹ ɩɪɨɢɡɜɨɞɢɬɫɹ ɧɚɠɚɬɢɟɦ ɤɧɨɩɤɢ ɧɚɞ ɞɚɧɧɵɦ ɨɤɧɨɦ. Ƚɟɧɟɪɚɰɢɹ ɩɪɨɢɡɜɨɞɢɬɫɹ ɚɜɬɨɦɚɬɢɱɟɫɤɢ.

2.Ɍɚɤ ɤɚɤ ɦɵ ɫɨɡɞɚɥɢ ɧɨɜɵɣ ɤɥɚɫɫ ɢ ɞɨɛɚɜɢɥɢ ɧɨɜɵɟ ɩɨɥɹ ɜ ɭɠɟ ɫɭɳɟɫɬɜɭɸɳɢɣ, ɧɟɨɛɯɨɞɢɦɨ ɨɛɧɨɜɢɬɶ ɩɨɞɤɥɸɱɟɧɧɭɸ ɛɚɡɭ ɞɚɧɧɵɯ. Ⱦɥɹ ɷɬɨɝɨ ɩɟɪɟɣɞɟɦ ɧɚ ɡɚɤɥɚɞɤɭ ɧɚɫɬɪɨɣɤɢ ɨɛɴɟɤɬɧɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ projDeanOfficeEcoSpace. ɇɚɠɦɟɦ ɤɧɨɩɤɭ Generate Schema ɜ ɧɢɠɧɟɣ ɱɚɫ-

ɬɢ ɨɤɧɚ. ȼ ɬɟɤɭɳɟɣ ɛɚɡɟ ɞɚɧɧɵɯ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɫɮɨɪɦɢɪɭɸɬɫɹ ɬɚɛɥɢɰɵ, ɫɨɞɟɪɠɚɳɢɟ ɩɨɥɹ ɞɥɹ ɯɪɚ-

ɧɟɧɢɹ ɦɨɞɟɥɢ ɩɪɨɟɤɬɚ. ɉɪɢ ɷɬɨɦ ɜɫɟ ɢɦɟɸɳɢɟɫɹ ɞɚɧɧɵɟ ɜ ɛɚɡɟ ɭɞɚɥɹɸɬɫɹ.

Ɉɩɟɪɚɰɢɹ Evolve Schema ɩɨɡɜɨɥɹɟɬ ɫɨɯɪɚɧɢɬɶ ɫɭɳɟɫɬɜɭɸɳɢɟ ɞɚɧɧɵɟ ɢ ɞɨɩɨɥɧɢɬɶ ɛɚɡɭ ɫɨɡɞɚɧɧɵɦɢ ɷɥɟɦɟɧɬɚɦɢ ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɩɨɫɬɪɨɟɧɧɨɣ ɦɨɞɟɥɶɸ.

2)

Ɋɢɫ. 8.4. Ⱦɨɛɚɜɥɹɟɦ ɬɪɢɝɝɟɪɵ ɢ ɫɬɨɪɨɠɟɜɨɟ ɭɫɥɨɜɢɟ ɤ ɞɢɚɝɪɚɦɦɟ ɦɚɲɢɧ ɫɨɫɬɨɹɧɢɣ

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-141-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

ɇɩɟɣɯɣɥɛɱɣɺ ɪɩɦɷɢɩɝɛɭɠɦɷɬɥɩɞɩ ɣɨɭɠɫɯɠɤɬɛ

Ⱦɨɛɚɜɢɦ ɧɚ ɮɨɪɦɭ ɷɥɟɦɟɧɬɵ ɢɧɬɟɪɮɟɣɫɚ ɩɨɥɶɡɨɜɚɬɟɥɹ.

3)ɋɨɡɞɚɞɢɦ ɜɬɨɪɭɸ ɞɨɱɟɪɧɸɸ ɮɨɪɦɭ wfSubject (ɤɥɚɫɫ TSubject). Ɂɚɝɨɥɨɜɨɤ ɮɨɪɦɵ – Ⱦɢɫɰɢɩɥɢɧɵ.

4)ɉɟɪɟɣɞɟɦ ɤ ɜɤɥɚɞɤɟ Code. ȼ ɨɤɧɟ ɩɨɹɜɢɬɫɹ ɤɨɞ ɮɨɪɦɵ. ɉɟɪɟɞ ɤɨɦɚɧɞɨɣ Implementation ɨɛɴɹɜɢɦ ɩɟɪɟɦɟɧɧɭɸ, ɨɬɜɟɬɫɬɜɟɧɧɭɸ ɡɚ ɫɨɡɞɚɧɢɟ ɞɨɱɟɪɧɟɝɨ ɨɤɧɚ Ⱦɢɫɰɢɩɥɢɧɵ:

var

callSubj: TSubject;

3. ɉɟɪɟɣɞɟɦ ɤ Ƚɥɚɜɧɨɣ ɮɨɪɦɟ. ɑɬɨɛɵ ɜ Ƚɥɚɜɧɨɣ ɮɨɪɦɟ ɫɨɡɞɚɬɶ ɞɨ-

ɱɟɪɧɸɸ, ɩɨɞɤɥɸɱɢɦ ɤ ɧɟɣ ɮɨɪɦɭ wfSubject ɤɨɦɚɧɞɨɣ File > Use Unit. ȼ ɩɨɹɜɢɜɲɟɦɫɹ ɨɤɧɟ Use Unit ɜɵɛɟɪɟɦ ɮɨɪɦɭ wfSubject.

4.ȼ ɝɥɚɜɧɨɦ ɦɟɧɸ Ƚɥɚɜɧɨɣ ɮɨɪɦɵ ɞɨɛɚɜɢɦ ɩɨɞɩɭɧɤɬ Ⱦɢɫɰɢɩɥɢɧɵ

ɜɩɭɧɤɬɟ ɉɨɞɫɢɫɬɟɦɵ. ɇɚ ɫɨɛɵɬɢɟ ɜɵɛɨɪɚ ɩɭɧɤɬɚ ɦɟɧɸ Ⱦɢɫɰɢɩɥɢɧɵ ɩɪɨɩɢɲɟɦ ɫɥɟɞɭɸɳɢɟ ɨɩɟɪɚɰɢɢ:

callSubj := TSubject.Create(EcoSpace); callSubj.MdiParent := self; callSubj.Show;

5.ȼɟɪɧɟɦɫɹ ɤ ɮɨɪɦɟ Ⱦɢɫɰɢɩɥɢɧɵ. Ɋɚɡɦɟɫɬɢɦ ɧɚ ɧɟɣ ɞɜɟ ɬɚɛɥɢɰɵ:

dgLecturer ɢ dgSubject (ɷɤɡɟɦɩɥɹɪɵ ɤɥɚɫɫɚ DataGrid) ɞɥɹ ɩɪɟɞɫɬɚɜɥɟɧɢɹ ɷɤɡɟɦɩɥɹɪɨɜ ɤɥɚɫɫɨɜ ɉɪɟɩɨɞɚɜɚɬɟɥɶ ɢ Ⱦɢɫɰɢɩɥɢɧɚ. Ɂɚɩɨɥɧɢɦ ɜ ɬɚɛɥɢɰɚɯ ɫɜɨɣɫɬɜɨ CaptionText (ɧɚɡɜɚɧɢɟ ɡɚɝɨɥɨɜɤɚ).

Ɋɢɫ. 8.5. ɇɚɫɬɪɨɣɤɚ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɨɝɨ ɢɧɬɟɪɮɟɣɫɚ

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-142-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

6. Ⱦɨɛɚɜɢɦ ɞɜɟ ɤɧɨɩɤɢ ɞɥɹ ɪɚɛɨɬɵ ɫ ɬɚɛɥɢɰɟɣ Ⱦɢɫɰɢɩɥɢɧɵ (ɞɨɛɚɜɥɟɧɢɟ, ɭɞɚɥɟɧɢɟ ɨɛɴɟɤɬɨɜ) ɢ ɬɪɟɬɶɸ ɤɧɨɩɤɭ ɞɥɹ ɨɛɧɨɜɥɟɧɢɹ ɛɚɡɵ ɞɚɧɧɵɯ

(ɪɢɫ. 8.5).

Ɍɝɺɢɶɝɛɨɣɠ ɣɨɭɠɫɯɠɤɬɛ ɬ ɧɩɟɠɦɷɹ

1.ɋɮɨɪɦɢɪɭɟɦ ɬɪɢ ɞɟɫɤɪɢɩɬɨɪɚ ȿɋɈ: ehLecturer, ehSubject (ɷɤɡɟɦɩɥɹɪɵ ɤɥɚɫɫɚ ExpressionHandle) ɞɥɹ ɨɪɝɚɧɢɡɚɰɢɢ ɞɨɫɬɭɩɚ ɤ ɨɛɴɟɤɬɚɦ ɦɨɞɟɥɢ

ɢɩɪɨɫɬɪɚɧɫɬɜɚ ȿɋɈ ɜɨ ɜɪɟɦɹ ɪɚɛɨɬɵ ɩɪɨɝɪɚɦɦɵ ɢ cmhLecturer (ɷɤɡɟɦɩɥɹɪ ɤɥɚɫɫɚ CurrensyManagerHandle), ɤɨɬɨɪɵɣ ɛɭɞɟɬ ɫɥɭɠɢɬɶ ɞɥɹ ɭɤɚɡɚɧɢɹ ɧɚ ɬɟɤɭɳɢɣ ɨɛɴɟɤɬ ɬɚɛɥɢɰɵ ɉɪɟɩɨɞɚɜɚɬɟɥɢ.

2.ɇɚɫɬɪɨɢɦ ɬɚɛɥɢɰɭ Ⱦɢɫɰɢɩɥɢɧɵ ɬɚɤ, ɱɬɨɛɵ ɨɧɚ ɨɬɪɚɠɚɥɚ ɫɩɢɫɨɤ ɞɢɫɰɢɩɥɢɧ, ɩɪɢɧɚɞɥɟɠɚɳɢɯ ɜɵɛɪɚɧɧɨɦɭ ɩɪɟɩɨɞɚɜɚɬɟɥɸ ɜ ɩɟɪɜɨɣ ɬɚɛɥɢɰɟ. ɋɜɹɠɟɦ ɞɟɫɤɪɢɩɬɨɪ cmhLecturer ɫ ɬɚɛɥɢɰɟɣ dgLecturer ɱɟɪɟɡ ɫɜɨɣɫɬɜɨ BindingContext. Ɍɟɩɟɪɶ ɨɧ ɨɬɫɥɟɠɢɜɚɟɬ ɜɵɞɟɥɟɧɧɭɸ ɫɬɪɨɤɭ ɷɬɨɣ ɬɚɛɥɢɰɵ.

3.ɇɚɫɬɪɨɢɦ ɞɟɫɤɪɢɩɬɨɪ cmhLecturer ɧɚ ɫɜɹɡɶ ɫ ɪɨɞɢɬɟɥɶɫɤɢɦ ɨɛɴɟɤɬɨɦ. Ɂɚɞɚɞɢɦ ɫɫɵɥɤɭ ɧɚ ɨɛɴɟɤɬ ehLecturer ɜ ɫɜɨɣɫɬɜɟ RootHandle, ɨɩɪɟɞɟɥɹɸɳɟɦ ɤɨɪɧɟɜɨɣ ɢɞɟɧɬɢɮɢɤɚɬɨɪ ȿɋɈ.

4.ȼ ɫɜɨɣɫɬɜɟ RootHandle ɞɟɫɤɪɢɩɬɨɪɚ ehSubject ɜɵɛɟɪɟɦ ɡɧɚɱɟɧɢɟ cmhLecturer. Ɍɚɤ ɡɚɞɚɸɬ ɦɟɫɬɨ ɞɚɧɧɨɝɨ ɢɞɟɧɬɢɮɢɤɚɬɨɪɚ ɜ ɰɟɩɨɱɤɟ ɞɨɫɬɭɩɚ

ɤɨɛɴɟɤɬɧɨɦɭ ɩɪɨɫɬɪɚɧɫɬɜɭ ȿɋɈ.

5.ȼ ɤɚɱɟɫɬɜɟ ɜɵɪɚɠɟɧɢɹ OCL ɜɜɟɞɟɦ ɜ ɫɜɨɣɫɬɜɨ Expression ɨɛɴɟɤɬɚ ehSubject ɫɬɪɨɤɭ self.roleSubjects. Ɂɞɟɫɶ roleSubjects – ɷɬɨ ɢɦɹ ɪɨɥɢ ɤɥɚɫɫɚ

Subject ɜ ɟɝɨ ɚɫɫɨɰɢɚɬɢɜɧɨɣ ɫɜɹɡɢ ɫ ɤɥɚɫɫɨɦ ɉɪɟɩɨɞɚɜɚɬɟɥɶ. ɗɬɨ ɜɵɪɚɠɟɧɢɟ ɨɩɪɟɞɟɥɹɟɬ ɫɩɢɫɨɤ ɞɢɫɰɢɩɥɢɧ, ɩɪɟɞɥɨɠɟɧɧɵɯ ɢ ɧɚɡɧɚɱɟɧɧɵɯ ɩɪɟɩɨɞɚɜɚɬɟɥɸ, ɤɨɬɨɪɵɣ ɜɵɛɪɚɧ ɜ ɬɚɛɥɢɰɟ ɉɪɟɩɨɞɚɜɚɬɟɥɢ.

6.ɋɜɹɠɟɦ ɬɚɛɥɢɰɭ ɉɪɟɩɨɞɚɜɚɬɟɥɢ ɫ ɞɟɫɤɪɢɩɬɨɪɨɦ ehLecturer ɱɟɪɟɡ

ɟɟɫɜɨɣɫɬɜɨ DataSource, ɚ ɬɚɛɥɢɰɭ Ⱦɢɫɰɢɩɥɢɧɵ – ɫ ɞɟɫɤɪɢɩɬɨɪɨɦ ehSubject. Ɍɟɩɟɪɶ ɬɚɛɥɢɰɵ ɨɬɨɛɪɚɠɚɸɬ ɩɨɥɹ ɤɥɚɫɫɨɜ ɉɪɟɩɨɞɚɜɚɬɟɥɶ ɢ Ⱦɢɫɰɢɩɥɢɧɚ. Ʉɪɨɦɟ ɷɬɨɝɨ, ɜ ɬɚɛɥɢɰɟ Ⱦɢɫɰɢɩɥɢɧɵ ɩɨɹɜɢɥɨɫɶ ɩɨɥɟ SubjectState, ɤɨɬɨɪɨɟ ɛɭɞɟɬ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɨɬɨɛɪɚɠɚɬɶ ɬɟɤɭɳɟɟ ɫɨɫɬɨɹɧɢɟ ɞɢɫɰɢɩɥɢɧ.

7.ɇɚɫɬɪɨɢɦ ɫɬɢɥɢ ɬɚɛɥɢɰ. ȼɨɫɩɨɥɶɡɭɟɦɫɹ ɫɜɨɣɫɬɜɨɦ ɬɚɛɥɢɰɵ TableStyles. ɉɪɢɫɜɨɢɦ ɩɨɥɹɦ ɬɚɛɥɢɰ ɪɭɫɫɤɨɹɡɵɱɧɵɟ ɧɚɡɜɚɧɢɹ.

8.ɇɚɫɬɪɨɢɦ ɮɭɧɤɰɢɨɧɢɪɨɜɚɧɢɟ ɤɧɨɩɨɤ. ȼɵɞɟɥɢɦ ɜ ɨɤɧɟ ɉɪɨɟɤɬɢɪɨɜɳɢɤɚ ɤɧɨɩɤɭ Button1. ȼ ɫɜɨɣɫɬɜɟ EcoListAction ɜɵɛɟɪɟɦ ɡɧɚɱɟɧɢɟ Add. ȼ ɫɜɨɣɫɬɜɟ RootHandle ɜɵɛɟɪɟɦ ɩɨɞɯɨɞɹɳɢɣ ɩɨɫɬɚɜɳɢɤ ɨɛɴɟɤɬɨɜ ȿɋɈ – ɢɞɟɧɬɢɮɢɤɚɬɨɪ ehSubject. ɋɜɹɠɟɦ ɪɟɡɭɥɶɬɚɬ ɞɟɣɫɬɜɢɹ ɤɧɨɩɤɢ (ɫɨɡɞɚɧɧɵɣ ɷɤɡɟɦɩɥɹɪ ɤɥɚɫɫɚ Ⱦɢɫɰɢɩɥɢɧɚ) ɫ ɜɢɡɭɚɥɶɧɵɦ ɷɥɟɦɟɧɬɨɦ, ɨɬɨɛɪɚɠɚɸɳɢɦ ɷɬɨɬ ɷɤɡɟɦɩɥɹɪ, ɜ ɧɚɲɟɦ ɫɥɭɱɚɟ – ɫ ɬɚɛɥɢɰɟɣ dgSubject. Ⱦɥɹ ɷɬɨɝɨ ɜ ɫɜɨɣɫɬɜɟ BindingContext ɜɵɛɟɪɟɦ ɢɦɹ dgSubject. Ⱥɧɚɥɨɝɢɱɧɨ ɧɚɫɬɪɨɢɦ ɤɧɨɩɤɭ Button2 ɧɚ ɨɩɟɪɚɰɢɸ ɭɞɚɥɟɧɢɹ. ȼɵɛɟɪɟɦ ɤɨɦɩɨɧɟɧɬ EcoListActions, ɜ ɟɝɨ ɫɜɨɣɫɬɜɟ CaptionAdd ɜɜɟɞɟɦ ɫɥɨɜɨ Ⱦɨɛɚɜɢɬɶ, ɚ ɜ ɫɜɨɣɫɬɜɟ CaptionDelete – ɍɞɚɥɢɬɶ.

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-143-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

Ʉɧɨɩɤɚ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɩɨɥɭɱɢɥɚ ɧɚɡɜɚɧɢɟ Ⱦɨɛɚɜɢɬɶ ɢ ɍɞɚɥɢɬɶ. ȼ ɫɜɨɣɫɬɜɟ Text ɤɧɨɩɤɢ Button3 ɜɜɟɞɟɦ ɡɧɚɱɟɧɢɟ ɋɨɯɪɚɧɢɬɶ (ɫɦ. ɪɢɫ. 8.6).

Ɋɢɫ. 8.6. ɋɜɹɡɵɜɚɧɢɟ ɢɧɬɟɪɮɟɣɫɚ ɫ ɦɨɞɟɥɶɸ

9. Ɂɚɩɭɫɬɢɦ ɩɪɢɥɨɠɟɧɢɟ. Ⱦɨɛɚɜɢɦ ɧɟɫɤɨɥɶɤɨ ɨɛɴɟɤɬɨɜ ɜ ɬɚɛɥɢɰɭ Ⱦɢɫɰɢɩɥɢɧɵ ɞɥɹ ɜɵɛɪɚɧɧɨɝɨ ɩɪɟɩɨɞɚɜɚɬɟɥɹ. ȼ ɩɨɥɟ ɋɨɫɬɨɹɧɢɟ ɬɚɛɥɢɰɵ Ⱦɢɫɰɢɩɥɢɧɵ ɜɫɟ ɨɛɴɟɤɬɵ ɢɦɟɸɬ ɨɞɢɧɚɤɨɜɨɟ ɡɧɚɱɟɧɢɟ ChosenLecturer. ɇɚ ɞɚɧɧɵɣ ɦɨɦɟɧɬ ɷɬɨ ɫɨɫɬɨɹɧɢɟ ɧɟɢɡɦɟɧɹɟɦɨ. ɑɬɨɛɵ ɢɦɟɬɶ ɜɨɡɦɨɠɧɨɫɬɶ ɢɡɦɟɧɹɬɶ ɫɨɫɬɨɹɧɢɹ, ɩɪɨɢɡɜɟɞɟɦ ɫɥɟɞɭɸɳɭɸ ɦɨɞɢɮɢɤɚɰɢɸ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɨɝɨ ɢɧɬɟɪɮɟɣɫɚ.

Ɋɫɣɧɠɨɠɨɣɠ ɛɝɭɩɯɩɫɧ

Ⱥɜɬɨɮɨɪɦɚ ȿɋɈ ɩɪɟɞɧɚɡɧɚɱɟɧɚ ɞɥɹ ɦɨɞɢɮɢɤɚɰɢɢ ɜ ɨɬɞɟɥɶɧɨɦ ɨɤɧɟ ɨɛɴɟɤɬɨɜ ȿɋɈ, ɩɪɟɞɫɬɚɜɥɟɧɧɵɯ ɜ ɬɚɛɥɢɰɚɯ. Ⱦɥɹ ɜɵɡɨɜɚ ɚɜɬɨɮɨɪɦɵ ɧɚɞɨ ɡɚɞɚɬɶ ɜ ɫɜɨɣɫɬɜɟ ɬɚɛɥɢɰɵ EcoAutoForm ɡɧɚɱɟɧɢɟ True. ȿɫɥɢ ɡɚɩɭɫɬɢɬɶ ɩɪɨɝɪɚɦɦɭ ɢ ɞɜɚɠɞɵ ɳɟɥɤɧɭɬɶ ɦɵɲɶɸ ɧɚ ɩɪɨɢɡɜɨɥɶɧɨɣ ɫɬɪɨɤɟ ɬɚɛɥɢɰɵ, ɨɬɤɪɨɟɬɫɹ ɞɢɚɥɨɝɨɜɨɟ ɨɤɧɨ, ɫɨɞɟɪɠɚɳɟɟ ɬɟɤɫɬɨɜɵɟ ɩɨɥɹ, ɤɨɬɨɪɵɟ ɫɨɨɬɜɟɬɫɬɜɭɸɬ

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-144-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

ɫɬɨɥɛɰɚɦ ɬɚɛɥɢɰɵ (ɚɬɪɢɛɭɬɚɦ ɨɛɴɟɤɬɚ ȿɋɈ). ȼ ɷɬɨɦ ɨɤɧɟ ɨɬɨɛɪɚɠɚɟɬɫɹ ɫɨɞɟɪɠɢɦɨɟ ɩɨɥɟɣ ɫɬɪɨɤɢ, ɧɚ ɤɨɬɨɪɨɣ ɛɵɥ ɜɵɩɨɥɧɟɧ ɳɟɥɱɨɤ.

Ɋɢɫ. 8.7. Ɋɚɛɨɬɚ ɫ ɬɚɛɥɢɰɟɣ ɜ ɪɟɠɢɦɟ ɚɜɬɨɮɨɪɦɵ

Ⱦɥɹ ɨɞɧɨɣ ɬɚɛɥɢɰɵ ɦɨɠɧɨ ɨɬɤɪɵɬɶ ɧɟɫɤɨɥɶɤɨ ɨɤɨɧ ɚɜɬɨɮɨɪɦɵ ɨɞɧɨɜɪɟɦɟɧɧɨ ɢ ɪɟɞɚɤɬɢɪɨɜɚɬɶ ɡɧɚɱɟɧɢɹ ɪɚɡɧɵɯ ɨɛɴɟɤɬɨɜ. ɉɪɢ ɷɬɨɦ ɦɨɞɢɮɢɰɢɪɨɜɚɧɧɵɟ ɜɟɥɢɱɢɧɵ ɤɨɪɪɟɤɬɧɨ ɨɬɨɛɪɚɠɚɸɬɫɹ ɜ ɬɚɛɥɢɰɟ ɢ ɮɢɤɫɢɪɭɸɬɫɹ ɜ ɨɛɴɟɤɬɧɨɦ ɩɪɨɫɬɪɚɧɫɬɜɟ. Ⱦɚɧɧɚɹ ɜɨɡɦɨɠɧɨɫɬɶ, ɤɚɤ ɛɭɞɟɬ ɩɨɤɚɡɚɧɨ ɞɚɥɟɟ, ɨɫɨɛɨ ɩɨɥɟɡɧɚ ɜ ɫɥɭɱɚɹɯ, ɤɨɝɞɚ ɦɟɠɞɭ ɨɛɴɟɤɬɚɦɢ ɬɚɛɥɢɰɵ ɭɫɬɚɧɨɜɥɟɧɵ ɞɨɩɨɥɧɢɬɟɥɶɧɵɟ ɫɜɹɡɢ.

5)Ɍɚɛɥɢɰɭ Ⱦɢɫɰɢɩɥɢɧɵ ɧɚɫɬɪɨɢɦ ɧɚ ɪɚɛɨɬɭ ɜ ɪɟɠɢɦɟ ɚɜɬɨɮɨɪɦɵ. Ⱦɥɹ ɷɬɨɝɨ ɜ ɫɜɨɣɫɬɜɟ EcoAutoForm ɡɚɞɚɞɢɦ ɡɧɚɱɟɧɢɟ True.

6)Ɂɚɩɭɫɬɢɦ ɩɪɢɥɨɠɟɧɢɟ. ȿɫɥɢ ɳɟɥɤɧɭɬɶ ɜ ɧɚɱɚɥɟ ɩɪɨɢɡɜɨɥɶɧɨɣ ɫɬɪɨɤɢ ɬɚɛɥɢɰɵ, ɯɪɚɧɹɳɟɣ ɫɩɢɫɨɤ ɞɢɫɰɢɩɥɢɧ, ɨɬɤɪɨɟɬɫɹ ɚɜɬɨɮɨɪɦɚ ɞɥɹ ɟɟ ɪɟɞɚɤɬɢɪɨɜɚɧɢɹ. ȼ ɧɟɣ ɧɚ ɡɚɤɥɚɞɤɟ Methods ɩɨɤɚɡɚɧɵ ɜɨɡɦɨɠɧɵɟ ɩɟɪɟɯɨɞɵ ɦɟɠɞɭ ɫɨɫɬɨɹɧɢɹɦɢ, ɩɪɢɱɟɦ ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɶɸ ɩɟɪɟɯɨɞɨɜ:

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-145-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

ɜ ɫɥɟɞɭɸɳɟɟ ɫɨɫɬɨɹɧɢɟ ɧɟɥɶɡɹ ɩɟɪɟɣɬɢ, ɧɟ ɩɨɛɵɜɚɜ ɜ ɩɪɟɞɵɞɭɳɟɦ. ȿɫɥɢ ɜ ɚɜɬɨɮɨɪɦɟ ɧɚɠɚɬɶ ɤɧɨɩɤɭ Choose (ɩɨɞɩɢɫɶ ɤɧɨɩɤɢ ɫɨɜɩɚɞɚɟɬ ɫ ɢɦɟɧɟɦ ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɝɨ ɬɪɢɝɝɟɪɚ), ɫɩɢɫɨɤ ɞɨɫɬɭɩɧɵɯ ɩɟɪɟɯɨɞɨɜ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɢɡɦɟɧɹɟɬɫɹ. ɋɨɨɬɜɟɬɫɬɜɭɸɳɢɟ ɢɡɦɟɧɟɧɢɹ ɨɬɨɛɪɚɡɹɬɫɹ ɢ ɜ ɤɨɥɨɧɤɟ ɋɨɫɬɨɹɧɢɟ ɬɚɛɥɢɰɵ Ⱦɢɫɰɢɩɥɢɧɵ. ɉɪɢɱɟɦ, ɩɟɪɟɯɨɞ ɜ ɫɨɫɬɨɹɧɢɟ ɇɚɡɧɚɱɢɬɶ ɞɢɫɰɢɩɥɢɧɭ ɨɝɪɚɧɢɱɟɧ ɭɫɥɨɜɢɟɦ: ɤɨɥɢɱɟɫɬɜɨ ɪɚɛɨɱɢɯ ɱɚɫɨɜ ɩɪɟɩɨɞɚɜɚɬɟɥɹ, ɤɨɬɨɪɨɝɨ ɫɨɛɢɪɚɸɬɫɹ ɧɚɡɧɚɱɢɬɶ ɧɚ ɜɟɞɟɧɢɟ ɜɵɛɪɚɧɧɨɣ ɞɢɫɰɢɩɥɢɧɵ, ɜ ɫɭɦɦɟ ɫ ɤɨɥɢɱɟɫɬɜɨɦ ɱɚɫɨɜ ɧɚɡɧɚɱɚɟɦɨɣ ɞɢɫɰɢɩɥɢɧɵ ɞɨɥɠɧɨ ɛɵɬɶ ɦɟɧɶɲɟ ɢɥɢ ɪɚɜɧɨ ɦɚɤɫɢɦɚɥɶɧɨɦɭ ɤɨɥɢɱɟɫɬɜɭ ɪɚɛɨɱɢɯ ɱɚɫɨɜ ɞɥɹ ɩɪɟɩɨɞɚɜɚɬɟɥɹ (ɫɦ. ɪɢɫ. 8.7).

ɋɛɬɳɣɫɠɨɣɠ ɪɩɦɷɢɩɝɛɭɠɦɷɬɥɩɞɩ ɣɨɭɠɫɯɠɤɬɛ

Ʉɨɦɚɧɞɵ-ɬɪɢɝɝɟɪɵ ɞɥɹ ɭɞɨɛɫɬɜɚ ɦɨɠɧɨ ɩɪɢɜɹɡɚɬɶ ɤ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɢɦ ɷɥɟɦɟɧɬɚɦ ɭɩɪɚɜɥɟɧɢɹ. ɋɨɡɞɚɞɢɦ ɜ ɬɟɤɭɳɟɦ ɩɪɨɟɤɬɟ ɤɨɧɬɟɤɫɬɧɨɟ ɦɟɧɸ ɫ ɩɨɦɨɳɶɸ ɤɨɦɩɨɧɟɧɬɚ ContextMenu ɢɡ ɤɚɬɟɝɨɪɢɢ Components. ɉɭɫɬɶ ɜ ɧɟɦ ɛɭɞɟɬ ɬɪɢ ɩɭɧɤɬɚ: ȼɵɛɪɚɬɶ, ɇɚɡɧɚɱɢɬɶ ɢ Ɉɬɤɥɨɧɢɬɶ. ɂɯ ɧɟɨɛɯɨɞɢɦɨ ɫɜɹɡɚɬɶ ɫ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɦɢ ɬɪɢɝɝɟɪɚɦɢ.

1.Ⱦɨɛɚɜɢɦ ɧɚ ɮɨɪɦɭ ɤɨɦɩɨɧɟɧɬ ContextMenu, ɞɚɞɢɦ ɟɦɭ ɢɦɹ cmSubject.

2.ȼ ɫɜɨɣɫɬɜɟ ɦɟɧɸ RootHandle ɡɚɞɚɟɬɫɹ ɤɨɪɧɟɜɨɣ ɢɞɟɧɬɢɮɢɤɚɬɨɪ eh-

Subject.

3.Ɉɛɴɟɤɬ ɭɩɪɚɜɥɟɧɢɹ (ɬɚɛɥɢɰɚ Ⱦɢɫɰɢɩɥɢɧɵ), ɞɥɹ ɤɨɬɨɪɨɝɨ ɜɵɡɵɜɚɟɬɫɹ ɞɚɧɧɨɟ ɦɟɧɸ, ɜɵɛɢɪɚɟɬɫɹ ɜ ɫɜɨɣɫɬɜɟ BindingContext.

4.ȼ ɫɜɨɣɫɬɜɟ EcoListAction ɜɵɛɢɪɚɟɬɫɹ ɬɢɩ ɞɟɣɫɬɜɢɹ ȿɋɈ, ɜɵɩɨɥɧɹɟɦɨɝɨ ɩɪɢ ɜɵɛɨɪɟ ɞɚɧɧɨɝɨ ɩɭɧɤɬɚ. ȼɜɟɞɟɦ ɡɧɚɱɟɧɢɟ ExecuteAction (ɢɫɩɨɥɧɹɟɦɨɟ ɜɵɪɚɠɟɧɢɟ OCL).

5.ɋɚɦɨ ɜɵɪɚɠɟɧɢɟ OCL ɫɥɟɞɭɟɬ ɜɜɟɫɬɢ ɜ ɫɜɨɣɫɬɜɨ ActionExpression. ɗɬɨ ɜɵɪɚɠɟɧɢɟ ɮɨɪɦɢɪɭɟɬɫɹ ɫ ɩɨɦɨɳɶɸ ɪɚɡɞɟɥɚ Triggers ɜ ɪɟɞɚɤɬɨɪɟ ɜɵɪɚɠɟɧɢɣ OCL. Ɍɚɤ, ɞɥɹ ɩɭɧɤɬɚ ȼɵɛɪɚɬɶ ɞɢɫɰɢɩɥɢɧɭ ɷɬɨ ɜɵɪɚɠɟɧɢɟ ɡɚɩɢɫɵɜɚɟɬɫɹ ɤɚɤ ɫɬɪɨɤɚ self.Choose.

6.ȼ ɫɜɨɣɫɬɜɟ EnabledOCL ɫ ɩɨɦɨɳɶɸ ɷɬɨɝɨ ɠɟ ɪɟɞɚɤɬɨɪɚ ɮɨɪɦɢɪɭɟɬɫɹ ɜɵɪɚɠɟɧɢɟ OCL – ɬɪɢɝɝɟɪɧɵɣ ɡɚɩɪɨɫ, ɤɨɬɨɪɵɣ ɨɩɪɟɞɟɥɹɟɬ, ɞɨɫɬɭɩɟɧ ɥɢ ɩɨɥɶɡɨɜɚɬɟɥɸ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɣ ɷɥɟɦɟɧɬ ɭɩɪɚɜɥɟɧɢɹ (ɜ ɧɚɲɟɦ ɫɥɭɱɚɟ – ɩɭɧɤɬ ɦɟɧɸ). ȿɫɥɢ ɬɪɢɝɝɟɪ ɧɟɞɨɫɬɭɩɟɧ, ɬɨ ɢ ɩɭɧɤɬ ɦɟɧɸ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɛɥɨɤɢɪɭɟɬɫɹ. Ɂɚɩɪɨɫ ɜɵɛɢɪɚɟɬɫɹ ɜ ɪɚɡɞɟɥɟ ɪɟɞɚɤɬɨɪɚ Trigger queries. ɇɚɩɪɢɦɟɪ, ɞɥɹ ɩɭɧɤɬɚ ɦɟɧɸ ɇɚɡɧɚɱɢɬɶ ɨɧ ɡɚɩɢɫɵɜɚɟɬɫɹ ɫɬɪɨɤɨɣ self.Appoint (ɪɢɫ. 8.8).

7.ȼɵɞɟɥɢɦ ɬɚɛɥɢɰɭ dgSubject. ȼ ɟɟ ɫɜɨɣɫɬɜɟ ContextMenu ɜɵɛɟɪɟɦ ɫɫɵɥɤɭ ɧɚ ɧɚɫɬɪɨɟɧɧɵɣ ɤɨɦɩɨɧɟɧɬ cmSubject. ɉɪɢɜɹɡɤɚ ɢ ɧɚɫɬɪɨɣɤɚ ɤɨɧɬɟɤɫɬɧɨɝɨ ɦɟɧɸ ɞɥɹ ɨɛɴɟɤɬɨɜ ɬɚɛɥɢɰɵ Ⱦɢɫɰɢɩɥɢɧɵ ɡɚɤɨɧɱɟɧɚ.

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-146-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

Ɋɢɫ. 8.8. ɋɜɹɡɵɜɚɧɢɟ ɤɨɦɚɧɞ-ɬɪɢɝɝɟɪɨɜ ɫ ɤɨɦɩɨɧɟɧɬɨɦ ContextMenu

Ɋɢɫ. 8.9. ɉɪɢɦɟɧɟɧɢɟ ɤɨɧɬɟɤɫɬɧɨɝɨ ɦɟɧɸ ɜ ɩɪɢɥɨɠɟɧɢɢ

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-147-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 8 ɊȺɁɊȺȻɈɌɄȺ MDA-ɉɊɂɅɈɀȿɇɂə ɋ ɂɋɉɈɅɖɁɈȼȺɇɂȿɆ ɆȺɒɂɇ ɋɈɋɌɈəɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

8. Ɂɚɩɭɫɬɢɦ ɩɪɢɥɨɠɟɧɢɟ. ȼɢɞɧɨ, ɱɬɨ ɤɨɧɬɟɤɫɬɧɨɟ ɦɟɧɸ ɤɚɠɞɨɣ ɫɬɪɨɤɢ (ɞɨɫɬɭɩɧɵɟ ɜ ɧɟɣ ɩɭɧɤɬɵ) ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɦɟɧɹɟɬɫɹ ɜ ɡɚɜɢɫɢɦɨɫɬɢ ɨɬ ɫɨɫɬɨɹɧɢɹ ɬɟɤɭɳɟɣ ɞɢɫɰɢɩɥɢɧɵ (ɫɦ. ɪɢɫ. 8.9).

ɂɛɟɛɨɣɺ ɣ ɪɩɫɺɟɩɥ ɝɶɪɩɦɨɠɨɣɺ ɫɛɜɩɭɶ

1.ɉɪɨɞɭɦɚɬɶ, ɤɚɤɨɣ ɨɛɴɟɤɬ ɢɡ ɩɪɟɞɦɟɬɧɨɣ ɨɛɥɚɫɬɢ ɦɨɠɧɨ ɩɪɟɞɫɬɚɜɢɬɶ

ɜɜɢɞɟ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨɫɬɢ ɨɩɪɟɞɟɥɟɧɧɵɯ ɫɨɫɬɨɹɧɢɣ.

2.Ɋɚɫɲɢɪɢɬɶ ɦɨɞɟɥɶ UML: ɫɨɡɞɚɬɶ ɦɚɲɢɧɭ ɫɨɫɬɨɹɧɢɣ ɞɥɹ ɜɵɛɪɚɧɧɨɝɨ ɨɛɴɟɤɬɚ (ɢɥɢ ɨɛɴɟɤɬɨɜ) ɢ ɦɨɞɢɮɢɰɢɪɨɜɚɬɶ ɞɢɚɝɪɚɦɦɭ ɤɥɚɫɫɨɜ.

3.Ɉɛɧɨɜɢɬɶ ɛɚɡɭ ɞɚɧɧɵɯ, ɦɨɞɢɮɢɰɢɪɨɜɚɬɶ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɢɣ ɢɧɬɟɪɮɟɣɫ ɢ ɫɜɹɡɚɬɶ ɟɝɨ ɫ ɦɨɞɟɥɶɸ.

4.ɉɪɢɦɟɧɢɬɶ ɚɜɬɨɮɨɪɦɵ ɢɥɢ ɤɨɧɬɟɤɫɬɧɨɟ ɦɟɧɸ.

Ʌɩɨɭɫɩɦɷɨɶɠ ɝɩɪɫɩɬɶ

1.ɑɬɨ ɬɚɤɨɟ ɚɜɬɨɦɚɬ?

2.ɇɚɡɨɜɢɬɟ ɛɚɡɨɜɵɟ ɩɪɚɜɢɥɚ ɪɚɛɨɬɵ ɚɜɬɨɦɚɬɨɜ ɜ ɹɡɵɤɟ UML.

3.Ⱦɥɹ ɱɟɝɨ ɩɪɟɞɧɚɡɧɚɱɟɧɵ ɞɢɚɝɪɚɦɦɵ ɫɨɫɬɨɹɧɢɣ?

4.Ʉɚɤ ɫɬɪɨɹɬɫɹ ɞɢɚɝɪɚɦɦɵ ɦɚɲɢɧ ɫɨɫɬɨɹɧɢɣ?

5.Ʉɚɤ ɧɚɫɬɪɚɢɜɚɸɬɫɹ ɬɪɢɝɝɟɪɵ ɜ ɞɢɚɝɪɚɦɦɚɯ ɫɨɫɬɨɹɧɢɣ?

6.Ʉɚɤ ɡɚɞɚɸɬɫɹ ɩɪɚɜɢɥɚ ɩɟɪɟɯɨɞɚ ɧɚ ɹɡɵɤɟ OCL ɞɥɹ ɬɪɢɝɝɟɪɨɜ?

7.Ʉɚɤ ɫɜɹɡɚɬɶ ɬɪɢɝɝɟɪɵ ɫ ɷɥɟɦɟɧɬɚɦɢ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɨɝɨ ɢɧɬɟɪɮɟɣɫɚ?

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-148-

ǹǮǯǼǾǮȀǼǾǻǮȍ ǾǮǯǼȀǮ Ɋ 9 ǾǮǿȆǶǾdzǻǻȉdz ǰǼǵǺǼǴǻǼǿȀǶ ǾǮǵǾǮǯǼȀǸǶ MDA-ǽǾǶǹǼǴdzǻǶǷ

ɐɟɥɢ ɪɚɛɨɬɵ:

ɧɚɭɱɢɬɶɫɹ ɢɫɩɨɥɶɡɨɜɚɬɶ ɜɨɡɦɨɠɧɨɫɬɢ ɹɡɵɤɚ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɞɥɹ ɪɟɚɥɢɡɚɰɢɢ ɪɚɫɲɢɪɟɧɧɵɯ ɮɭɧɤɰɢɨɧɚɥɶɧɵɯ ɜɨɡɦɨɠɧɨɫɬɟɣ ɥɨɝɢɤɢ ɩɪɢɥɨɠɟɧɢɹ;

ɧɚɭɱɢɬɶɫɹ ɢɫɩɨɥɶɡɨɜɚɬɶ ɪɚɫɲɢɪɟɧɧɵɟ ɜɨɡɦɨɠɧɨɫɬɢ ɪɚɡɪɚɛɨɬɤɢ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɨɝɨ ɢɧɬɟɪɮɟɣɫɚ ɜɨ ɜɡɚɢɦɨɫɜɹɡɢ ɫ ɦɨɞɟɥɶɸ.

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

Ɍɩɢɟɛɨɣɠ MDA-ɪɫɣɦɩɡɠɨɣɺ ɬ ɫɛɬɳɣɫɠɨɨɶɧɣ ɝɩɢɧɩɡɨɩɬɭɺɧɣ

ɋ ɩɨɦɨɳɶɸ ɜɢɡɭɚɥɶɧɵɯ ɫɪɟɞɫɬɜ ɦɨɞɟɥɢɪɨɜɚɧɢɹ BDS ɦɨɠɧɨ ɛɵɫɬɪɨ ɫɨɡɞɚɜɚɬɶ ɩɪɨɟɤɬɵ ɫ ɜɟɫɶɦɚ ɫɥɨɠɧɨɣ ɥɨɝɢɤɨɣ. ȼ ɤɚɱɟɫɬɜɟ ɩɥɚɬɮɨɪɦɧɨɧɟɡɚɜɢɫɢɦɵɯ ɫɰɟɧɚɪɢɟɜ, ɨɩɢɫɵɜɚɸɳɢɯ ɷɬɭ ɥɨɝɢɤɭ, ɢɫɩɨɥɶɡɭɸɬɫɹ ɜɢɡɭɚɥɶɧɵɟ ɞɢɚɝɪɚɦɦɵ UML ɢ ɭɧɢɜɟɪɫɚɥɶɧɵɣ ɹɡɵɤ OCL. Ɋɚɡɜɢɬɢɟ ɩɪɨɟɤɬɚ ɦɨɠɟɬ ɩɪɨɢɫɯɨɞɢɬɶ ɧɚ ɜɵɫɨɤɨɦ ɭɪɨɜɧɟ ɚɛɫɬɪɚɝɢɪɨɜɚɧɢɹ ɨɬ ɩɪɨɝɪɚɦɦɧɨɝɨ ɤɨɞɚ. Ɉɞɧɚɤɨ ɜ ɩɪɚɤɬɢɱɟɫɤɢɯ ɩɪɨɟɤɬɚɯ ɪɟɚɥɢɡɭɸɬɫɹ ɛɨɥɟɟ ɬɨɧɤɢɟ ɚɫɩɟɤɬɵ ɜɡɚɢɦɨɞɟɣɫɬɜɢɹ ɩɪɨɝɪɚɦɦɵ ɫ ɩɨɥɶɡɨɜɚɬɟɥɟɦ, ɧɟɠɟɥɢ ɬɟ, ɱɬɨ ɩɪɟɞɥɚɝɚɸɬɫɹ ɫɬɚɧɞɚɪɬɧɵɦɢ ɷɥɟɦɟɧɬɚɦɢ ɭɩɪɚɜɥɟɧɢɹ, ɧɚɩɨɞɨɛɢɟ DataGrid. ȼ ɩɪɨɟɤɬɚɯ ECO ɧɟ ɜɫɟɝɞɚ ɭɞɚɟɬɫɹ ɨɛɨɣɬɢɫɶ ɛɟɡ ɪɭɱɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɞɚ ɷɬɨ ɢ ɧɟ ɬɪɟɛɭɟɬɫɹ. Ɉɩɬɢɦɚɥɶɧɵɣ ɜɚɪɢɚɧɬ ɪɚɡɪɚɛɨɬɤɢ ɡɚɤɥɸɱɚɟɬɫɹ ɜ ɫɨɱɟɬɚɧɢɢ ɜɢɡɭɚɥɶɧɵɯ ɢ ɦɨɞɟɥɢɪɭɸɳɢɯ ɜɨɡɦɨɠɧɨɫɬɟɣ ɨɛɨɥɨɱɤɢ ɢ ɫɪɟɞɫɬɜ ɛɵɫɬɪɨɝɨ ɫɨɡɞɚɧɢɹ ɬɢɩɨɜɵɯ ɢɧɬɟɪɮɟɣɫɧɵɯ ɮɨɪɦ ɫ ɪɭɱɧɵɦ ɤɨɞɢɪɨɜɚɧɢɟɦ ɨɫɨɛɟɧɧɨɫɬɟɣ ɢ ɧɟɨɛɵɱɧɵɯ ɞɟɬɚɥɟɣ ɪɟɚɥɢɡɚɰɢɢ.

ɇɩɟɣɯɣɥɛɱɣɺ ɧɩɟɠɦɣ UML

ɉɪɨɞɨɥɠɢɦ ɪɚɡɪɚɛɚɬɵɜɚɬɶ ɩɪɨɟɤɬ, ɜɵɩɨɥɧɟɧɧɵɣ ɜ ɩɪɟɞɵɞɭɳɟɣ ɥɚɛɨɪɚɬɨɪɧɨɣ ɪɚɛɨɬɟ.

ɉɟɪɟɞ ɬɟɦ ɤɚɤ ɧɚɱɚɬɶ ɪɚɫɲɢɪɟɧɢɟ ɩɨɥɶɡɨɜɚɬɟɥɶɫɤɢɯ ɜɨɡɦɨɠɧɨɫɬɟɣ, ɞɨɩɨɥɧɢɦ ɞɢɚɝɪɚɦɦɭ ɤɥɚɫɫɨɜ ɪɚɫɫɦɚɬɪɢɜɚɟɦɨɝɨ ɩɪɢɦɟɪɚ.

7) Ʉ ɫɭɳɟɫɬɜɭɸɳɢɦ ɬɪɟɦ ɤɥɚɫɫɚɦ Ʉɚɮɟɞɪɚ, ɉɪɟɩɨɞɚɜɚɬɟɥɶ ɢ Ⱦɢɫɰɢɩɥɢɧɚ ɞɨɛɚɜɢɦ ɧɨɜɵɣ ɤɥɚɫɫ clPosition (Ⱦɨɥɠɧɨɫɬɶ) ɫ ɟɞɢɧɫɬɜɟɧɧɵɦ ɚɬɪɢ-

ɛɭɬɨɦ PositionName (ɇɚɡɜɚɧɢɟ ɞɨɥɠɧɨɫɬɢ).

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-149-

ɅȺȻɈɊȺɌɈɊɇȺə ɊȺȻɈɌȺ ʋ 9 ɊȺɋɒɂɊȿɇɇɕȿ ȼɈɁɆɈɀɇɈɋɌɂ ɊȺɁɊȺȻɈɌɄɂ MDA-ɉɊɂɅɈɀȿɇɂɃ

Ʌɫɛɭɥɣɠ ɭɠɩɫɠɭɣɲɠɬɥɣɠ ɬɝɠɟɠɨɣɺ

8) ɋɨɡɞɚɞɢɦ ɫɜɹɡɶ ɦɟɠɞɭ ɤɥɚɫɫɚɦɢ ɉɪɟɩɨɞɚɜɚɬɟɥɶ ɢ Ⱦɨɥɠɧɨɫɬɶ

(ɪɢɫ. 9.1).

Ɋɢɫ. 9.1. Ɇɨɞɢɮɢɰɢɪɨɜɚɧɧɚɹ ɞɢɚɝɪɚɦɦɚ ɤɥɚɫɫɨɜ

Ɇɟɠɞɭ ɤɥɚɫɫɚɦɢ ɉɪɟɩɨɞɚɜɚɬɟɥɶ ɢ Ⱦɨɥɠɧɨɫɬɶ ɭɫɬɚɧɨɜɢɦ ɨɬɧɨɲɟɧɢɟ ɨɞɧɨɧɚɩɪɚɜɥɟɧɧɨɣ ɚɫɫɨɰɢɚɰɢɢ (ɫɬɪɟɥɤɚ, ɧɚɩɪɚɜɥɟɧɧɚɹ ɤ ɤɥɚɫɫɭ Ⱦɨɥɠɧɨɫɬɶ). ɑɬɨɛɵ ɩɨɫɬɚɜɢɬɶ ɫɬɪɟɥɤɭ, ɧɭɠɧɨ ɜ ɫɜɨɣɫɬɜɟ Navigable (ɞɥɹ End1) ɜɵɛɪɚɬɶ ɡɧɚɱɟɧɢɟ False. ɗɬɨ ɨɬɧɨɲɟɧɢɟ ɩɨɤɚɡɵɜɚɟɬ, ɱɬɨ ɞɨɥɠɧɨɫɬɢ ɢɫɩɨɥɶɡɭɸɬɫɹ ɤɚɤ ɫɩɪɚɜɨɱɧɢɤ ɞɥɹ ɜɫɟɯ ɩɪɟɩɨɞɚɜɚɬɟɥɟɣ.

3.ɑɬɨɛɵ ɫɝɟɧɟɪɢɪɨɜɚɬɶ ɢɫɯɨɞɧɵɣ ɤɨɞ ECO ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɩɨɫɬɪɨɟɧɧɨɣ ɦɨɞɟɥɶɸ, ɜɵɛɟɪɟɦ ɨɩɟɪɚɰɢɸ Regenerate ECO source code ɢɡ ɤɨɧɫɨɥɶɧɨɝɨ ɦɟɧɸ ɨɤɧɚ Model View.

4.Ⱦɥɹ ɨɬɨɛɪɚɠɟɧɢɹ ECO ɩɪɨɫɬɪɚɧɫɬɜɚ ɜ ɛɚɡɭ ɞɚɧɧɵɯ ɫɝɟɧɟɪɢɪɭɟɦ ɫɯɟɦɭ ɧɚ ɡɚɤɥɚɞɤɟ ɧɚɫɬɪɨɣɤɢ ɨɛɴɟɤɬɧɨɝɨ ɩɪɨɫɬɪɚɧɫɬɜɚ projDeanOfficeEcoSpace. ɇɚɠɦɟɦ ɤɧɨɩɤɭ Generate Schema.

Ɋɫɩɞɫɛɧɧɨɩɠ ɟɩɜɛɝɦɠɨɣɠ ɩɜɵɠɥɭɛ

Ⱦɥɹ ɢɡɭɱɟɧɢɹ ɫɩɨɫɨɛɨɜ ɨɛɪɚɳɟɧɢɹ ɤ ɨɛɴɟɤɬɚɦ ȿɋɈ ɢɡ ɩɪɨɝɪɚɦɦɧɨɝɨ ɤɨɞɚ ɪɟɚɥɢɡɭɟɦ ɢ ɪɚɫɲɢɪɢɦ ɩɪɟɞɵɞɭɳɢɣ ɩɪɨɟɤɬ ɫ ɩɪɢɜɥɟɱɟɧɢɟɦ ɪɟɞɚɤɬɨɪɚ ɢɫɯɨɞɧɵɯ ɬɟɤɫɬɨɜ.

ɍɠɰɨɩɦɩɞɣɣ ɫɛɢɫɛɜɩɭɥɣ ɪɫɩɞɫɛɧɧɨɩɞɩ ɩɜɠɬɪɠɲɠɨɣɺ. Ɇɛɜ. ɪɫɛɥɭɣɥɮɧ

-150-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]