рд╕рдВрднрд╡рддрдГ C ++ рднрд╛рд╖рд╛ рдХреЗ рд╕рднреА рдкреНрд░рд╢рдВрд╕рдХ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ C #, рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВ: рдХреНрдпреЛрдВ рдкреНрд▓рд╕рд╕ рдореЗрдВ рдХреЛрдИ рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рдЧрдИред рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реБрдП, рд╕реНрдЯреНрд░реЙрдиреНрдЬрдЕрдк рдФрд░ рдЕрдВрдд рдореЗрдВ рдЧреБрдЧрд▓реА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
Microsoft рд╕реЗ , рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЦреЛрдЬ рд╣реЛрдЧреАред
рд▓реЗрдЦ рдореЗрдВ рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд┐рд▓реЗрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдбреЙрдЯ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ ->) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рджреЛрдиреЛрдВ рд▓реЗрдЦрди рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛрд╖реНрдардХ рдХреЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХреЗред рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
a.property = value;
MyClass var = a.property;
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд░ рдФрд░ рдЧреЗрдЯреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдпрд╣ рднреА рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ a.property рдкреНрд░реЙрдкрд░реНрдЯреА рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рд╕реЗрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП = рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдПрдХ рдЧреЗрдЯ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рднреАред рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд╕реНрд╡рдпрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рднрд╛рд░рд┐рдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдЯрд╛рдЗрдк рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдпрд╣ рд╕рдм рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рд╕рдВрдкрддреНрддрд┐ рдХреА рдПрдХ рдФрд░ рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛рдж рдЖрдИ: рдпрд╣ рд░реАрдб рдУрдирд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕реЗрдЯрд░ рдФрд░ рдЧреЗрдЯреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдФрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ, рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдкрдврд╝рдирд╛, рд▓рд┐рдЦрдирд╛, рдХреЗрд╡рд▓ рд▓рд┐рдЦрдирд╛) рдПрдХ рд╣реА рдирд╛рдо рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐, рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рднрд┐рдиреНрдирддрд╛, рддрдерд╛рдХрдерд┐рдд рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
#pragma once #define NULL 0 class ReadOnly; class WriteOnly; class ReadWrite; template <typename Type, typename Owner,typename Access> class Property { }; template<typename Type, typename Owner> class Property<typename Type, typename Owner, ReadWrite> { protected: typedef Type (Owner::*getter)(); typedef void (Owner::*setter)(Type); Owner * m_owner; getter m_getter; setter m_setter; public: // . . operator Type() { return (m_owner->*m_getter)(); } // . . void operator =(Type data) { (m_owner->*m_setter)(data); } Property() : m_owner(NULL), m_getter(NULL), m_setter(NULL) { } Property(Owner * const owner, getter getmethod, setter setmethod) : m_owner(owner), m_getter(getmethod), m_setter(setmethod) { } void init(Owner * const owner, getter getmethod, setter setmethod) { m_owner = owner; m_getter = getmethod; m_setter = setmethod; } }; template<typename Type, typename Owner> class Property<typename Type, typename Owner, ReadOnly> { protected: typedef Type (Owner::*getter)(); Owner * m_owner; getter m_getter; public: // . . operator Type() { return (m_owner->*m_getter)(); } Property() : m_owner(NULL), m_getter(NULL) { } Property(Owner * const owner, getter getmethod) : m_owner(owner), m_getter(getmethod) { } void init(Owner * const owner, getter getmethod) { m_owner = owner; m_getter = getmethod; } }; template<typename Type, typename Owner> class Property<typename Type, typename Owner, WriteOnly> { protected: typedef void (Owner::*setter)(Type); Owner * m_owner; setter m_setter; public: // . . void operator =(Type data) { (m_owner->*m_setter)(data); } Property() : m_owner(NULL), m_setter(NULL) { } Property(Owner * const owner, setter setmethod) : m_owner(owner), m_setter(setmethod) { } void init(Owner * const owner, setter setmethod) { m_owner = owner; m_setter = setmethod; } };
рдХреЗ рдЙрдкрдпреЛрдЧ
рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдлрд╝рд╛рдЗрд▓ TestClass.h
#pragma once #include "Property.h" class TestClass { public: TestClass(void); ~TestClass(void); void _setterRW(int a); int _getterRW(); Property<int, TestClass, ReadWrite> testRW; int _getterRO(); Property<int, TestClass, ReadOnly> testRO; void _setterWO(int a); Property<int, TestClass, WriteOnly> testWO; private: int propRW; int propRO; int propWO; };
рдлрд╝рд╛рдЗрд▓ TestClass.cpp
#include "TestClass.h" TestClass::TestClass(void) { testRW.init(this, &TestClass::_getterRW, &TestClass::_setterRW); testRO.init(this, &TestClass::_getterRO); propRO = 123; testWO.init(this, &TestClass::_setterWO); } int TestClass::_getterRW() { return propRW; } void TestClass::_setterRW(int a) { propRW = a; } int TestClass::_getterRO() { return propRO; } void TestClass::_setterWO(int a) { propWO = a; } TestClass::~TestClass(void) { }
рдлрд╝рд╛рдЗрд▓ main.cpp
#include "TestClass.h" #include "stdio.h" int main() { TestClass t; t.testRW = 15; int a = t.testRW; t.testWO = 34;
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрдЭреЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓рд╛ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╛рдиреА рд░рди рдЯрд╛рдЗрдо рдкрд░ред рддреАрд╕рд░рд╛ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдЪреМрдерд╛, рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдЯрд┐рдк рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рди рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рдХреБрдЫ рд╕рд╡рд╛рд▓ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдХреНрд╖рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рд╖рдп рдмрд╣реБрдд рдореИрд▓рд╛ рд╣реИ, рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдереЛрдбрд╝рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣
рдпрд╣рд╛рдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛
рд╣реИ , рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдЬ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА:
www.rsdn.ru/article/vcpp/props.xml - рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ред
www.rsdn.ru/forum/cpp/854559.1.aspx - рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдЪрд╛рд░ред
rsdn.ru/article/cpp/fastdelegate.xml - C ++ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдгред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде
рдпрд╣рд╛рдВ рд╕реВрддреНрд░ред
рдпрд╣рд╛рдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдкреНрд░реЛрдЬреЗрдХреНрдЯред
рдпрд╣ рдкрд╛рда
CC-BY рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИред
рдореВрд▓ рд▓реЗрдЦ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╕рдЪреЗрдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╖рдп рд╣реИрдмреНрд░реЛрдЧреНрд░рд╛рдлреА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрд┐рд╕ рд╕рд╛рдЗрдЯ рдкрд░ рд▓реЗрдЦ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЖрдЧрдВрддреБрдХреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рдЖрдордж рднреА рдЭреЗрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред