ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Одним ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ являСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ класс — подкласс, извСстный Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΊ наслСдованиС. НапримСр, класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Audi 6 являСтся подклассом Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ являСтся подклассом класса… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ Π½Π°ΡˆΠ΅ врСмя информация ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΌΠΈΡ€Π΅. НС ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, призванная «ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π³Π»Π°Π·» Π²Π°ΠΆΠ½Ρ‹Π΅ для людСй Π΄Π°Π½Π½Ρ‹Π΅. Один ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ — ΠΏΠ°Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠŸΠ°Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСйчас примСняСтся повсСмСстно. Π§Π°Ρ‰Π΅ всСго ΠΏΠ°Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ встрСчаСтся Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Однако ΠΈ Π² ΠΆΠΈΠ·Π½ΠΈ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ПИН-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ являСтся ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄ трСбуСтся ввСсти ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.

ΠŸΠ°Ρ€ΠΎΠ»ΡŒ — это сСкрСтноС слово ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ символов, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для подтвСрТдСния личности ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ. ΠŸΠ°Ρ€ΠΎΠ»ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ Π½Π΅ΡΠ°Π½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм комбинация «ΠΈΠΌΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ — ΠΏΠ°Ρ€ΠΎΠ»ΡŒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удостовСрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠ°Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — основной способ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Β· ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ минимальной Π΄Π»ΠΈΠ½Ρ‹ пароля.

Β· Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° пароля послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° бСздСйствия.

Β· Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ пСриодичСского измСнСния пароля.

Β· НазначСниС стойких ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ источника случайных чисСл, Π»ΠΈΠ±ΠΎ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° псСвдослучайных чисСл, Π²Ρ‹Ρ…ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пСрСрабатываСтся стойкими Ρ…ΡΡˆ-прСобразованиями).

ИсслСдования ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 40% всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ автоматичСски. Π›Π΅Π³ΠΊΠΎ ΡƒΠ³Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ (123, admin) ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ слабыми ΠΈ ΡƒΡΠ·Π²ΠΈΠΌΡ‹ΠΌΠΈ. ΠŸΠ°Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ стойкими.

Часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования ΠΊ ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌ:

Β· ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Π·Π»ΠΎΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ. НаиболСС распространСнная минимальная Π΄Π»ΠΈΠ½Π° — восСмь символов. По Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Ρ†ΠΈΡ„Ρ€.

Β· ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ словарным словом ΠΈΠ»ΠΈ простым ΠΈΡ… ΡΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ΠΌ, это ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π±ΠΎΡ€ ΠΏΠΎ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ.

