рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рда рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдереА - 6-7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдЦреБрдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХрднреА-рдХрднреА рдпреВрдирд┐рдХреНрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬреЛ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдирд┐рдХреНрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИрдВ:
- рдпреВрдирд┐рдХреНрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;
- рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдкрд╛рдард╛рддреНрдордХ рд╣реЛ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ "рд░реИрдЦрд┐рдХ" рд╢рдмреНрдж рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд░реИрдЦрд┐рдХ рдбреЗрдЯрд╛ рд╕реЗ, рдореЗрд░рд╛ рдорддрд▓рдм рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдЧрд▓реЗ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ рд╕рдВрдХреНрд░рдордг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ: рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓, UTF-8 рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рдкрд╛рда, рдЯреЛрдХрди рдХрд╛ рдПрдХ рдХреНрд░рдо, рдЖрджреЗрд╢ред рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреЛ рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░реИрдЦрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдХрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
- рдХрд┐рд╕реА рдлрд╛рдЗрд▓ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рдирд╛,
- UTF-8 рдореЗрдВ рдбрд┐рдХреЛрдбрд┐рдВрдЧ,
- рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ
- рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
- рдкрд╛рд░реНрд╕ рдХрд░рдиреЗред
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреВрд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдХреЗред
рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЛ "рдкрд╛рдЗрдкрд▓рд╛рдЗрди" рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдХрдирд╡рд░реНрдЯрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдХреНрд╕рд░ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЯреЛрдХрди рд╣реИрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдпреЛрдЧреНрдп рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред рдирдореВрдирд╛ рдпреЛрдЬрдирд╛рдПрдВ C ++ рдореЗрдВ рджреА рдЧрдИ рд╣реИрдВ, рд╡реЗ
рд╡рд░реНрдЪреБрдЕрд▓ рдФрд░ рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕, рд╕рд╛рде рд╣реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред
рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рд░реИрдЦрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
рдЖрдЗрдП рдХрдирд╡рд░реНрдЯрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВред рд╕рд░рд▓рддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рд╕рдВрднрд╡ рд╣реИрдВ:
class Source { тАж public: T getData(); тАж }; class Sink { тАж public: void putData(T); тАж }; class Universal { тАж public: void process(); };
рдЪрд┐рддреНрд░рд╛ 1. рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдпреЛрдЬрдирд╛ред
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдПрдХ рддреБрдЪреНрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИ, "рдпреЛрдЬрдХ" (рдпрд╣ рдПрд╕рдЯреАрдбреА рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдкрдврд╝рддрд╛ рд╣реИ: рджрд╛рд▓рдЪреАрдиреА, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдбрд╛рд▓рддреА рд╣реИ, рдПрд╕рдЯреАрдбреА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ: cout, рдпрд╣ рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ):
#include <iostream> // std::cin class IntSource { public: int getData() { int next; std::cin>>next; return next; } bool good() const { return std::cin.good(); } }; // std::cout class IntSink { public: void putData(int data) { std::cout<<data<<std::endl; } }; // IntSource IntSink class IntUniversal { IntSource source; IntSink sink; public: void process() { int i1 = source.getData(); int i2 = source.getData(); if( good() ) sink.putData(i1+i2); } bool good() const { return source.good(); } }; int main() { IntUniversal belt; while( belt.good() ) belt.process(); }
рд╕реНрд░реЛрдд рдХрдирд╡рд░реНрдЯрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЕрдЧрд▓реЗ рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд┐рдВрдХ рдХрдирд╡рд░реНрдЯрд░ (рдЕрд╡рд╢реЛрд╖рдХ), рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкрд┐рдЫрд▓реЗ рдХрдирд╡рд░реНрдЯрд░ рд╕реЗ рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рд╣реИред рд╕реНрд░реЛрдд "рдорд╛рдВрдЧ рдкрд░" рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд┐рдВрдХ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИ: рдпрд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдпрд╣ рдкреНрд░рд╕рдиреНрди рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓реАрдХреГрдд "рдХрдиреНрд╡реЗрдпрд░" рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓, рдордЬрдмреВрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХрдирд╡рд░реНрдЯрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
- рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдореЗрдВ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд╕реНрд░реЛрдд рд╣реИ;
- рдЕрдВрддрд┐рдо рддрддреНрд╡ рд╕рд┐рдВрдХ рд╣реИ;
- рд╕рд┐рдВрдХ рдХрдирд╡рд░реНрдЯрд░ рд╕реАрдзреЗ рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рд╕рд┐рдВрдХ рдХрдирд╡рд░реНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрд░реЛрдд рдХрдирд╡рд░реНрдЯрд░ рд╕реАрдзреЗ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрд░реЛрдд рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ;
- рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрдиреНрд╡рд░реНрдЯрд░ рдХреЛ рд╕реНрд░реЛрдд рдФрд░ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрди рдирд┐рдпрдореЛрдВ рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣ рд╣реИ: рд╕реНрд░реЛрдд
1 , ..., рд╕реНрд░реЛрдд
n , рдпреВрдирд┐рд╡рд░реНрд╕рд▓, рд╕рд┐рдВрдХ
1 , ..., рд╕рд┐рдВрдХ
рдореА ред рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
- рд╕реНрд░реЛрдд k :: getData
- ...
- рд╕реНрд░реЛрдд n :: getData
- рдпреВрдирд┐рд╡рд░реНрд╕рд▓ :: рдкреНрд░рдХреНрд░рд┐рдпрд╛,
рдпрд╛
- рд╕рд┐рдВрдХ l :: putData
- ...
- рд╕рд┐рдВрдХ 1 :: рдбрд╛рд▓рдбрд╛рдЯрд╛
- рдпреВрдирд┐рд╡рд░реНрд╕рд▓ :: рдкреНрд░рдХреНрд░рд┐рдпрд╛ред
рдХрдиреНрд╡реЗрдпрд░ рдореЗрдВ рд╕реБрдзрд╛рд░
рд╕реНрд░реЛрдд рдФрд░ рд╕рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рднреАред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдПрдЧреА рдпрджрд┐ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рдпреВрдирд┐рд╡рд░реНрд╕рд▓, ..., рдпреВрдирд┐рд╡рд░реНрд╕рд▓ред рдЖрдк рдЗрд╕ рдЗрдЪреНрдЫрд╛ рдХреЛ рд╕рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХрдиреНрд╡реЗрдпрд░ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ: "рдЯреЗрдк" рдХреЛ рдЬреЛрдбрд╝рдХрд░ред
рдЯреЗрдк рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╣реЛрдЧрд╛ рдЬреЛ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЗ рдмреАрдЪ "рд╕реНрдерд┐рдд" рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдХрдирд╡рд░реНрдЯрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЯреЗрдк рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдЕрдЧрд▓рд╛ рдХрдирд╡рд░реНрдЯрд░ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдХрдиреНрд╡реЗрдпрд░ рдЕрдм рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдерд╛, рдЗрд╕рд▓рд┐рдП, рдмреЗрд▓реНрдЯ рдФрд░ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ "рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рдмрдВрдзрдХ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдм рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдЙрдирдХрд╛ рд╕рд░рд▓реАрдХреГрдд рджреГрд╢реНрдп рд╣реИ:
class UniversalBase { public: virtual void process()=0; }; template<class S> class UniversalSource; template<class T> class UniversalSink;
рдЪрд┐рддреНрд░рд╛ 2. рдмреЗрд╣рддрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдпреЛрдЬрдирд╛ред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд╕рд╛рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЯреЗрдк рдкрд░ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд
putOnBelt рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдирд╡рд░реНрдЯрд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЗрдХрд╛рдИ) рдФрд░ рдЕрдВрдд рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреИрд╕реЗ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣
getFromBelt рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЙрд╕реА рдпреЛрдЬрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдирдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдпрд╣ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред
#include <iostream> #inlcude <belt.h> // std::cin class IntSource : public Belt::UniversalSource<int> { public: void process() { int data; if( std::cin>>data ) putOnBelt(data); } }; // std::cout class IntSink : public Belt::UniversalSink<int> { public: void process() { if(!hasData() ) return; std::cout<<getFromBelt()<<std::endl; } }; // class IntUniversal : public Belt::Universal<int,int> { public: void process() { int i1 = getFromBelt(); int i2 = getFromBelt(); if(!good() ) return; putOnBelt(i1+i2); } }; int main() { IntSource source; IntUniversal universal; IntSink sink; (source >> universal >> sink).process(); }
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
bool UniversalSink::hasData(void); bool UniversalSink::good(void); template<class T,class S> class UnboundedBelt : public Universal<T,S> {...}; template<class T> class RightBoundedBelt : public UniversalSink<T> {...}; template<class S> LeftBoundedBelt : public UniversalSource<S> {...}; class Belt : public UniversalBase {...}; template<class T, class R, class S> UnboundedBelt<T,S> operator >> (Universal<T,R>&,Universal<R,S>&); template<class R, class S> LeftBoundedBelt<S> operator >> (UniversalSource<R>&,Universal<R,S>&); template<class T, class R> RightBoundedBelt<T> operator >> (Universal<T,R>&,UniversalSink<R>&); template<class R> Belt operator >> (UniversalSource<R>&,UniversalSink<R>&);
рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрдд рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рди рдмреВрд▓ UniversalSource :: hasData () рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдпрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ - рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдЕрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдИред
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЯреЗрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬрдорд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрдврд╝ рдЬрд╛рдПрдЧреА, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╣реБрдд рдЧрд╣рд░реА рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред
GetFromBelt рдлрд╝рдВрдХреНрд╢рди рдЯреЗрдк рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЙрд╕ рдкрд░ рд╣реИ, рдЕрдиреНрдпрдерд╛, рдпрд╣ рдкрд┐рдЫрд▓реЗ рдХрдирд╡рд░реНрдЯрд░ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЯреЗрдк рдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рджреЗрддрд╛ред putOnBelt рдмрд╕ рдЯреЗрдк рдкрд░ рдбреЗрдЯрд╛ рдбрд╛рд▓рддрд╛ рд╣реИред рдпрд╣ рдЕрдЧрд▓реЗ рдХрдирд╡рд░реНрдЯрд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рддреБрд░рдВрдд рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рджред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдлреЙрд░реНрдо рд▓реЗрддрд╛ рд╣реИ:
- ...
- рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рдмрдВрдзрдХ
- UniversalSink :: getFromBelt ()
- рдХрдиреНрд╡рд░реНрдЯрд░ n 2 :: рдкреНрд░рдХреНрд░рд┐рдпрд╛ ()
- рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рдмрдВрдзрдХ
- UniversalSink :: getFromBelt ()
- рдХрдиреНрд╡рд░реНрдЯрд░ n 1 :: рдкреНрд░рдХреНрд░рд┐рдпрд╛ ()
- рдХрдиреНрд╡реЗрдпрд░ рдкреНрд░рдмрдВрдзрдХ
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореИрдиреЗрдЬрд░ рдХреЗ рдкрд╛рд╕ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕ рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдЙрд╕реА рдХрдиреНрд╡рд░реНрдЯрд░ рдХрд╛ рдкреНрд░реЛрд╕реЗрд╕ рдлрдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкрд░ рд╣реИред (рдП)
рдЗрд╕ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг (рдФрд░ рдХреЗрд╡рд▓) рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ (рд╣рдо рдХреЗрд╡рд▓ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдХреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ):
- рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдкрд╛рд╕ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдХреЙрд▓-рд╕реНрдЯреИрдХ рдореЗрдВ рдмрд╛рдПрдВ-рд╕рдмрд╕реЗ рдХрдирд╡рд░реНрдЯрд░ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЕрдзрд┐рдХ рд╕рд╣реА рдХрдирд╡рд░реНрдЯрд░ рдЖрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдзрд┐рдХ рдмрд╛рдПрдВ рдХрдирд╡рд░реНрдЯрд░ рдПрд▓ рд╕рдВрддреБрд╖реНрдЯ рд╣реИред рдпрджрд┐ R рдХреЛ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЯреЗрдк рдкрд░ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдмрд╛рдПрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз (рдП) рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдмрдВрдзрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ:
- рдкреБрдирд░рд╛рд╡рд░реНрддреА ред рдпрд╣ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдХрдирд╡рд░реНрдЯрд░ рдкрд░ рд╕реАрдзреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЕрдиреБрдХреНрд░рдорд┐рдХ ред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ), рдЯреЗрдк рдкрд░ "рдЙрддреНрдкрд╛рджрди" рдбреЗрдЯрд╛ рдХрд╣рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдпрд╣ рддрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдХрдиреНрд╡рд░реНрдЯрд░ рдХреЛ рджрд╛рдИрдВ рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдирд╡рд░реНрдЯрд░ рдХрд┐рддрдирд╛ рдбреЗрдЯрд╛ рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред
рд╕рдВрднрд╡ рдмрдиреНрд╕
рд▓реЗрдЦ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЖрд░реЗрдЦ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- "рдЖрдЧреЗ рджреЗрдЦреЗрдВ" рдСрдкрд░реЗрд╢рди: рдХрдирд╡рд░реНрдЯрд░ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдЯреЗрдк рд╕реЗ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ;
- "рдХреИрдВрдбреА рдмреЙрдХреНрд╕": рдмреИрдЪреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ, рдЬреЛ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХред рдПрдХ "рдПрдХ рдХреИрдВрдбреА" рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рдмрдЬрд╛рдп рдПрдХ "рдмреЙрдХреНрд╕" рддреБрд░рдВрдд рдХрдиреНрд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдпреВрдирд┐рдЯ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕реЗ рдмрдЪрддрд╛ рд╣реИ;
- "рд╕реНрдорд╛рд░реНрдЯ" рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ (рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛), рдЬреЛ рдЖрдкрдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдХреЗ рдирд┐рд░рдВрддрд░ рдЖрд╡рдВрдЯрди / рд╡рд┐рд▓реЛрдкрди рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рд╕реЗ рднреА рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ;
- рдХрдИ рдзрд╛рдЧреЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрдиред рдПрдХ рдХрдиреНрд╡реЗрдпрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╣реИ рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдорд╛рдереЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ: рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рднрд╛рдЧреЛрдВ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ (рдкреНрд░рддреНрдпреЗрдХ рдХрдирд╡рд░реНрдЯрд░ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ), рдирдП рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ:
- рдХрд┐рд╕реА рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛, рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рд╛рд╣рд┐рддреНрдп рдкрдврд╝рдирд╛, рд╢рдмреНрджрд╛рд╡рд▓реА рдпрд╛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдбрд░рдирд╛;
- рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЛ рдЬрд╛рдирдирд╛, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдорд┐рд╕рд╛рд▓ рд╕реЗ рднрдпрднреАрдд;
- рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдХрдИ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдореЗрд░рд╛ (рдФрд░ рдПрдХ рд╢рдХ рдХреЗ рдмрд┐рдирд╛, рдЕрдзрд┐рдХ рд╕рд╣реА);
- C ++ рдпрд╛ рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреА рдирдлрд░рдд;
- рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП C ++ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпреЗ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ, рдФрд░ рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдмреВрд╕реНрдЯ (рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛)ред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╕реБрдВрджрд░ рдкреИрдЯрд░реНрди рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рди рдХреЗрд╡рд▓ рдФрд░ рди рд╣реА рдЗрддрдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╣рддреНрд╡, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред