Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π‘++ Π·Π° 21 дСнь.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 127

Автор ДТСсс Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ

Рис. 18.15. МодСль агрСгирования


На рис. 18.16 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° модСль ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π­Ρ‚Π° модСль сообщаСт Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ класс "Ρ‚Π΅Π»ΠΎ" Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя (Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) Π³ΠΎΠ»ΠΎΠ²Ρƒ, Π΄Π²Π΅ Ρ€ΡƒΠΊΠΈ ΠΈ Π΄Π²Π΅ Π½ΠΎΠ³ΠΈ, Π½ΠΎ Ρ‡Ρ‚ΠΎ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π³ΠΎΠ»ΠΎΠ²Π°, Ρ€ΡƒΠΊΠΈ ΠΈ Π½ΠΎΠ³ΠΈ) Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΏΡ€ΠΈ создании Ρ‚Π΅Π»Π° ΠΈ исчСзнут вмСстС с Π½ΠΈΠΌ. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ нСзависимого сущСствования.

Рис. 18.16. МодСль ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

Дискриминаторы ΠΈ силовыС классы

Как ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ производство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°Ρ€ΠΊΠΈ? ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, вас наняла Ρ„ΠΈΡ€ΠΌΠ° Acme Motors, которая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ: Pluto (ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠ°Π»ΠΎΠ»ΠΈΡ‚Ρ€Π°ΠΆΠ½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ для ΠΏΠΎΠ΅Π·Π΄ΠΎΠΊ Π·Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠ°ΠΌΠΈ), Venus (Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π΄Π²Π΅Ρ€Π½Ρ‹ΠΉ "сСдан" с Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ срСднСй мощности), Mars (спортивный Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Ρ‚ΠΈΠΏΠ° "ΠΊΡƒΠΏΠ΅" с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ, рассчитанный Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ), Jupiter (ΠΌΠΈΠ½ΠΈ-Ρ„ΡƒΡ€Π³ΠΎΠ½ с форсированным Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠ°ΠΊ Ρƒ спортивного ΠΊΡƒΠΏΠ΅, ΠΏΡ€Π°Π²Π΄Π°, ΠΌΠ΅Π½Π΅Π΅ скоростной, Π·Π°Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ) ΠΈ Earth (ΠΌΠ°Π»ΠΎΠΌΠΎΡ‰Π½Ρ‹ΠΉ, Π½ΠΎ скоростной Ρ„ΡƒΡ€Π³ΠΎΠ½).

МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ просто произвСсти всС эти ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса Car, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 18.17.


Рис. 18.17. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ подклассов всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΎΠ±Ρ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс


Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ различия ΠΌΠ΅ΠΆΠ΄Ρƒ модСлями. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ двигатСля, Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΡƒΠ·ΠΎΠ²Π° ΠΈ спСциализациСй. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡ эти основныС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ характСристики Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π°ΠΆΠ½Π΅Π΅ ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π΅ Π½Π° названиях ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π° Π½Π° ΠΈΡ… основных ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°Ρ…. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ дискриминаторами ΠΈ Π² UML ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (см. рис. 18.17).

Рис. 18.18. МодСль ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ дискриминаторов


Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π° рис. 18.18 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ классы Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, комбинируя Ρ‚Π°ΠΊΠΈΠ΅ дискриминаторы, ΠΊΠ°ΠΊ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ двигатСля, Ρ‚ΠΈΠΏ ΠΊΡƒΠ·ΠΎΠ²Π° ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ автомобиля.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дискриминатор ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ простого пСрСчислСния. НапримСр, объявим пСрСчислСниС Ρ‚ΠΈΠΏΠΎΠ² ΠΊΡƒΠ·ΠΎΠ²Π°:

enum BodyType={sedan, coupe, minivan, stationwagon}

Однако Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дискриминатора ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ, просто Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ. НапримСр, Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС дискриминатор ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ класс, ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ дискриминатора Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, тСхничСскиС характСристики автомобиля, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ использованиС, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚ΠΈΠΏΠ° performance, содСрТащим Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ скорости, Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°Ρ… ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… характСристиках. Π’ UML классы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инкапсулирован дискриминатор ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания экзСмпляров Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса (Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ) Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ экзСмпляры класса ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ характСристики Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΏΠΎΡ€Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΈ Π‘Π΅ΠΌΠ΅ΠΉΠ½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ), Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ силовыми. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс НазначСниС (performance) являСтся силовым для класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ. ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ НазначСниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ассоциируСтся с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 18.19.

ИспользованиС силовых классов позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ логичСскиС Ρ‚ΠΈΠΏΡ‹, Π½Π΅ прибСгая ΠΊ наслСдованию. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСством Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ создавая класс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° C++ использованиС силовых классов рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΊ, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс Car (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ классу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ) Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса PerformanceCharacteristics (рис. 18.20). Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, создайтС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ силовыС классы для дискриминаторов ΠšΡƒΠ·ΠΎΠ² (body) ΠΈ Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ (engine).

Class Car:public Vehicle

{

   public:

      Car();

      ~Car();

      //Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹

   private:

      PerformanceCharacteristics*pPerformance;

};

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, силовыС классы Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ логичСский Ρ‚ΠΈΠΏ различаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ассоциированных с Π½ΠΈΠΌ силовых классов, Ρ‚ΠΎ эти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ конструкторов Π΄Π°Π½Π½Ρ‹Ρ… силовых классов. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, измСняя установки Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² силовых классов. Число Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ограничиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числом логичСских ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… силовых классов.

ДинамичСская модСль

Π’ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Π°ΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈΡ… взаимодСйствия. НапримСр, классы РасчСтный счСт, ATM ΠΈ ΠšΠ²ΠΈΡ‚Π°Π½Ρ†ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с классом ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π² ситуации БнятиС со счСта. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ Π²ΠΈΠ΄Ρƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались Π² Π½Π°Ρ‡Π°Π»Π΅ Π°Π½Π°Π»ΠΈΠ·Π° (см. рис. 18.11), рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ взаимодСйствиС классов Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… для Π½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 18.21.

Рис. 18.19. Дискриминатор ΠΊΠ°ΠΊ силовой класс


Рис. 18.20. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΈ связанным с Π½ΠΈΠΌ силовым классом


Рис. 18.21. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° взаимодСйствия классов


Π­Ρ‚Π° простая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими классами ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ситуации использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ класс ATM Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ классу РасчСтный счСт ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΡƒΡ‡Π΅Ρ‚ остатка Π΄Π΅Π½Π΅Π³ Π½Π° счСтС, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ РасчСтный счСт Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ классу ATM ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π΄ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

БущСствуСт Π΄Π²Π° Π²ΠΈΠ΄Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ взаимодСйствий классов. На рис. 18.21 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСйствий. Π’Π° ΠΆΠ΅ ситуация, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° рис. 18.22 ΠΈ называСтся Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ сотрудничСства. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° опрСдСляСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ событий Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° β€” ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ взаимодСйствия классов. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ сотрудничСства ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ прямо ΠΈΠ· Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊΠΈΠ΅ срСдства, ΠΊΠ°ΠΊ Rational Rose, автоматичСски выполнят это Π·Π°Π΄Π°Π½ΠΈΠ΅ послС Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅.

Рис. 18.22. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° сотрудничСства

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² состояний

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ стали понятными взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ состояния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ состояниями ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ состояний (ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² состояний). На рис. 18.23 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ состояния класса РасчСтный счСт ΠΏΡ€ΠΈ рСгистрации ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² систСмС.

КаТдая Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° состояний начинаСтся с состояния Начало ΠΈ заканчиваСтся Π½ΡƒΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠ½Ρ†Π΅Π²Ρ‹ΠΌ состояниСм. КаТдоС состояниС ΠΈΠΌΠ΅Π΅Ρ‚ своС имя, ΠΈ Π² ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны Π‘Ρ‚ΠΎΡ€ΠΎΠΆΠ°, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой условия, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ состояния ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ.


БвСрхсостояния 

 ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π² любоС врСмя ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Он ΠΌΠΎΠΆΠ΅Ρ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ вставил ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΠ»ΠΈ послС Π²Π²ΠΎΠ΄Π° пароля. Π’ любом случаС систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ запрос Π½Π° Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² состояниС НС зарСгистрирован (рис. 18.24).

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Π±ΠΎΠ»Π΅Π΅ слоТной Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅, содСрТащСй ΠΌΠ½ΠΎΠ³ΠΎ состояний, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС возмоТности ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠžΡ‚ΠΌΠ΅Π½Π° внСсСт сумятицу. ОсобСнно Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½Π° являСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ состояниСм, ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌ ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ состояниями. Π­Ρ‚Ρƒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свСрхсостояниС (рис. 18.25).

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π° рис. 18.25 Π΄Π°Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° рис. 18.24, Π½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ яснСС ΠΈ Π»Π΅Π³Ρ‡Π΅ для чтСния. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° рСгистрации ΠΈ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсс ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Если Π²Ρ‹ это сдСлаСтС, Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ Π² состояниС НС зарСгистрирован.

Рис. 18.23. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ состояний класса РасчСтный счСт


Рис. 18.24. ΠžΡ‚ΠΌΠ΅Π½Π° рСгистрации


Рис. 18.25. БвСрхсостояниС

РСзюмС

На этом занятии Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… рассмотрСны вопросы Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ проСктирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Анализ состоит Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ситуаций ΠΈ сцСнариСв использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ классов ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π•Ρ‰Π΅ Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ программист быстро набрасывал основныС трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π½ΠΈΠΌΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ заканчиваСтся, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ оказался нСТизнСспособным ΠΈ Π½Π΅ Π±Ρ‹Π» ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚. Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π½Π°Ρ‡Π°Π»Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрой ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ Π² Π±ΡƒΠ΄ΡƒΡˆΠ΅ΠΌ.