Β· ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ ΠΊ ΡΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ пароля ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ использованиС сочСтания слов с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами (#, $, * ΠΈ Ρ‚. Π΄.), использованиС малораспространСнных ΠΈΠ»ΠΈ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… слов, соблюдСниС минимальной Π΄Π»ΠΈΠ½Ρ‹.

Для большСй бСзопасности ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ слоТныС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ. Однако Π½Π΅ Π²ΡΠ΅ слоТныС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ «Π² Π³ΠΎΠ»ΠΎΠ²Π΅». Плюс, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈΡ‚ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «Π»ΠΈΡˆΠ½ΠΈΠ΅ Π³Π»Π°Π·Π°» эти ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΈ Ρ…ранСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π±Ρ‹Π»Π° создана эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Для гСнСрирования ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс. Бписок ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ прСдставляСт собой Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ ячСйку, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΡΡ‚Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ занСсти Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΈ Ρ„Π»Π°Π³. Π›ΡŽΠ±ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ», ΠΏΡ€ΠΈΡ‚ΠΎΠΌ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. Π€Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΎΡ‚крытия Ρ‡ΡƒΠΆΠΈΠΌΠΈ людьми особым ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ, Π΄ΠΎ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ список ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Π½.

ΠžΠ±Π·ΠΎΡ€ основных ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языков программирования

Π‘++ — это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, Π·Π°Π΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ приятным для ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ программиста. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ второстСпСнных Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π‘++ являСтся надмноТСством языка программирования C. Помимо возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π΅Ρ‚ C, Π‘++ прСдоставляСт Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ срСдства опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ опрСдСлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… концСпциям прилоТСния, программист ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ части. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ абстракциСй Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… содСрТится Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ просты ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Ρ‚Π΅Ρ… ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Ρ‚ΠΈΠΏ нСльзя ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΡΡ‚Π°Π΄ΠΈΠΈ компиляции. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ понятиСм Π‘++ являСтся класс. Класс — это Ρ‚ΠΈΠΏ, опрСдСляСмый ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠšΠ»Π°ΡΡΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ сокрытиС Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² для Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, динамичСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘++ прСдоставляСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠ΅, Ρ‡Π΅ΠΌ Π² C, срСдства выраТСния ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ². Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно с ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π² ΡΠ΅Π±Ρ символичСскиС константы, inline-подстановку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ управлСния свободной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΡΡΡ‹Π»ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. Π’ Π‘++ сохранСны возмоТности языка C ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния (Π±ΠΈΡ‚Ρ‹, Π±Π°ΠΉΡ‚Ρ‹, слова, адрСса ΠΈ Ρ‚. ΠΏ.). Π­Ρ‚ΠΎ позволяСт вСсьма эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π‘++ ΠΈ Π΅Π³ΠΎ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ спроСктированы Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π˜ΠΌΠ΅ΡŽΡ‰Π°ΡΡΡ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ рСализация языка Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… C. Из Π‘++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ с Π‘++ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C.

Java — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Sun Microsystems с 1991 Π³ΠΎΠ΄Π° ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ 23 ΠΌΠ°Ρ 1995 Π³ΠΎΠ΄Π°. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования назывался Oak (James Gosling) ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚ывался для Π±Ρ‹Ρ‚ΠΎΠ²ΠΎΠΉ элСктроники, Π½ΠΎ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΠΈ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² Java ΠΈ ΡΡ‚Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для написания Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ транслированы Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, выполняСмый Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ java-машинС (JVM) — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅ΠΉ инструкции ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π½ΠΎ Ρ Ρ‚Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Скста, обрабатываСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС.

Π―Π·Ρ‹ΠΊ Java зародился ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создания ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Ρ‹Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ². РСализация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° Π½Π°Ρ‡Π°Ρ‚Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++, Π½ΠΎ Π²ΡΠΊΠΎΡ€Π΅ Π²ΠΎΠ·Π½ΠΈΠΊ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ срСдством Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ самого инструмСнта — языка программирования. Π‘Ρ‚Π°Π»ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-нСзависимый язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссорах ΠΏΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами.

Π―Π·Ρ‹ΠΊ Java потрСбовался для создания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для сСти Internet. ЀактичСски, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, принятых ΠΏΡ€ΠΈ создании Java, Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ синтаксис, сходный с C ΠΈ C++. Π’ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ соглашСния для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π΄Π»Ρ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°. Π’ Java Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ всС Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ C++.

Π’Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… элСмСнта объСдинились Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ языка Java:

Β· Java прСдоставляСт для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования свои Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹ (applets) — нСбольшиС, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Π΅, Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‰ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ сСтСвыС прилоТСния, встраиваСмыС Π² ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ Web. АпплСты Java ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ потрСбитСлям с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ HTML

Β· Java высвобоТдаСт ΠΌΠΎΡ‰ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, сочСтая простой ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ синтаксис с Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ позволяСт ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ программистов быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹

Β· Java прСдоставляСт программисту Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ классов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для ясного абстрагирования ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΊΠ½Π°ΠΌΠΈ, ΡΠ΅Ρ‚ΡŒΡŽ ΠΈ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° этих классов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ созданиС нСзависимых ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ абстракций для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра систСмных интСрфСйсов

Pascal (Π½Π°Π·Π²Π°Π½ Π² Ρ‡Π΅ΡΡ‚ΡŒ Π‘Π»Π΅Π·Π° Паскаля) — это чисто ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык программирования, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉΡΡ для обучСния структурному ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Pascal Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Никлаусом Π’ΠΈΡ€Ρ‚ΠΎΠΌ Π² 1970; Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ расхоТСму мнСнию, ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ языком, Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»ΡΡ для практичСского примСнСния. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ послуТил Algol. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ язык компилировался Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ языку Java.

Π’ 1983 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» принят ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ стандарт языка, ISO 7185:1983, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Standard Pascal. Π­Ρ‚ΠΎΡ‚ стандарт Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» Π² ΡΠ·Ρ‹ΠΊ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ описывал ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ особСнности языка. Π’ 1990 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π» принят стандарт ISO/IEC 10 206, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Extended Pascal. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ стало Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, язык прСдоставлял ряд встроСнных структур Π΄Π°Π½Π½Ρ‹Ρ…: записи, массивы, Ρ„Π°ΠΉΠ»Ρ‹, мноТСства ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ язык ΠΎΠ±Π»Π°Π΄Π°Π» мноТСством нСдостатков: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ функциям массивов ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, отсутствиС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдств Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ограничСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, отсутствиС срСдств для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ написанных Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, отсутствиС срСдств Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции ΠΈ Ρ‚. ΠΏ.

Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ Object Pascal, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² 1985 Π³ΠΎΠ΄Ρƒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. БущСствуСт ряд соврСмСнных компиляторов, ΠΈ Π² Π½Π°ΡΡ‚оящСС врСмя язык достаточно популярСн.

Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ

Base64 Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ — позиционная систСма счислСния с ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 64. Π—Π΄Π΅ΡΡŒ 64 — это наибольшая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π²ΠΎΠΉΠΊΠΈ (26), которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… символов ASCII. Π­Ρ‚Π° систСма ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚Π΅ для прСдставлСния Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‚СкстС письма (транспортноС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅). ВсС ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, извСстныС ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Base64, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ символы A-Z, a-z ΠΈ 0−9, Ρ‡Ρ‚ΠΎ составляСт 62 Π·Π½Π°ΠΊΠ°, для Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… Π·Π½Π°ΠΊΠΎΠ² Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ символы.

БущСствуСт мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² примСнСния Base64. НапримСр, Thunderbird ΠΈ Mozilla использовали Base64 для сокрытия ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π² POP3. Base64 часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ для скрытия сСкрСтов Π±Π΅Π· ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π½Π° ΠΊΡ€ΠΈΠΏΡ‚ографичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π‘ΠΊΠ°Π½Π΅Ρ€Ρ‹ спама, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ сообщСния Π² base64, часто ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ сообщСния Π² Base64, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ каТутся достаточно случайными, ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π² Ρ‚СкстС Base64, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ принятыми Π·Π° ΡΠΏΠ°ΠΌ. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ спаммСры для ΠΎΠ±Ρ…ΠΎΠ΄Π° основных антиспамовых инструмСнтов.

MD5. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1991 Π³ΠΎΠ΄Ρƒ профСссором Рональдом Π›. РивСстом. Алгоритм MD5 часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ. Π“Π»Π°Π²Π½Ρ‹ΠΌ прСимущСством MD5 являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСльзя. А Ρ‡Ρ‚ΠΎ это Π·Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ ΠΈΡ… Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ? MD5 — это Ρ…ΡΡˆ-функция. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²ΠΎΠ·Π½ΠΈΠΊ вопрос: Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Ρ‚Π°ΠΊΠΎΠ΅? ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΡΡ‚ΠΎΠΌ вопросС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π₯эш-функция? ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Для простоты Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа ΠΎΡ‚ 1 Π΄ΠΎ 106. И ΠΏΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ нСкоторая функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 1 Π΄ΠΎ 106, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 1 Π΄ΠΎ 1000. Нам Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эта функция, Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ числу ΠΎΡ‚ 1 Π΄ΠΎ 106 ставит Π² ΡΠΎΠΎΡ‚вСтствиС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 1 Π΄ΠΎ 1000. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… это дСйствиС:

int hash (long int x){

if (x%1000==0) return 1000;

return (x % 1000);

}

function hash (x:longint):longint;

begin

if (x mod 1000=0) then hash:=1000 else

hash:=x mod 1000;

end;

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ простая Ρ…ΡΡˆ-функция. Если ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. А Π΅ΡΠ»ΠΈ Π½Π°ΠΌ извСстСн Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅Ρ‚. Для числа 234 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 234,1234, 2234,3234… ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ся.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ MD5? Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ссли извСстСн Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. А Π²ΠΎΡ‚ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MD5 это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ-Ρ‚ΠΎ просто. Π’. Π΅. Ссли Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MD5, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ смоТСм Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ функция выдаст этот ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (Ρ€Π΅Ρ‡ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ восстановлСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°). MD5 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для хранСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ опасно. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ сайт «Π”истанционноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅» (сайт). На ΡΡ‚ΠΎΠΌ сайтС проходят городскиС ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Ρ‹ школьников ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‚ΡΡ сотни школьников ΠΈ ΡΡ‚ΡƒΠ΄Π΅Π½Ρ‚ΠΎΠ². Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡˆΠΊΠΎΠ»Π°Ρ… доступа Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π½Π΅Ρ‚, ΠΈ ΡˆΠΊΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ услугами сайта Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΌΠ°, Π»ΠΈΠ±ΠΎ Π½Π΅ Π² ΡΠ²ΠΎΠ΅ΠΉ школС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сайт Π½Π°Ρ‡Π°Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² ΡΠ°ΠΌΠΈΡ… ΡˆΠΊΠΎΠ»Π°Ρ…. Π’. Π΅. ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ происходит Π½Π΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ сайтС, Π° Π½Π° Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ, установлСнной Π² ΡˆΠΊΠΎΠ»Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вмСстС с ΡΠ°ΠΉΡ‚ΠΎΠΌ школа ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π² Ρ‚ΠΎΠΌ числС ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²), ΠΈ ΡΡ‚ΠΈΠΌΠΈ паролями любой ΠΌΠΎΠ³ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для «Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚рирования» самого сайта. Π‘Ρ‹Π»ΠΎ Π΄Π²Π° способа Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

1. ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ΠΊΠΎΠΏΠΈΠΈ сайта, которая Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСна Π² ΡˆΠΊΠΎΠ»Ρƒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ всС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.

2. Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΡΠΌΠΎΠ³ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π‘Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ способ. БСйчас ΠΏΠ°Ρ€ΠΎΠ»ΠΈ хранятся Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ MD5). ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π΄Π΅Ρ‚ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΎΡ‚ ΠΏΠ°Ρ€ΠΎΠ»Ρ вычисляСтся Ρ…ΡΡˆ-функция MD5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравниваСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, хранящимся Π² Π±Π°Π·Π΅. Если значСния Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π²Π΅Ρ€Π΅Π½. Π•Ρ‰Π΅ MD5 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ доставлСн Π±Π΅Π· ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ MD5 ΠΎΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вмСстС с Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ MD5 ΠΎΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» испорчСн ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅. ПослСднСС врСмя MD5 стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΊΠ°Π·ΠΈΠ½ΠΎ. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ставку, ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ…ΡΡˆ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΠ³Ρ€Ρ‹. Когда ставка сдСлана, ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ³Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΠΏΠ°Π»ΠΎ число 26). ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Π² ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Π·ΠΈΠ½ΠΎ сгСнСрировало это число Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ³Ρ€ΠΎΠΊ сдСлал ставку. Но Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΡΡ‚ΠΎΠΌ ΠΊΠ°Π·ΠΈΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто. Π’Π΅ΡΡŒ сСкрСт Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ MD5? Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ MD5. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ MD5 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ строку. Π­Ρ‚Π° строка прСобразуСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Как это дСлаСтся? Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Π΅ΡΡ‚ΡŒ свой Π½ΠΎΠΌΠ΅Ρ€. Π­Ρ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Если этим Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. ΠŸΡƒΡΡ‚ΡŒ q Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π»ΠΈΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Ρ€ΠΎΠ²Π½ΠΎ 64 Π±ΠΈΡ‚Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с Π½Π΅Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌΠΈ нулями). К ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ приписываСтся 1. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π»ΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ увСличиваСтся Π½Π° 1. Π—Π°Ρ‚Π΅ΠΌ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½ΡƒΠ»ΠΈ, ΠΏΠΎΠΊΠ° Π΄Π»ΠΈΠ½Π° Π½Π΅ ΡΡ‚Π°Π½Π΅Ρ‚ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 512 Ρ€Π°Π²Π½Π° 448 (length mod 512=448). Π”Π°Π»Π΅Π΅ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ младшиС 32 Π±ΠΈΡ‚Π° числа q, Π° Π·Π°Ρ‚Π΅ΠΌ — ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅. Π”Π»ΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ становится ΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ 512. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π·ΠΎΠ²Π΅ΠΌ S. Для подсчСта Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… слова (32 Π±ΠΈΡ‚Π°). Π­Ρ‚ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ слова ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ слСдуСт самый младший Π±Π°ΠΉΡ‚:

A: 01 23 45 67

B: 89 ab cd ef

C: fe dc ba 98

D: 76 54 32 10

Π’Π°ΠΊΠΆΠ΅ для подсчСта Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

F (X, Y, Z) = XY v not (X) Z

G (X, Y, Z) = XZ v Y not (Z)

H (X, Y, Z) = X xor Y xor Z

I (X, Y, Z) = Y xor (X v not (Z))

X, Y, Z — это Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ слова. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ слова. Для подсчСта ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° функция (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ W). Она Ρ…ΠΈΡ‚Ρ€ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π΅Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ, Ρ‚.ΠΊ. ΠΎΠ½Π° выполняСт ΡΠ΅Ρ€ΠΈΡŽ простых ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ). ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… происходит с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ F, G, H, I.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ схСматичСски ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° функция. Π‘Π»Π΅Π²Π° — Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, справа — Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅.

ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ рассмотрСны. Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, ΠΊΠ°ΠΊ происходит просчСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

1. Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 512 Π±ΠΈΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ S.

2. УдаляСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 512 Π±ΠΈΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ S (ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· удалСния, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС Π½Π°Π΄ΠΎ Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 512, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 512 Π±ΠΈΡ‚).

3. Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ W. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ A, B, C, D — это Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… слов. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ T — это Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½Ρ‹Π΅ 512 Π±ΠΈΡ‚.

4. ΠŸΡ€ΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ A A0.

5. B=B+B0.

6. C=C+C0.

7. D=D+D0.

8. Если Π΄Π»ΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 0, Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ.

9. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡˆΠ°Π³Ρƒ 1.

ПослС выполнСния этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° A, B, C, D — это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ 128 Π±ΠΈΡ‚). Часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ MD5 ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· 32 символов 0.f. Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ записан Π½Π΅ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния, Π° Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

ΠœΡ‹ ΠΆΠΈΠ²Π΅ΠΌ Π² ΠΌΠΈΡ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π‘Ρ‚ΠΎΠ», Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, Ρ€ΡƒΡ‡ΠΊΠ°, классная доска — всС это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Наряду с Ρ„изичСскими ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ абстрактныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ прСдставитСлями ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ числа. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ — это любая физичСская ΠΈΠ»ΠΈ абстрактная Ρ‡Π΅Ρ‚ΠΊΠΎ идСнтифицируСмая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — это общСфилософскоС понятиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΎΡΡŒ философами Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Π’Π°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ автомобиля ΡΠ²Π»ΡΡŽΡ‚ΡΡ максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ двигатСля, Ρ†Π²Π΅Ρ‚ ΠΊΡƒΠ·ΠΎΠ²Π° ΠΈ Ρ‚. Π΄. Атрибутами усилитСля ΡΠ²Π»ΡΡŽΡ‚ΡΡ частотный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, выходная ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ, коэффициСнт Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… искаТСний, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΡˆΡƒΠΌΠ° ΠΈ Ρ‚. Π΄.

Помимо Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (ООП) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ опСрациями ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Π’Π°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π·Π΄ΠΈΡ‚ΡŒ, ΠΊΠΎΡ€Π°Π±Π»ΡŒ — ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ — ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ инкапсулируСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, скрывая ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… с Π½ΠΈΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, свою Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — это экзСмпляр Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ просто класса. Π’Π°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Audi 6 являСтся экзСмпляром класса Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ Sony SW-7600G Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставитСлСм класса ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, класс — это абстрактноС понятиС. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ платоновскиС ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. На UML — ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС модСлирования — класс отобраТаСтся Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ‚Ρ€ΠΈ части. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ содСрТится имя класса, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ — Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ — ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (рис. 1, Π°).

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Одним ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ являСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ класс — подкласс, извСстный Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΊ наслСдованиС. НапримСр, класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Audi 6 являСтся подклассом Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ являСтся подклассом класса транспортных срСдств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΈΠΌΠΎ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ самолСты, ΠΊΠΎΡ€Π°Π±Π»ΠΈ ΠΏΠΎΠ΅Π·Π΄Π° ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ систСмы классификации Π² Π±ΠΎΡ‚Π°Π½ΠΈΠΊΠ΅ ΠΈ Π·ΠΎΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ наслСдованию, являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ гСнСрализация. Она ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΈΠΉ класс, являСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ (ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌ) классом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. Класс транспортных срСдств, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, являСтся Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ классов Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, самолСтов ΠΈ ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΉ. Π’ UML принято ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ понятиСм гСнСрализация, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°Π·ΠΈΠ»ΠΎΡΡŒ ΠΈ Π² ΡΠΈΠΌΠ²ΠΎΠ»Π΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅: большая Π½Π΅ Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Π°Ρ стрСлка, направлСнная Π½Π° ΠΊΠ»Π°ΡΡ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… классов (рис. 1, Π±).

Рис. 1. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ класса ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² UML: Π° — ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ класса; Π± — ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ наслСдованиС; с — мноТСствСнноС наслСдованиС

ΠŸΡ€ΠΈ наслСдовании всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ классом-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ. НаслСдованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° классы, находящиСся Π½Π° Π½ΠΈΠΆΠ½ΠΈΡ… уровнях ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, ΡƒΠ½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ всС свойства (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) всСх классов, прямыми ΠΈΠ»ΠΈ косвСнными ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ. Класс B ΡƒΠ½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса A ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ A, B, C ΠΈ D ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ A, B, C ΠΈ D, Π° ΠΊΠ»Π°ΡΡ C — Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ A, B, C, E, F ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ A, B ΠΈ E.

Помимо Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ, сущСствуСт ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС, ΠΊΠΎΠ³Π΄Π° класс наслСдуСт сразу нСскольким классам (рис. 1, с). ΠŸΡ€ΠΈ этом ΠΎΠ½ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ свойства всСх классов, ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся. ΠŸΡ€ΠΈ использовании мноТСствСнного наслСдования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ особСнно Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° класс-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ свойства, с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ содСрТаниСм.

Вакая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° извСстна ΠΊΠ°ΠΊ «ΠΠ»ΠΌΠ°Π· Никсона». Π•Π΅ ΡΡƒΡ‚ΡŒ состоит Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ повСсти сСбя Никсон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΊΠ²Π°ΠΊΠ΅Ρ€ΠΎΠΌ ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ Ρ€Π΅ΡΠΏΡƒΠ±Π»ΠΈΠΊΠ°Π½ΡΠΊΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΠΈ. А ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ²Π°ΠΊΠ΅Ρ€Ρ‹ — пацифисты, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ рСспубликанцы — сторонники Π²ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. На Π»ΠΈΡ†ΠΎ явная коллизия. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… языках, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ООП ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… мноТСствСнноС наслСдованиС (Π° ΠΎΠ½ΠΎ допустимо Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ… языках ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, язык Java, ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнный Π² ΡΡ„Π΅Ρ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнного наслСдования), ΠΎΠ½Π° прСодолСваСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½ΠΎ Π² Π»ΡŽΠ±ΠΎΠΌ случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ остороТным ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ситуаций.

ΠŸΡ€ΠΈ наслСдовании ΠΎΠ΄Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Π’Π°ΠΊ, класс транспортных срСдств Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ двиТСния. Π’ ΠΊΠ»Π°ΡΡΠ°Ρ…-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½: Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π·Π΄ΠΈΡ‚ΡŒ, самолСт — Π»Π΅Ρ‚Π°Ρ‚ΡŒ, ΠΊΠΎΡ€Π°Π±Π»ΡŒ — ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сСмантики ΠΌΠ΅Ρ‚ΠΎΠ΄Π° называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ — это Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСйствий Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Скста, Π² Ρ‡Π°ΡΡ‚ности, ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ классу. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ рСализуСтся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. НапримСр, Π² C++ ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π”Ρ€ΡƒΠ³ΠΈΠΌ основным Π²ΠΈΠ΄ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ являСтся агрСгация. Она ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ класс содСрТит Π² ΡΠ΅Π±Π΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠ² (составных частСй, подсистСм) Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Π’Π°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ состоит ΠΈΠ· ΠΊΡƒΠ·ΠΎΠ²Π°, двигатСля, трансмиссии ΠΈ Ρ‚. ΠΏ., Π° Π² ΡΠΎΡΡ‚Π°Π² ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ устройства входят ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊ, ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΈ Π°Π½Ρ‚Π΅Π½Π½ΠΎ-Ρ„ΠΈΠ΄Π΅Ρ€Π½ΠΎΠ΅ устройство. Π’ UML Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ½ΠΈΠΈ с Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹ΠΌ Ρ€ΠΎΠΌΠ±ΠΎΠΌ Π½Π° ΠΊΠΎΠ½Ρ†Π΅. АгрСгация ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΡ€Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит ΠΎΠ΄ΠΈΠ½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŽ. ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ Π΄Π²ΡƒΡ… Π΄ΠΎ ΠΏΡΡ‚ΠΈ Π΄Π²Π΅Ρ€Π΅ΠΉ. Π’ ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ каТдая Π΄Π²Π΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ лишь ΠΎΠ΄Π½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŽ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠŸΡƒΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ D ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ f1() ΠΈ f2() (рис. 2). Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈ, Π½Π°Π΄ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ А, Π·Π°Ρ‚Π΅ΠΌ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ записываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

A.C.

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° D, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠΌ C, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ f1() ΠΈ f2():

A.C.D.f1()

A.C.D.f2()

Рис. 2. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ прСдставлСниС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

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

БущСствуСт Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ слоТным ΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹ΠΌ. Но ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ная дСкомпозиция являСтся Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ СстСствСнной ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятной, Ρ‡Π΅ΠΌ алгоритмичСская, которая Π±Π΅Π·Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ властвовала Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ООП. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ основныС понятия ООП ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… областСй Π·Π½Π°Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ философия, Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΡΠ΅ΠΌΠΈΠΎΡ‚ΠΈΠΊΠ°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π² особых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ касаСтся сути этих понятий. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ способ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (прСдставлСния) являСтся СстСствСнным, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ся Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π΅ΠΊΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования ΠΎΠ½ Π·Π°Π½ΡΠ» ΠΏΠΎΠ΄ΠΎΠ±Π°ΡŽΡ‰Π΅Π΅ мСсто ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, практичСски всСми соврСмСнными алгоритмичСскими языками.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ основы ООП, слСдуСт Π΄Π°Ρ‚ΡŒ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ языков программирования ΠΏΠΎ ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. БущСствуСт 3 класса языков, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ связанных с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ:

1. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅

2. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅

3. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ООП, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ прСдставитСлями Ρ‚Π°ΠΊΠΈΡ… языков ΡΠ²Π»ΡΡŽΡ‚ΡΡ C++, Java, C#.

К ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ языкам относят языки ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ наслСдованиС ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚, Π½ΠΎ Π½Π΅ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ прСдставитСлСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… языков ΡΠ²Π»ΡΡŽΡ‚ΡΡ Visual Basic Π΄ΠΎ ΡˆΠ΅ΡΡ‚ΠΎΠΉ вСрсии Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ada.

К ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам программирования относятся языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². JavaScript относится ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам программирования. Π’Π°ΠΊ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого языка ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ многочислСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (DOM), с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, согласно послСдним стандартам, прСдписываСтся ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ содСрТимоС Π²Π΅Π±-страницы.

РСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Object Pascal

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Β· НаимСнованиС исполняСмого Ρ„Π°ΠΉΠ»Π°: Generator. exe

Β· Π Π°Π·ΠΌΠ΅Ρ€ исполняСмого Ρ„Π°ΠΉΠ»Π°: 7,70 ΠœΠ±Π°ΠΉΡ‚.

Β· Иконка исполняСмого Ρ„Π°ΠΉΠ»Π°:

Β· ВСрсия Ρ„Π°ΠΉΠ»Π°: 1,0

Β· ВСрсия ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°: 1,0

Β· Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ имя: Generator

Β· Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π°: Generator. exe

Β· НазваниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°: Generator

Β· ОписаниС вСрсии Ρ„Π°ΠΉΠ»Π°: 1,0

Β· ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ: Π©Π΅Π»ΠΊΠ°Π½ΠΎΠ² Π ΠΎΠΌΠ°Π½

Β· Π―Π·Ρ‹ΠΊ: Русский (Russian)

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для функционирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Β· ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма: Windows XP, Windows 7

Π―Π·Ρ‹ΠΊΠΈ программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Β· DelphiXE2(Object Pascal);

ΠšΠ»Π°ΡΡΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… Π·Π°Π΄Π°Ρ‡:

Β· ГСнСрация ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ;

Β· Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

НазначСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: гСнСрация ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ скрытия содСрТимого Ρ„Π°ΠΉΠ»Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ.

БвСдСния ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ограничСниях Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

Β· ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах сСмСйства Windows.

Β· Для функционирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» «settings.stgg» (Ρ„Π°ΠΉΠ» настроСк)

Рис. 3. Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Β· Generate — Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ пароля;

Β· Coder — ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ пароля;

Β· Decoder — Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ пароля.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· ΠΏΡΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΈΠ½Ρ‚СрфСйс. Из Π½Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π²ΡΠ΅Ρ… этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ настроСк ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈ гСнСрирования ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ модуля.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Бвязи ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ся ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠŸΠž ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΅Ρ‘ Ρ„ункционирования Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСдства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм сСмСйства Windows.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ тСхничСскиС срСдства. Π’ ΡΠΎΡΡ‚Π°Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… тСхничСских срСдств Π²Ρ…ΠΎΠ΄ΠΈΡ‚: IBM PC совмСстимый с ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ΠΎΠΌ 80 386 ΠΈ Π²Ρ‹ΡˆΠ΅, ΠžΠ—Π£ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32 ΠœΠ±Π°ΠΉΡ‚, 16 ΠœΠ‘ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΠΈ, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ свободного мСста Π½Π° ΠΆΠ΅ΡΡ‚ΠΊΠΎΠΌ дискС 15 ΠœΠ±Π°ΠΉΡ‚.

Π’Ρ‹Π·ΠΎΠ² ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ Π·Π°ΠΏΡƒΡΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСтся способами, Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈ запускС считываСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

«.psw"-Ρ„Π°ΠΉΠ», содСрТащий лист с ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌΠΈ (По Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

«Settings.stgg» — Ρ„Π°ΠΉΠ», содСрТащий настройки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

«.psw"-Ρ„Π°ΠΉΠ», содСрТащий лист с ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌΠΈ (По Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

«Settings.stgg» — Ρ„Π°ΠΉΠ», содСрТащий настройки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. — Delphi 7. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ пособиС. — «Π‘ΠΈΠ½ΠΎΠΌ», 2004.

2. Π”Π°Ρ€Π°Ρ…Π²Π΅Π»ΠΈΠ΄Π·Π΅ П. Π“., ΠœΠ°Ρ€ΠΊΠΎΠ² Π•. П. — ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Delphi 7, «Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³», 2003.

3. ΠšΡƒΠ΄Ρ€ΡΠ²Ρ†Π΅Π² А. Π‘. — ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Delphi. Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС, «Π“ΠžΠ£ Π’ΠŸΠž Π‘ΠŸΠ±Π“Π’Π£Π ΠŸ. — Π‘Пб», 2007.

4. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½ Н. Π‘. — ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Delphi 7. — «Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³», 2007.

5. Π€Π»Π΅Π½ΠΎΠ² М. Π•. — Π‘иблия Delphi. 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, «Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³», 2008.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

ОписаниС основной Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: 1 — строка мСню; 2 — Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ; 3 — ΠΏΠΎΠ»Π΅ бСзопасности Ρ„Π°ΠΉΠ»Π°; 4 — ΠΊΠ½ΠΎΠΏΠΊΠ° добавлСния строк; 5 — настройки бСзопасности Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2

Бтруктурная схСма

ΠœΠΎΠ΄ΡƒΠ»ΡŒ интСрфСса — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ настроСк — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈ гСнСрирования ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΡˆΠΈΡ„рования.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ символов.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΡ… Π½Π° Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ — ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΡ… Π½Π° Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ открываСтся Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ обращаСтся Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ настроСк, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ….

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ модуля Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Π²ΠΎΠ΄ настроСк с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ происходит Π²Ρ‹Π²ΠΎΠ΄ настроСк Π½Π° ΡΠΊΡ€Π°Π½.

ΠŸΡ€ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ происходит гСнСрация ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… пароля Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ ΠΎΡ‚правляСт Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

Π’ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Π²ΠΎΠ΄ Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρƒ Ρ„Π°ΠΉΠ»Π° с ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ модуля происходит Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° ΡΠΊΡ€Π°Π½.

ΠŸΡ€ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сохраняСт сгСнСрированныС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ся Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Π³Π΄Π΅ происходит ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ пароля.

Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ отправляСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ ΠΎΡ‚правляСтся Π² ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌΠΈ.

ΠŸΡ€ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ сгСнСрированныС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ся Π² Ρ„Π°ΠΉΠ» с ΠΏΠ°Ρ€ΠΎΠ»ΡΠΌΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ отправляСтся ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π΅ΡˆΠΈΡ„Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π°Π·Π°Π΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4

Основная Ρ„ΠΎΡ€ΠΌΠ°:

unit kurs;

interface

uses

Winapi.Windows, Winapi. Messages, System. SysUtils, System. Variants, System. Classes, Vcl. Graphics,

Vcl.Controls, Vcl. Forms, Vcl. Dialogs, Vcl. ImgList, Vcl. StdCtrls, Vcl. Grids,

Vcl.Imaging.jpeg, Vcl. ExtCtrls, Vcl. Menus, Vcl.Imaging.pngimage, Clipbrd,

setting, generate, coder, decoder, about, ShellApi;

type Pass=Record

flag:boolean;

password:string[100];

dlin:integer;

zamet:string[100];

End;

type

TForm1 = class (TForm)

Tablica: TStringGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N9: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

AddPassword: TButton;

Image1: TImage;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Label5: TLabel;

Label4: TLabel;

Label3: TLabel;

Label2: TLabel;

Label1: TLabel;

SaveButton: TButton;

NewPassword2: TEdit;

NewPassword1: TEdit;

LastPassword: TEdit;

Label6: TLabel;

Label7: TLabel;

Securitybutton: TButton;

Button1: TButton;

PasswordEdit: TEdit;

PasswordButton: TButton;

InformationLabel: TLabel;

Label8: TLabel;

procedure FormCreate (Sender: TObject);

procedure AddPasswordClick (Sender: TObject);

procedure TablicaSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure TablicaMouseWheelDown (Sender: TObject; Shift: TShiftState;

MousePos: TPoint; var Handled: Boolean);

procedure TablicaMouseWheelUp (Sender: TObject; Shift: TShiftState;

MousePos: TPoint; var Handled: Boolean);

procedure N3Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure SecuritybuttonClick (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure SaveButtonClick (Sender: TObject);

procedure PasswordButtonClick (Sender: TObject);

procedure N13Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure N12Click (Sender: TObject);

private

{ Private declarations }

public

end;

var

Form1: TForm1;

Gener: TGenerate;

Code: TCode;

Decode: TDecode;

i, n, pis:integer;

f: file of Pass;

names, namer, confrm, reader, reader2, j:shortstring;

pswchange, newdoc: boolean;

zap:Pass;

implementation

{$R *.dfm}

procedure TForm1. AddPasswordClick (Sender: TObject);

begin

Tablica.RowCount:=Tablica.RowCount+1;

Tablica.cells[2,Tablica.RowCount-1]: ='?';

Tablica.cells[3,Tablica.RowCount-1]:='d';

Tablica.cells[5,Tablica.RowCount-1]:='?';

end;

procedure TForm1. SaveButtonClick (Sender: TObject);

begin

if lastpassword. text='' then lastpassword. Text:='';

if newdoc=false then

begin

assignfile (f, namer);

reset (f);

seek (f, 0);

read (f, zap);

if lastpassword. Text<>decode.cipher (zap.password, zap. dlin) then informationlabel. Caption:='Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅Π²Π΅Ρ€Π΅Π½'

else begin

if newpassword1. Text=newpassword2.text then

begin

seek (f, 0);

zap.password:=code.cipher (newpassword1.text, length (newpassword1.text));

zap.dlin:=length (newpassword1.text);

write (f, zap);

newpassword1.Text:='';

newpassword2.Text:='';

lastpassword.Text:='';

informationlabel.Caption:='Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΎ';

end

else informationlabel. Caption:='ΠŸΠ°Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚';

end; pswchange:=true;

end

else

if newpassword1. Text=newpassword2.text then

if SaveDialog1. Execute then

begin

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:=code.cipher (newpassword1.text, length (newpassword1.text));

zap.dlin:=length (newpassword1.text);

write (f, zap);

newpassword1.Text:='';

newpassword2.Text:='';

lastpassword.Text:='';

informationlabel.Caption:='Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΎ';

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; end

else informationlabel. Caption:='ΠŸΠ°Ρ€ΠΎΠ»ΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚';

newdoc:=false; pswchange:=false;

end;

procedure TForm1. SecuritybuttonClick (Sender: TObject);

begin

Form1.ClientHeight:=509;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

Form1.ClientHeight:=296;

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

begin

if PSWChange=true then

begin

case MessageBox (Handle, PChar ('ИзмСнСния Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½Ρ‹. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π±Π΅Π· сохранСния?'), PChar ('Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅'), MB_YESNOCANCEL+MB_APPLMODAL) of

IDYES:begin end;

IDNO: begin

if SaveDialog1. Execute then

begin

action:=caNone;

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:='';

zap.dlin:=0;

write (f, zap);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; pswchange:=false; newdoc:=true; end

end;

IDCANCEL: begin action:=caNone; end;

end;

end;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

if not FileExists (ExtractFilePath (ParamStr (0)) + 'settings.stgg') then begin

showmessage ('НСт Ρ„Π°ΠΉΠ»Π° настроСк. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°Ρ…одится Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈΠ»ΠΈ пСрСустановитС Π΅Ρ‘');

Halt;

end;

newdoc:=true; pis:=1;

lastpassword.PasswordChar := '*';

newpassword1.PasswordChar := '*';

newpassword2.PasswordChar := '*';

passwordedit.passwordchar:= '*';

Form1.ClientHeight:=296;

Tablica.Options:=Tablica.Options-[goEditing];

Tablica.cells[0,0]:='Π€Π»Π°Π³';

Tablica.ColWidths[0]:=42;

Tablica.cells[1,0]:='ΠŸΠ°Ρ€ΠΎΠ»ΡŒ';

Tablica.cells[2,0]:='ГСнСрация';

Tablica.ColWidths[2]:=76;

for i := 1 to Tablica. rowcount do

Tablica.cells[2,I]: ='?';

Tablica.cells[3,0]:='Π’ Π±ΡƒΡ„Π΅Ρ€';

Tablica.ColWidths[3]: =66;

for i := 1 to Tablica. rowcount do

Tablica.cells[3,I]: ='d';

Tablica.cells[4,0]:='Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°';

Tablica.ColWidths[4]:=120;

Tablica.Cells[5,0]:='Π£Π΄Π°Π»ΠΈΡ‚ΡŒ';

for i:=1 to tablica. rowcount do

tablica.cells[5,i]: ='?';

end;

procedure TForm1. N12Click (Sender: TObject);

begin

ShellExecute (Form1.Handle, nil, PChar (ExtractFilePath (ParamStr (0)) + 'help.doc'), nil, nil, SW_RESTORE);

end;

procedure TForm1. N13Click (Sender: TObject);

begin

Form2.ShowModal;

end;

procedure TForm1. N2Click (Sender: TObject);

begin

if pis <>0 then begin

if PSWChange=true then

begin

case MessageBox (Handle, PChar ('ИзмСнСния Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½Ρ‹. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π±Π΅Π· сохранСния?'), PChar ('Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅'), MB_YESNOCANCEL+MB_APPLMODAL) of

IDYES:begin end;

IDNO: begin

if SaveDialog1. Execute then

begin

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:='';

zap.dlin:=0;

write (f, zap);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; pswchange:=false; newdoc:=true; end

end;

IDCANCEL: begin exit; end;

end;

end; end;

tablica.RowCount:=10;

for i:=1 to Tablica. RowCount do

Tablica.Rows[i]. Clear;

Tablica.RowCount:=10;

for i := 1 to Tablica. rowcount do

Tablica.cells[2,I]: ='?';

for i := 1 to Tablica. rowcount do

Tablica.cells[3,I]: ='d';

end;

procedure TForm1. N3Click (Sender: TObject);

begin

if pis<>0 then begin if PSWChange=true then

begin

case MessageBox (Handle, PChar ('ИзмСнСния Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½Ρ‹. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π±Π΅Π· сохранСния?'), PChar ('Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅'), MB_YESNOCANCEL+MB_APPLMODAL) of

IDYES:begin end;

IDNO: begin

if SaveDialog1. Execute then

begin

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:='';

zap.dlin:=0;

write (f, zap);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; newdoc:=false; pswchange:=false; end

end;

IDCANCEL: begin exit; end;

end;

end; end;

if OpenDialog1. execute then

begin

namer:=OpenDialog1.FileName;

AssignFile (f, namer);

reset (f);

seek (f, 0);

read (f, zap);

if filesize (f)=1 then tablica. RowCount:=2

else

if filesize (f)-1<>Tablica.RowCount then

begin

if zap. dlin<>0 then n:=1 else n:=0;

Tablica.RowCount:=filesize (f);

seek (f, 1);

for i:=1 to filesize (f)-1 do

begin

read (f, zap);

if zap. flag=false then tablica. Cells[0,i]: =''

else tablica. Cells[0,i]: ='?';

if n=1 then begin tablica. cells[1,i]: ='Ай-ай-ай!'; pis:=0; end

else begin tablica. cells[1,i]: =decode.cipher (zap.password, zap. dlin); pis:=1; end;

tablica.Cells[4,i]: =zap.zamet;

end;

newdoc:=false;

pswchange:=false;

end;

end;

end;

procedure TForm1. N4Click (Sender: TObject);

begin

if pis <>0 then if newdoc=false then begin

AssignFile (f, namer);

reset (f);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end;

end

else if SaveDialog1. Execute then

begin

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:='';

zap.dlin:=0;

write (f, zap);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; end;

pswchange:=false; newdoc:=false;

end;

procedure TForm1. N5Click (Sender: TObject);

begin

if pis <>0 then if SaveDialog1. Execute then

begin

namer:=SaveDialog1.FileName+'.psw';

AssignFile (f, namer);

rewrite (f);

seek (f, 0);

zap.password:='';

zap.dlin:=0;

write (f, zap);

seek (f, 1);

for I:=1 to Tablica. RowCount do

begin

if ((Tablica.Cells[0,i]='')

and (tablica.Cells[1,i]='')

and (tablica.Cells[4,i]='')) then continue

else begin

if Tablica. Cells[0,i]='' then zap. flag:=false

else zap. flag:=true;

zap.password:=code.cipher (tablica.Cells[1,i], length (tablica.Cells[1,i]));

zap.dlin:=length (tablica.Cells[1,i]);

zap.zamet:=tablica.Cells[4,i];

write (f, zap);

end;

end; newdoc:=false; pswchange:=false; end;

end;

procedure TForm1. N9Click (Sender: TObject);

begin

Settings.ShowModal;

end;

procedure TForm1. PasswordButtonClick (Sender: TObject);

begin

seek (f, 0);

read (f, zap);

if passwordedit. text=decode.cipher (zap.password, zap. dlin) then

for i:=1 to filesize (f)-1 do begin pis:=1; read (f, zap); tablica. cells[1,i]: =decode.cipher (zap.password, zap. dlin); label8. caption:=''; end

else label8. caption:='ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ';

end;

procedure TForm1. TablicaMouseWheelDown (Sender: TObject; Shift: TShiftState;

MousePos: TPoint; var Handled: Boolean);

begin

Tablica.Perform (WM_VScroll, SB_LINEDOWN, 0); Handled:=True;

end;

procedure TForm1. TablicaMouseWheelUp (Sender: TObject; Shift: TShiftState;

MousePos: TPoint; var Handled: Boolean);

begin

Tablica.Perform (WM_VScroll, SB_LINEUP, 0); Handled:=True;

end;

procedure TForm1. TablicaSelectCell (Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

begin

if (ACol=0) then

begin

pswchange:=true;

Tablica.Options:=Tablica.Options-[goEditing];

if Tablica. cells[ACol, ARow]='?' then Tablica. cells[ACol, ARow]: =''

else Tablica. cells[ACol, ARow]: ='?';

end;

if (Acol=1) then Tablica. Options:=Tablica.Options-[goEditing];

if (Acol=2) then

begin

Tablica.Options:=Tablica.Options-[goEditing];

if pis=1 then begin

pswchange:=true; Tablica. Cells[Acol-1,Arow]: =gener.password (setting.symbol, setting. rate);

end;

end;

if (Acol=3) then

begin

Tablica.Options:=Tablica.Options-[goEditing];

ClipBoard.AsText:=Tablica.Cells[ACol-2,Arow];

end;

if (Acol=4) then begin Tablica. Options:=Tablica.Options+[goEditing]; pswchange:=true; end;

if (ACol=5) then begin Tablica. Options:=Tablica.Options-[goEditing]; pswchange:=true;

Tablica.Cells [0,arow]: =''; Tablica. Cells [1,arow]: =''; Tablica. Cells [4,arow]: ='';

end;end;

end.

Π€ΠΎΡ€ΠΌΠ° настроСк:

unit setting;

interface

uses

Winapi.Windows, Winapi. Messages, System. SysUtils, System. Variants, System. Classes, Vcl. Graphics,

Vcl.Controls, Vcl. Forms, Vcl. Dialogs, Vcl. StdCtrls, Vcl. ComCtrls,

Vcl.Imaging.pngimage, Vcl. ExtCtrls, Vcl. Grids;

type

TSettings = class (TForm)

Morda: TImage;

SymbolBar: TTrackBar;

RateBar: TTrackBar;

LabelForSymbolBar: TLabel;

LabelForRateBar: TLabel;

UserNoticeSymbolBar: TLabel;

UserNoticeRateBar: TLabel;

SaveButton: TButton;

LabelForSymbols: TLabel;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Label3: TLabel;

StringGrid1: TStringGrid;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure SymbolBarChange (Sender: TObject);

procedure RateBarChange (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure SaveButtonClick (Sender: TObject);

procedure StringGrid1KeyPress (Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Settings: TSettings;

symbol, rate, i: integer;

f: file of shortstring;

names, j: shortstring;

const

Dig = ('0.9');

implementation

{$R *.dfm}

procedure TSettings. FormCreate (Sender: TObject);

begin

names:= ExtractFilePath (ParamStr (0)) + 'settings.stgg';

AssignFile (f, names);

reset (f);

read (f, j);

symbolbar.Position:=strtoint (j);

read (f, j);

ratebar.Position:=strtoint (j);

read (f, j);

edit1.Text:=j;

read (f, j);

edit2.text:=j;

read (f, j);

edit3.text:=j;

for i:=0 to 9 do

begin

read (f, j);

StringGrid1.Cells[0,i]: =j;

end;

for i:=0 to 9 do

begin

read (f, j);

StringGrid1.Cells[1,i]: =j;

end;

case RateBar. Position of

0:UserNoticeRateBar.Caption:='1 Π·Π½Π°ΠΊ';

1:UserNoticeRateBar.Caption:='2 Π·Π½Π°ΠΊΠ°';

2:UserNoticeRateBar.Caption:='3 Π·Π½Π°ΠΊΠ°';

3:UserNoticeRateBar.Caption:='4 Π·Π½Π°ΠΊΠ°';

4:UserNoticeRateBar.Caption:='5 Π·Π½Π°ΠΊΠΎΠ²';

5:UserNoticeRateBar.Caption:='6 Π·Π½Π°ΠΊΠΎΠ² ';

6:UserNoticeRateBar.Caption:='7 Π·Π½Π°ΠΊΠΎΠ²';

7:UserNoticeRateBar.Caption:='8 Π·Π½Π°ΠΊΠΎΠ²';

8:UserNoticeRateBar.Caption:='9 Π·Π½Π°ΠΊΠΎΠ² ';

9:UserNoticeRateBar.Caption:='10 Π·Π½Π°ΠΊΠΎΠ²';

10:UserNoticeRateBar.Caption:='11 Π·Π½Π°ΠΊΠΎΠ²';

11:UserNoticeRateBar.Caption:='12 Π·Π½Π°ΠΊΠΎΠ²';

12:UserNoticeRateBar.Caption:='13 Π·Π½Π°ΠΊΠΎΠ²';

13:UserNoticeRateBar.Caption:='14 Π·Π½Π°ΠΊΠΎΠ²';

14:UserNoticeRateBar.Caption:='15 Π·Π½Π°ΠΊΠΎΠ²';

15:UserNoticeRateBar.Caption:='16 Π·Π½Π°ΠΊΠΎΠ²';

16:UserNoticeRateBar.Caption:='17 Π·Π½Π°ΠΊΠΎΠ²';

17:UserNoticeRateBar.Caption:='18 Π·Π½Π°ΠΊΠΎΠ²';

18:UserNoticeRateBar.Caption:='19 Π·Π½Π°ΠΊΠΎΠ²';

19:UserNoticeRateBar.Caption:='20 Π·Π½Π°ΠΊΠΎΠ²';

end;

case SymbolBar. Position of

0:UserNoticeSymbolBar.Caption:='Волько Ρ†ΠΈΡ„Ρ€Ρ‹';

1:UserNoticeSymbolBar.Caption:='Волько строчныС латинскиС Π±ΡƒΠΊΠ²Ρ‹';

2:UserNoticeSymbolBar.Caption:='Волько Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

3:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

4:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹ ΠΈ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

5:UserNoticeSymbolBar.Caption:='Π—Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

6:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹, Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

end;

end;

procedure TSettings. RateBarChange (Sender: TObject);

begin

rate:=RateBar.Position;

case RateBar. Position of

0:UserNoticeRateBar.Caption:='1 Π·Π½Π°ΠΊ';

1:UserNoticeRateBar.Caption:='2 Π·Π½Π°ΠΊΠ°';

2:UserNoticeRateBar.Caption:='3 Π·Π½Π°ΠΊΠ°';

3:UserNoticeRateBar.Caption:='4 Π·Π½Π°ΠΊΠ°';

4:UserNoticeRateBar.Caption:='5 Π·Π½Π°ΠΊΠΎΠ²';

5:UserNoticeRateBar.Caption:='6 Π·Π½Π°ΠΊΠΎΠ² ';

6:UserNoticeRateBar.Caption:='7 Π·Π½Π°ΠΊΠΎΠ²';

7:UserNoticeRateBar.Caption:='8 Π·Π½Π°ΠΊΠΎΠ²';

8:UserNoticeRateBar.Caption:='9 Π·Π½Π°ΠΊΠΎΠ² ';

9:UserNoticeRateBar.Caption:='10 Π·Π½Π°ΠΊΠΎΠ²';

10:UserNoticeRateBar.Caption:='11 Π·Π½Π°ΠΊΠΎΠ²';

11:UserNoticeRateBar.Caption:='12 Π·Π½Π°ΠΊΠΎΠ²';

12:UserNoticeRateBar.Caption:='13 Π·Π½Π°ΠΊΠΎΠ²';

13:UserNoticeRateBar.Caption:='14 Π·Π½Π°ΠΊΠΎΠ²';

14:UserNoticeRateBar.Caption:='15 Π·Π½Π°ΠΊΠΎΠ²';

15:UserNoticeRateBar.Caption:='16 Π·Π½Π°ΠΊΠΎΠ²';

16:UserNoticeRateBar.Caption:='17 Π·Π½Π°ΠΊΠΎΠ²';

17:UserNoticeRateBar.Caption:='18 Π·Π½Π°ΠΊΠΎΠ²';

18:UserNoticeRateBar.Caption:='19 Π·Π½Π°ΠΊΠΎΠ²';

19:UserNoticeRateBar.Caption:='20 Π·Π½Π°ΠΊΠΎΠ²';

end;

end;

procedure TSettings. SaveButtonClick (Sender: TObject);

begin

seek (f, 0);

j:=inttostr (symbolbar.Position);

write (f, j);

j:=inttostr (ratebar.Position);

write (f, j);

j:=edit1.Text;

write (f, j);

j:=edit2.text;

write (f, j);

j:=edit3.text;

write (f, j);

for i:=0 to 9 do

begin

j:=StringGrid1.Cells[0,i];

write (f, j);

end;

for i:=0 to 9 do

begin

j:=StringGrid1.Cells[1,i];

write (f, j);

end;

close;

end;

procedure TSettings. StringGrid1KeyPress (Sender: TObject; var Key: Char);

begin

if not (key in ['0'.'9',#8]) then key:=#0;

end;

procedure TSettings. SymbolBarChange (Sender: TObject);

begin

symbol:=SymbolBar.Position;

case SymbolBar. Position of

0:UserNoticeSymbolBar.Caption:='Волько Ρ†ΠΈΡ„Ρ€Ρ‹';

1:UserNoticeSymbolBar.Caption:='Волько строчныС латинскиС Π±ΡƒΠΊΠ²Ρ‹';

2:UserNoticeSymbolBar.Caption:='Волько Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

3:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

4:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹ ΠΈ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

5:UserNoticeSymbolBar.Caption:='Π—Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

6:UserNoticeSymbolBar.Caption:='Π¦ΠΈΡ„Ρ€Ρ‹, Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ латинскиС Π±ΡƒΠΊΠ²Ρ‹';

end;

end;

end.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ:

unit generate;

interface

uses classes, Sysutils;

type

TGenerate=class (TObject)

private

public

function password (symbolpassword, ratepassword: integer):string;

end;

implementation

var schet: integer;

gener:string;

nabor, name: string;

nabor1, nabor2, nabor3: shortstring;

names: shortstring;

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