OOP, "рдкрд╡рд┐рддреНрд░ рдЯреНрд░рд┐рдирд┐рдЯреА" рдФрд░ SOLID: рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдиреНрдпреВрдирддрдо рдЬреНрдЮрд╛рди

рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХреГрдд рд╢рд░реНрддреЛрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд▓рд┐рдлреЛрд░реНрдирд┐рдпрд╛ рдХреЗ рдкреНрд░реЛрдлреЗрд╕рд░реЛрдВ рдиреЗ рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдХреЗ рдЙрддреНрддрд░рд╛рд░реНрдз рдореЗрдВ рдареЛрд╕ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдереАред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЙрджреНрдпреЛрдЧ рдпрд╛ рд╢реИрдХреНрд╖рдгрд┐рдХ рд╕рдореБрджрд╛рдп рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдЯреА рдкреЗрд╢реЗрд╡рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдЭрд╛ рдпрд╛ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╣реИред рдореИрдВ рдпрд╣ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред


рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рднреА рд╕рдордЭ рдХреА рдХрдореА рдХреЛ рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛рдУрдВ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдб рдмрдирд╛рдП рд░рдЦрдирд╛ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдореИрдВ рдпрд╣ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдореИрдВ рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдЧреНрд░ рд░реВрдк рд╕реЗ рдкреВрд░рдХ рд▓рд┐рдЦреВрдВрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрдордХ рдФрд░ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред


рдЗрд╕ рддрд░рд╣ рдХреА рдЫреЛрдЯреА рдЧрд╛рд░рдВрдЯреАрдПрдВ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддреА рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд╣рд╛рдВ рдХрд╣реАрдВ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИ, рд╡рд╣рд╛рдВ рдХреЗ рд╕реНрдХреВрд▓реЛрдВ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдЗрдВрд╕ рдХреЗ рдкрд╛рда рдкрдврд╝реЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рднреА, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рднрдпрд╛рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдмрди рдЧрдИ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╛рд░реНрддрд╛рдХрд╛рд░ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рд╣реИрдВ, рдФрд░ рдЬреЛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдХреБрдЫ рд╕реБрдирд╛"ред рдпрд╣ рд╕рдм рдПрдХ рдЬрдЧрд╣ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕рд╡рд╛рд▓ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝реА рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрдм рд╕рд╡рд╛рд▓ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрдХрд╛ рд╣реЛред рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ "рдкрд╛рд▓рддреВ-рдкреНрд░реЛрдЬреЗрдХреНрдЯ" рдиреЗ рдореБрдЭреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рднреЛрдЬрди рджрд┐рдпрд╛ред


рдпрд╣рд╛рдБ рдЙрдиреНрд╣реЗрдВ рдореБрдЭ рдкрд░ рдЖрдкрддреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рд╕реНрдХреВрд▓ рдореЗрдВ рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд╕реАрдЦрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдУрдУрдкреА рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ 70% рд╕рд╛рдордЧреНрд░реА рди рдХреЗрд╡рд▓ рдУрдУрдкреА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЕрд▓рдЧ рд╕реЗ рдХреНрдпрд╛ рдиреЛрдЯ рдХрд░реВрдВрдЧрд╛ред




рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ OOP


рдпрд╣ рд╢рд╛рдпрдж рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗрдХреНрд╢рди рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЖрдкрдХреЛ рдЖрдзрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдУрдУрдкреА рдХрд╛ рд╕рд╛рд░ рдХреНрдпрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди, рдмрд╣реБрд░реВрдкрддрд╛, рд╡рд┐рд░рд╛рд╕рдд, рдФрд░ рдПрд╕рдУрдПрд▓рдЖрдИрдбреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдордЬрдмреВрдд рдХрд┐рдпрд╛ред рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреИрд╕реЗ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред


рдпрд╣ рджрд┐рдЬреНрдХреНрд╕реНрдЯреНрд░рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рдЬрд┐рд╕рдиреЗ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд░реИрдЦрд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди (рдХреНрд░рдо рдореЗрдВ), рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢рд╛рдЦрд╛, рдкрд╛рд╢ рдирд┐рд╖реНрдкрд╛рджрди рдЬрдмрдХрд┐ рд╕реНрдерд┐рддрд┐ рд╕рдВрддреБрд╖реНрдЯ рд╣реИред рдЗрди рддреАрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд┐рд╕реА рднреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ, рдЦреБрдж рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЖрджреЗрд╢реЛрдВ рдХреА рд░реИрдЦрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛, рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдФрд░ рд▓реВрдкреНрд╕ред рдЗрд╕реЗ " рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╢рд╢рд┐рдХреЛрд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред


рдпрд╣рд╛рдБ рднреА рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдмрдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╡реЗ рдбреЗрдЯрд╛ рдкрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реЛ рдЧрдП рд╣реИрдВред рдЪрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред рджрд╛рдВрдд рдкреАрд╕рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдзреИрд░реНрдп рд░рдЦреЗрдВ, рдХреГрдкрдпрд╛ред


рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА, рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдПрдХ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреВрд░реНрдгрд╛рдВрдХ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛, рдмреВрд▓рд┐рдпрди рдЪрд░, рд╕рд░рдгрд┐рдпрд╛рдБ, рддрд╛рд░ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо + рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ = рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдХрд▓рд╕ рд╡рд┐рд░реНрде рдХреЛ рдорд╛рдирд╛ рдЧрдпрд╛ рд╣реИред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдордп рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ, рдЙрдкрдкреНрд░рдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереЗред рдпрд╛ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреБрдЫ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдкреНрд░рдореБрдЦ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рднреА рдЪрд░ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдареАрдХ рд╣реИ, рдпрд╣рд╛рдВ рд░реИрдо рдореЗрдВ рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдмрд░реВрдЯреАрди рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреЙрд▓ рджрд╛рдВрдд рдФрд░ рд╕реНрдкрд┐рди рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред"


рдмреЗрд╢рдХ, рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХрдо рдереЗ рдФрд░ рд▓реЛрдЧреЛрдВ рдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреАрдПрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рддрдерд╛рдХрдерд┐рдд рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдерд╛ред рдиреАрдЪреЗ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж NEPL - рдЧреИрд░-рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛):


type Name: record consisting of FirstName: String, MiddleName: String, LastName: String. type Point: record consisting of X: Double, Y: Double. 

рдЕрд░реНрдерд╛рддреН, рджреЛ рдпрд╛ рддреАрди рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд╛рдорд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдк рдкреНрд░рдХрд╛рд░ рдирд╛рдо рдХрд╛ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FirstName рдлрд╝реАрд▓реНрдб рджреЗрдЦреЗрдВред


рд╣рдорд╛рд░реЗ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдЗрд╕ "рдкрд░рд┐рд╡рд░реНрдзрд┐рдд" рдЪрд░ рдореЗрдВ рдЗрддрдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рдХреНрдпрд╛ рд╣реИ? рдХрд┐ рдпрд╣рд╛рдБ рд╕реЗ OOP рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рдХрджрдо рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмреЛрд▓реНрдб рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рднреА рдЪрд░ рдореЗрдВ рд░рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рджреЗрдЦреЗрдВ рдХрд┐ рдЪрд░ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ:


 type Name: class consisting of FirstName: String, MiddleName: String, LastName: String, GetFullName: subprogram with no parameters returns String. type Point: class consisting of X: Double, Y: Double, ScalarMultiply: subprogram with (Double) parameters returns Point. 

рдПрдирдмреА рдПрдирдИрдкреАрдПрд▓ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдХреЙрд░реНрдб рдХреАрд╡рд░реНрдб рдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред


рдпрд╣реА рд╣реИ, рд╣рдо "GetFullName" рдлрд╝реАрд▓реНрдб рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдПрдХ рдЪрд░ рдореЗрдВ рди рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЪрд░ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдХреМрд╢рд▓ рдФрд░ рд░рд╛рдЬреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рди рдХреЗрд╡рд▓ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЫреЛрдЯреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЬрд┐рдиреНрд╣реЗрдВ рдХрдорд╛рдВрдб рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдореЗрд░реА рдпреБрд╡рд╛рд╡рд╕реНрдерд╛ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдиреЗ рдореБрдЭреЗ рдореЛрд╣рд┐рдд рдХрд┐рдпрд╛ред рдЬрд░рд╛ рд╕реЛрдЪрд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдФрд░ рдЖрдк рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рджреБрдирд┐рдпрд╛ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмреЛрд░рд┐рдВрдЧ рд╕рд░рдгрд┐рдпреЛрдВ рдпрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЬрдЯрд┐рд▓ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреАрдбрд╝рд╛ рдирд╣реАрдВред рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА, рд╢рддреНрд░реБ, рдмреБрд▓реЗрдЯ, рдмреЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ! рд╣рд╛рдВ, рдЕрдкрдиреА рдпреБрд╡рд╛рд╡рд╕реНрдерд╛ рдореЗрдВ рдореИрдВ рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред рдФрд░ рдХреБрдЫ "рдордЬрдмреВрдд" рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛, рдУрдУрдкреА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдирд░рдХ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рдФрд░ рд╢рдмреНрдж рджреЗрдВ:


  • рдУрдУрдкреА рдореЗрдВ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рджреНрд╡рд╛рд░рд╛ "рдкреНрд░рдмрд▓рд┐рдд" рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХрдХреНрд╖рд╛рдПрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рд╡рд╕реНрддреБ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
  • рдФрд░ рдЬреЛ рд░реВрдЯреАрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВред рддрд╛рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдЙрд╕реА рд╡рд░реНрдЧ рдХреА рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗред рдореБрдЭреЗ рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдЪреАрдЬреЗрдВ рдЕрд▓рдЧ рд╣реИрдВред

рдкрд╡рд┐рддреНрд░ рддреНрд░рд┐рдореВрд░реНрддрд┐


рдРрд╕рд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ рдХрд┐ рд╡реЗ рдЗрди рдмрд╛рддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдкреВрдЫрддреЗ рд╣реИрдВред рд╡реЗ рдХрд┐рд╕реА рднреА OOP рднрд╛рд╖рд╛ рдХреА рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдмрдВрдз рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдУрдУрдкреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "рддрд╛рдмреВрдд, рддрд╛рдмреВрдд, рдХрдмреНрд░рд┐рд╕реНрддрд╛рди, рдмреЗрд╣рд┐рд╕рд╛рдмред" рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЗрддрдиреА рд╕рдЦреНрддреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЖрдкрдХреЛ рдУрдУрдкреА рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдФрд░ рдУрдУрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдЙрдкрдХрд░рдг рд╣реИред


рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг


рдареАрдХ рд╣реИ, рдЪрд▓реЛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: "рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдПрдХ рдПрдХрд▓ рдШрдЯрдХ рдореЗрдВ рдкреИрдХ рдХрд░рдирд╛ред" рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рднреАред рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЧрд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдХреИрд╕реЗ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реЗ рдирд┐рдкрдЯрд╛ред рдФрд░ рд╡рд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╕рд╣реА рд░реВрдк рд╕реЗ рдлрдЯрдХрд╛рд░ рд▓рдЧрд╛рдИ рдЧрдИ рдХрд┐ рдореИрдВрдиреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпреЗ рдХреБрдЫ рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, EngineerSpock рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕реВрддреНрд░реАрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд░рдХреНрд╖рдг рдерд╛ ред рдореИрдВ рдЕрдкрдиреА рдЧрд▓рддреА рдорд╛рдирддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ред


рдЗрд╕ рдмреАрдЪ, рдореЗрд░рд╛, рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛, рдпрд╛, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬреЛ рди рдХреЗрд╡рд▓ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╣реИ:


рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдХрд╛рдИ рдХреЛ рдПрдХ рдмрдВрдж рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣реА рд░рд╛рдЬреНрдп рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╣рд╛рдВ "рдХреЛрдИ рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдХрд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рдЬреНрдп рд╣реИ", рдЪрд▓реЛ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рджред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рдореЗрд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕реЗ рддреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рдирд╣реАрдВ рддреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕реМрдореНрдп, рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдбрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП?


рд╢реВрдиреНрдп рдореЗрдВ, рд╡рд╕реНрддреБ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬреЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░, рдПрдХ рд╣реА рд╡рд╛рд╕реНрддреБ рд╕реАрдорд╛ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдЗрдП рдмрддрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЕрдкрдорд╛рдирдЬрдирдХ рдирд┐рдХрд▓рд╛, рддреЛ рдореИрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд╛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ: "рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдПрдХ рд╣реА рдШрдЯрдХ рдореЗрдВ рдкреИрдХ рдХрд░рдирд╛"ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕рднреА рд╕рд╣рдХрд░реНрдореА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдПрдкреАрдЖрдИ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ рдпрд╛ рдкреАрдЖрдИ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╣рдо рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд░рд╣реЗрдВред рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реЗ рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛрдВрдЧреЗред рдпрд╣ рдХреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рдиреЗ рдФрд░ рдЙрд╕реЗ рдЕрдиреБрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рди рд╕реЛрдЪреЗред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВред


рдПрдХ рдкреБрд╕реНрддрдХ рдореЗрдВ, рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИ, рдпрд╣ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкрд░ рдмрдЯрди рд╣реИрдВред рд╣реИрдВрдбрд▓ред рд╡реЗ рдЖрдкрдХреЛ рднреЛрдЬрди рдЧрд░реНрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХрд▓-рдкреБрд░реНрдЬрд╝реЗ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡, рдФрд░ рдХреБрдЫ рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд╕реЛрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдмрдЯрди рд╣реИред рдПрдХ рдкреНрд▓реЗрдЯ рд░рдЦреЛ, рдХреБрдЫ рдмрдЯрди рджрдмрд╛рдУ, рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ рдФрд░ рдЦреБрд╢ рд░рд╣реЛред


рдмрд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдкрдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреМрди рд╕реЗ рдмрдЯрди рджрдмрд╛рдиреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдВрддрд░рд┐рдХ рдЧрд┐рдмреНрд▓реЗрдЯ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдЯрди рди рдЬреЛрдбрд╝реЗрдВ! рд╡рд╣ рдкрд╣рд▓реЗ рдерд╛ред


рджреВрд╕рд░реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╕рд╣рдЬ рд╣реИ рдФрд░ рдХрдИ рд░реВрдкреЛрдВ рдореЗрдВ рд▓реЛрдХ рдЬреНрдЮрд╛рди рдХреЗ рдмреАрдЪ рдордВрдбрд░рд╛рддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо "рдЕрдЧрд░ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдЕрдирд╣реЛрдиреА рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛, рддреЛ рдЖрдкрдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред" рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, "рдЬрдм рддрдХ рдЖрдк рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХреЛ рд╕реНрдкрд┐рди рди рдХрд░реЗрдВ," рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЕрдм рджреВрд╕рд░реЛрдВ рдХреЛ рдХреБрдЦреНрдпрд╛рдд рд╕реАрдорд╛ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдмрд╣реБрдд рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рд╣рд╛рдВ, рдЖрдк рдХреЛрдб рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд╣рдордд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ рдЪрдврд╝рдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рдмрдиреА рд░рд╣реЗрдЧреАред рдпрд╣ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдмрд╣реБрдд рд╣реА рдЫрд┐рдкрд╛рд╡ рд╣реИред


рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреБрдЦреНрдпрд╛рдд рд╕реАрдорд╛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рдХ рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдРрд╕рд╛ рдХреЛрдИ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдХреМрди рд╣реИрдВ, рд╣рдордиреЗ рдЖрдкрдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдирд┐рдЬреА рдФрд░ рдЕрдиреНрдп рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░ рдЖрдкрдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдмрд╣реБрдд "рд╕реВрдЪрдирд╛ рдЫрд┐рдкрд╛рдирд╛" рдирд╛рд▓реА рдХреЗ рдиреАрдЪреЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╕рдм рдХреБрдЫ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рдЬрдЧрд╣ рдПрдХ рд╡рд░реНрдЧ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рдХрд╣рд╛рдБ рдЪрд╛рд╣рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд╕рд╛рде, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдм рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЗрддрдиреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдХрд┐ рд╣рдЬрд╛рд░реЛрдВ рдФрд░ рд╣рдЬрд╛рд░реЛрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдореЗрд░реЗ рд╕рд╣рд┐рдд, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реИрдВ) рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдФрд░ рдЫреБрдкрд╛рдиреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдпрджрд┐ рдЖрдкрдХрд╛ рдкрд╕рдВрджреАрджрд╛ YP рдЖрдкрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдХреЗ рдордЬрд╝реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЕрдЧрд▓рд╛ рд░рд╛рд╕реНрддрд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рд╡реГрджреНрдзрд┐ рдкрд░:


  • рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд░реЗрдВ рдФрд░ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдХреЛрдб-рдХрдиреНрд╡реЗрдВрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг - рдЕрдЬрдЧрд░ рдореЗрдВ __all__ рдЪрд░ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕рдм рдХреБрдЫ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗ рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
  • рдЗрди рдмрд╣реБрдд рдХреЛрдб-рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдЦреНрдд рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдЙрд▓реНрд▓рдВрдШрди рдХреЛ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдФрд░ рдПрдХ рдЧрд┐рд░реА рд╣реБрдИ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдмрд░рд╛рдмрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдмрд╛рд░ рдФрд░:


  • рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдм рдХреБрдЫ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ, рд╕рдЦреНрдд рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕реАрдорд╛рдПрдВ рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИрдВред
  • рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдХреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреВрд╕рд░реЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

рдореИрдВ рдПрдирдИрдкреАрдПрд▓ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрднреА рднреА рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░, рджрд╕ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рдж, рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ:


 type Microwave: class consisting of private fancyInnerChips: List of Chip, private foodWarmingThing: FoodWarmerController, private buttonsPanel: ButtonsPanel, public GetAccessToControlPanel: subprogram with no parameters returns ButtonsPanel, public OpenDoor: subprogram with no parameters returns nothing, public Put: subprogram with (Food) parameters return nothing, public CloseDoor: subprogram with no parameters returns nothing. type ButtonsPanel: class consisting of private buttons: List of ButtonState, public PressOn: subprogram with no parameters returns nothing, public PressOff: subprogram with no parameters returns nothing, public PressIncreaseTime: subprogram with no parameters returns nothing, public PressDecreaseTime: subprogram with no parameters returns nothing, public PressStart: subprogram with no parameters returns nothing, public PressStop: subprogram with no parameters returns nothing. 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рд╛рд░ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдмрд┐рдВрджреБ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛: GetAccessToControlPanel рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХреЛ рдЫреВ рднреА рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╡рд╣ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рддрдм рдЖрдк рдХреБрдЫ рднреА рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЦреИрд░, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмрдЯрдирдкреИрдирд╕реЗрд▓ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдмрди рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╡рд╛рд▓ рдкрд░ рд▓рд╛рддрд╛ рд╣реИ: рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ "рдПрдХрд▓ рдШрдЯрдХ" рдХреНрдпрд╛ рд╣реИ? рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛рдПрдБ рдХрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред

рд╕реНрдкреЙрдЗрд▓рд░
рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд┐рджреНрдзрд╛рдВрдд

OOP рдХреЗ рдмрд╛рд╣рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЬрд╛рд╡рд╛ / C ++ / C # рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдУрдУрдкреА рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рддрд░рд╣ рдЬреБрдбрд╝реЗ рд╣реБрдП рдЬрди рдЪреЗрддрдирд╛ рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рдиред рд▓реЗрдХрд┐рди рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рджреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред


рдПрдХрд▓ рдШрдЯрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреИрдХ рдХрд░рдирд╛ред

рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдХрд╛рдИ рдХреЛ рдПрдХ рдмрдВрдж рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣реА рд░рд╛рдЬреНрдп рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ? рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ!


рддреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЖрдк рдПрдХ рдбреАрдмреАрдП рд╣реИрдВ ред рдЖрдкрдХрд╛ рдХрд╛рдо рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MySQL рдкрд░ рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЗрдВред рдЖрдкрдХрд╛ рдХреАрдорддреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХрд░реЗрдВ?


рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдПрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╣реЗрдВрдЧреЗред рд╣рдо рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ CREATE USER рдХрдорд╛рдВрдб рд╣реИред рдлрд┐рд░, GRANT рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпреВрдЬрд░ рдХреЛ рдЗрди рд╕реНрдХреАрдореЛрдВ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдХреАрдорд╛ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддрд╛ рд╣реИред


рд╡рд╣ рд╕рдм рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╣реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдХрд╛рдИ рд╣реИ, рдЬрд┐рд╕реЗ рддреЛрдбрд╝рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдВрдЧреЗ, рд╣рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ MySQL рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рддреГрддреАрдп-рдкрдХреНрд╖ рдирд┐рдХрд╛рдп рдХреЗрд╡рд▓ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред


рдХреБрдЦреНрдпрд╛рдд рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИ, рдФрд░ рдпрд╣ рдХреИрд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреА рдкреВрд░реА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмреАрдЪ рдРрд╕рд╛ рдЕрдВрддрд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рднрд╛рд░реА рдУрдЖрд░рдПрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред


рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдУрдУрдкреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ OOP рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдЗрд╕реЗ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдн рд▓рд╛рддрд╛ рд╣реИред


рдмрд╣реБрд░реВрдкрддрд╛


рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рдХрдИ рд░реВрдк рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдХреЛрдВрдбреНрд░реИрдЯрд┐рдпрд╕ рдореБрдЭреЗ рдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдЯреНрд░реЗрдВрдЬрд╝рдк рдиреЗ рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдерд╛: рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ред


рдЗрд╕ рд░реВрдк рдореЗрдВ, рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓реЗрдЦрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрдЦ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдордЬрдмреВрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрджрд┐ рд╣рдордиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛, рддреЛ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╣ рднреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рд▓реНрдХреБрд▓ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ! рдФрд░ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд╣реАрди рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЦреЛрд▓рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рд╕реИрдиреНрдп рд░рдбрд╛рд░ рдХреЗ рд╕рд╛рде рднреЛрдЬрди рдХреЛ рдЧрд░реНрдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ? рдпрджрд┐ рдЗрд╕ рдкрд╛рдЧрд▓ рдкреНрд░рддрд┐рднрд╛ рдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджрд┐рдпрд╛, рддреЛ рд╕реИрдиреНрдп рд░рдбрд╛рд░ рдХреЛ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднреЛрдЬрди рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


NEPL рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░, C # рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рд╕реЗ, рд╢рдмреНрджрд╛рдВрдХрди рдкрд░ рдареЛрдХрд░ рди рдЦрд╛рдПрдВ) рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред


 type FoodWarmer: interface consisting of GetAccessToControlPanel: no parameters returns FoodWarmerControlPanel, OpenDoor: no parameters returns nothing, Put: have (Food) parameters returns nothing, CloseDoor: no parameters returns nothing. type FoodWarmerControlPanel: interface consisting of PressOn: no parameters returns nothing, PressOff: no parameters returns nothing, PressIncreaseTime: no parameters returns nothing, PressDecreaseTime: no parameters returns nothing, PressStart: no parameters returns nothing, PressStop: no parameters returns nothing. type EnemyFinder: interface consisting of FindEnemies: no parameters returns List of Enemy. type Radar: class implementing FoodWarmer, EnemyFinder and consisting of private secretMilitaryChips: List of Chip, private giantMicrowavesGenerator: FoodWarmerController, private strangeControlPanel: AlarmClock, public GetAccessToControlPanel: subprogram with no parameters returns FoodWarmerControlPanel, public OpenDoor: subprogram with no parameters returns nothing, public Put: subprogram with (Food) parameters return nothing, public CloseDoor: subprogram with no parameters returns nothing, public FindEnemies: subprogram with no parameters returns List of Enemy. type AlarmClock: class implementing FoodWarmerControlPanel and consisting of private mechanics: List of MechanicPart, public PressOn: subprogram with no parameters returns nothing, public PressOff: subprogram with no parameters returns nothing, public PressIncreaseTime: subprogram with no parameters returns nothing, public PressDecreaseTime: subprogram with no parameters returns nothing, public PressStart: subprogram with no parameters returns nothing, public PressStop: subprogram with no parameters returns nothing. type Microwave: class implementing FoodWarmer and consisting of private fancyInnerChips: List of Chip, private foodWarmingThing: FoodWarmerController, private buttonsPanel: ButtonsPanel, public GetAccessToControlPanel: subprogram with no parameters returns FoodWarmerControlPanel, public OpenDoor: subprogram with no parameters returns nothing, public Put: subprogram with (Food) parameters return nothing, public CloseDoor: subprogram with no parameters returns nothing. type ButtonsPanel: class implementing FoodWarmerControlPanel and consisting of private buttons: List of ButtonState, public PressOn: subprogram with no parameters returns nothing, public PressOff: subprogram with no parameters returns nothing, public PressIncreaseTime: subprogram with no parameters returns nothing, public PressDecreaseTime: subprogram with no parameters returns nothing, public PressStart: subprogram with no parameters returns nothing, public PressStop: subprogram with no parameters returns nothing. 

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рд╕рдВрдХрд▓рдХ рд╣рдореЗрдВ "рдлрд╛рдИ" рдмрддрд╛рдПрдЧрд╛ред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ: FoodWarmer рдФрд░ FoodWarmerControlPanelред рдЙрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ, рдФрд░ рдлрд┐рд░ рдЪрд▓реЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред


рдХрдард┐рди рд╕реЛрд╡рд┐рдпрдд рдЕрддреАрдд рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ рджреЛрд╣рд░реЗ рдЙрдкрдпреЛрдЧ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рд░рдбрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдП, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреЛрдЬрди рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдФрд░ рджреБрд╢реНрдорди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЕрд▓рд╛рд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЛрдЬрдирд╛ рдкрд╛рд░ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд░рд┐рд╕рд░реНрдЪ рдЗрдВрд╕реНрдЯреАрдЯреНрдпреВрдЯ рдСрдл рдХреЗрдорд┐рд╕реНрдЯреНрд░реА, рдлрд░реНрдЯрд┐рд▓рд╛рдЗрдЬрд░реНрд╕ рдФрд░ рдЬрд╣рд░реЛрдВ рд╕реЗ рдЕрдирд╛рдо рдПрдордПрдирдПрд╕, рдЬрд┐рд╕ рдкрд░ рд╡реЗ рдЪрдордХрддреЗ рдереЗ, рдиреЗ рдЕрд▓рд╛рд░реНрдо рдШрдбрд╝реА рдХреЗ рд▓рд┐рдП рд░рдбрд╛рд░ рдФрд░ рдлреВрдбрд╡рд░реНрдорд░рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рдлреВрдбрд╡рд░реНрдорд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред


рдПрдХ рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╣реБрдЖ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХреЗ рд╕рд╛рде рднреЛрдЬрди рдХреЛ рдЧрд░реНрдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдФрд░ рдЕрдм рдмрдирд╛рдИ рдЧрдИ рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдФрд░ рдмрдЯрдирдкреЛрдирд▓ рдХрдХреНрд╖рд╛рдПрдВред рдФрд░ рд╡реЗ рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдлреВрдбрд╡рд░реНрдорд░ рдФрд░ рдлреВрдбрд╡рд░реНрдорд░рдХрдВрдЯреНрд░реЛрд▓ред рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ?


рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╣рдордиреЗ рдЦрд╛рдиреЗ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FoodWarmer рдЬреИрд╕реЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рднреА рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╣рдо рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлреВрдбрд╡рд░реНрдорд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлреВрдбрд╡рд░реНрдорд░рдлреИрдХреНрдЯрд░реА рдХреЛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╡ рдФрд░ рд░рдбрд╛рд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдмрдВрдж рдЦреЗрддреЛрдВ рдХреЛ рднреА рджреЗрдЦреЗрдВред рд╡рд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд▓рд╛рд░реНрдо рдШрдбрд╝реА рдФрд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдирд▓ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░ рд╣рдо FoodWarmerControlPanel рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рджреЗрддреЗ рд╣реИрдВред


рдкрд┐рдХрд╛рдмреВ рдкрд░ рдХрд╣реАрдВ рдПрдХ рдХрд╣рд╛рдиреА рдереА рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЙрдореНрдореАрджрд╡рд╛рд░ рдиреЗ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдордЭрд╛рдпрд╛:

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреЗрди рд╣реИред рдореИрдВ рдЙрд╕реЗ рдЕрдкрдирд╛ рдирд╛рдо рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреА рдЖрдВрдЦ рдореЗрдВ рдЪрд┐рдкрдХрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИред
рддрд╕реНрд╡реАрд░ рдордЬрд╛рдХрд┐рдпрд╛ рд╣реИ, рд╕реНрдерд┐рддрд┐ рднрдпрд╛рдирдХ рд╣реИ, рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмреЗрдХрд╛рд░ рд╣реИред

рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреБрдЫ рдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд▓рдо рд╡рд░реНрдЧ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реНрдЯреЗрд╢рдирд░реА рдФрд░ рдардВрдбреЗ рд╕реНрдЯреАрд▓ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рдХреБрдЫ рднреА рдЪреБрдн рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдЖрдВрдЦ рдореЗрдВ рдлрдВрд╕ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪреБрдн рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рджреГрд╢реНрдп рдЕрднрд╛рд╡ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХреА рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред


OOP рдХреЗ рдмрд╛рд╣рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдПрд░реНрд▓рд╛рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрди рд╢рдмреНрджреЛрдВ рдХреА рд╕рднреА рдЗрдВрджреНрд░рд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдРрд╕реА рдЕрдЬреАрдм рдФрд░ рдордЬрд╛рдХрд┐рдпрд╛ рднрд╛рд╖рд╛ рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЕрдкрдиреЗ рд╣рд╛рде рджреЗрдЦреЛ:


рдХреЛрдб рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдПрдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:


 %option 1 foobar:function(), %option 2 Module = foobar, Module:function(). 

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдп рд╣реИрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рднрд╛рд╖рд╛ рдХреА рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбреНрдпреВрд▓_info рдШреЛрд╖рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдЖрдкрдХреЗ рдбреИрдб рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рд╣реЗрд╡рд┐рдпрд░ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмрд┐рд╣реЗрд╡рд┐рдпрд░ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ: "рд╣рдо рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ рддрд╛рдХрд┐ рдбреИрдб рдореЙрдбреНрдпреВрд▓ рд╣рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХреЗред"


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gen_server рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдПрдХ рдРрд╕рд╛ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдпрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ (Erlang рдореЗрдВ рдХреЛрдИ рдереНрд░реЗрдб рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╣рдЬрд╛рд░реЛрдВ рдЫреЛрдЯреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ), рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ gen_server рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рддрд░реНрдХ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ gen_server рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЬрдмрдХрд┐ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдЦрд╛рд▓реА рд╕реНрдЯрдмреНрд╕ рд╣реИрдВ), gen_server рдЖрдорддреМрд░ рдкрд░ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдХреЛ рдордХреНрдЦреА рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдЯреНрд░реИрд╕рдкреБрдк рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдУрдУрдкреА рдкрд░ рд╕реНрдорд╛рд░реНрдЯ рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЕрдм рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдПрдХ рдЙрджреНрдзрд░рдг:


Erlang тАФ , .

┬л тАФ ┬╗ , , .


. .NET. . CLR . CLR Microsoft , , , ( ECMA-335).


.NET , Windows, Windows Phone, XBox ( XNA, , ), . Microsoft. , , . , Mono Project. .NET. .


, . Microsoft , .NET . . , , .NET Core. , .NET Core .NET Framework, , , . , .


, ┬л тАФ ┬╗ - . , .



, . , , , . , .


, , . , , NEPL. . Name? , . EtiquetteInfo - .


 import class EtiquetteInfo from Diplomacy. type PoliteName: class consisting of private FirstName: String, private MiddleName: String, private LastName: String, for descendants GetPoliteFirstName: subprogram with (EtiquetteInfo) parameters returns String, for descendants GetPoliteMiddleName: subprogram with (EtiquetteInfo) parameters returns String, for descendants GetPoliteLastName: subprogram with (EtiquetteInfo) parameters returns String, public GetFullName: subprogram with (EtiquetteInfo) parameters returns String. subprogram GetPoliteFirstName.PoliteName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as return _EtiquetteInfo.PoliteFirstName(FirstName). subprogram GetPoliteMiddleName.PoliteName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as return _EtiquetteInfo.PoliteMiddleName(MiddleName). subprogram GetPoliteLastName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as return _EtiquetteInfo.PoliteLastName(LastName). subprogram GetFullName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as return GetPoliteFirstName(_EtiquetteInfo) + GetPoliteMiddleName(_EtiquetteInfo) + GetPoliteLastName(_EtiquetteInfo). 

, GetFullName - , ( , , ?). , , - . , , . , , , , . , . PoliteName . ExoticPoliteName тАФ . , , .


- . ExoticPoliteName, PoliteName, . PoliteExoticName. , PoliteName.


 import class EtiquetteInfo from Diplomacy. type PoliteExoticName: class extending PoliteName and consisting of private MoreMiddleNames: List of String, for descendants overridden GetPoliteMiddleName: subprogram with (EtiquetteInfo) parameters returns String, public overriden GetFullName: subprogram with (EtiquetteInfo) parameters returns String. subprogram GetPoliteMiddleName.PoliteExoticName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as String AggregatedMiddleName = String.Join(" ", MoreMiddleNames), return base.GetPoliteMiddleName(_EtiquetteInfo + AggregatedMiddleName). subprogram GetFullName with (EtiquetteInfo _EtiquetteInfo) parameters returning String implemented as String Prefix = "", String FirstName = GetFirstName(_EtiquetteInfo), if _EtiquetteInfo.ComplimentIsAppropriate(FirstName) then Prefix = "Oh, joy of my heart, dear ", return Prefix + base.GetFullName(_EtiquetteInfo). 

: PoliteName . PoliteExoticName -.


, , . , GetPoliteFirstName GetPoliteLastName. . GetFullName, , .


, , PoliteName, PoliteExoticName, GetFullName. , PoliteName, , . , , base.GetFullName(etiquetteInfo). , , .


, " ". , . : , . . .


, . . , Boolean, , . , Object. . , , , , Object, .


, NEPL . PoliteName Object, PoliteExoticName PoliteName Object . , NEPL :


 subprogram Foo.Bar with no parameters returning nothing implemented as PoliteExoticName _PoliteExoticName = GetSomePoliteExoticName(), PoliteName _PoliteName = _PoliteExoticName, Object _Object = _PoliteExoticName. 

, , _Object.GetFullName, , . PoliteName PoliteExoticName - Object, - _Object, .


? , . . , ( Object) , - -.


, , , , . ? , . - , . . - , .


? , . . . , ┬л┬╗ , . ?


. , NEPL for descendants.


 type PoliteName: class consisting of private FirstName: String, private MiddleName: String, private LastName: String, for descendants GetPoliteFirstName: subprogram with (EtiquetteInfo) parameters returns String, for descendants GetPoliteMiddleName: subprogram with (EtiquetteInfo) parameters returns String, for descendants GetPoliteLastName: subprogram with (EtiquetteInfo) parameters returns String, public GetFullName: subprogram with (EtiquetteInfo) parameters returns String. 

PoliteExoticName FirstName, ┬л, , , , ┬╗. GetPoliteFirstName FirstName.



, , Square Shape, Shape Square . , . Shape , , . Square, Shape. рдХреНрдпреЛрдВ? , Shape, .


. , ? -, . -, , , , . , , .


, . , . ┬л ┬╗? , . . , .


. , . , , . . , . , , .


, , . . ( , ), , . , , . , , . .


, ) , ) , , , 999 1000 . , , .


()


, . - , . , , . - , .


SOLID


тАФ , , . - . SOLID тАФ , , тАж ? ? , , .


S тАФ The Single Responsibility Principle


. .


.

. . .


, ┬л ┬╗ - . . ┬л ?┬╗. , , ? .


, SRP :

.

, ? тАФ , . ? . ┬л ┬╗. , . ? .


, ? . , .txt-. , , , .txt-. - , . , , тАж .txt-. рдХреНрдпреЛрдВ? . , , .txt-.


NB ( , ) ┬л┬╗, ┬л , ┬╗.



. , , , .txt-. . , . , . рд▓реЗрдХрд┐рди! -, , , . -, , , .



, , . , ) , ) .html-. , , .txt/.html.


, , , . , , .txt-. рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?


  • . , . , , . , , , , , , . .
  • , . 900 USD 900.00$? 20190826T130000 2019 ? , ?
  • .txt-? .csv? , .txt. ? ? - ? - ? , ?

? тАФ . , -.


, , , . , .


DRY тАФ Don't Repeat Yourself


:


, . .

, , , - , . , , .



SRP . , , . , ┬л ┬╗. , , , тАФ .


. HTML . , ┬л┬╗ . , HTML 90- . , . - , . , HTML- . CSS .


? -, CSS , ┬л┬╗ . , . -, CSS- html- , - text-color . тАФ . .


O тАФ The Open/Closed Principle


, , , - . , ┬л┬╗ ┬л┬╗. / , , . ┬л ┬╗ . :


.

. , . , . , тАФ .


, . . ? . , .


  • , . , . , / .
  • , . , . / /, . NB /. , : .
  • , . , .
  • , - , , . (), () ┬л┬╗ .
  • . , , ? , . , . , .

, . .



 type SpellChecker: class consisting of public DoSpellCheck: subprogram with (String) parameters returns String. type CorporativeStyleChecker: class consisting of public DoCorporativeStyleCheck: subprogram with (String) parameters returns String. type TextProcessor: class consisting of private Text: String, private SpellChecker: SpellChecker, private CorporativeStyleChecker: CorporativeStyleChecker, public Process: subprogram with no parameters returns String. subprogram TextProcessor.Process with no parameters returning String implemented as String ProcessedText = Text, ProcessedText = SpellChecker.DoSpellCheck(ProcessedText), ProcessedText = CorporativeStyleChecker.DoCorporativeStyleCheck(ProcessedText), return ProcessedText. 

,


 type TextChecker: interface consisting of Check: have (String) parameters returns String. type SpellChecker: class implementing TextChecker and consisting of public Check: subprogram with (String) parameters returns String. type CorporativeStyleChecker: class implementing TextChecker and consisting of public Check: subprogram with (String) parameters returns String. type TextProcessor: class consisting of private Text: String, private SpellChecker: SpellChecker, private CorporativeStyleChecker: CorporativeStyleChecker, public Process: subprogram with no parameters returns String. subprogram TextProcessor.Process with no parameters returning String implemented as String ProcessedText = Text, List of SpellChecker Checkers = (SpellChecker, CorporativeStyleChecker), for each SpellChecker SpellChecker in Checkers do ProcessedText = SpellChecker.Check(ProcessedText) and nothing else, return ProcessedText. 

O/CP . TextCheckersSupplier, .


 type TextChecker: interface consisting of Check: have (String) parameters returns String. type SpellChecker: class implementing TextChecker and consisting of public Check: subprogram with (String) parameters returns String. type CorporativeStyleChecker: class implementing TextChecker and consisting of public Check: subprogram with (String) parameters returns String. type TextCheckersSupplier: class consisting of public GetCheckers: subprogram with no parameters returns List of TextChecker. type TextProcessor: class consisting of private Text: String, private CheckersSupplier: TextCheckersSupplier, public Process: subprogram with no parameters returns String. subprogram TextProcessor.Process with no parameters returning String implemented as String ProcessedText = Text, List of SpellChecker Checkers = CheckersSupplier.GetCheckers(), for each SpellChecker SpellChecker in Checkers do ProcessedText = SpellChecker.Check(ProcessedText) and nothing else, return ProcessedText. 

? , , , . , TextProcessor. , TextCheckerSupplier , , . TextChecker' . , , , . , .



, , , , . .


L тАФ The Liskov Substitute Principle


, :


, , , .

, , . ?



- NEPL:


 type PoliteExoticName: class extending PoliteName and consisting of... subprogram Foo.Bar with no parameters returning nothing implemented as PoliteExoticName _PoliteExoticName = GetSomePoliteExoticName(), PoliteName _PoliteName = _PoliteExoticName, Object _Object = _PoliteExoticName. 

, _PoliteName - . , , . , . PoliteName, . , , , PoliteName . , , , . .


, -, allex ( , ). , , :

-, .

, ┬лAgile Principles, Patterns and Practices in C#┬╗. NEPL, .


  Object _Object = GetObjectSomewhere(), PoliteExoticName IHopeItsActuallyName = _Object as PoliteExoticName, 

, , . . , . - , . , . . ( , alias , ):


 from UnboundedCollections import UnboundedSet as ThirdPartyUnboundedSet. from BoundedCollections import BoundedSet as ThirdPartBoundedSet. type Set: interface consisting of Add: have (Object) parameters returns nothing, Delete: have (Object) parameters returns nothing, IsMember: have (Object) parameters returns Boolean. type UnboundedSet: class implementing Set and consisting of private ThirdPartySet: ThirdPartyUnboundedSet, public Add: subprogram with (Object) parameters returning nothing, public Delete: subprogram with (Object) parameters returning nothing, public IsMember: subprogram with (Object) parameters returning Boolean. type BoundedSet: class implementing Set and consisting of private ThirdPartySet: ThirdPartyBoundedSet, public Add: subprogram with (Object) parameters returning nothing, public Delete: subprogram with (Object) parameters returning nothing, public IsMember: subprogram with (Object) parameters returning Boolean. subprogram BoundedSet.Add with (Object O) parameters returning nothing implemented as ThirdPartSet.Add(O). 


. . . PersistentSet, - . , PersistentObject. - . Delete IsMember . Add...


 from PersistentCollections import PersistentSet as ThirdPartyPersistentSet, PersistentObject. type PersistentSet: class implementing Set and consisting of private ThirdPartySet: ThirdPartyPersistentSet, public Add: subprogram with (Object) parameters returning nothing, public Delete: subprogram with (Object) parameters returning nothing, public IsMember: subprogram with (Object) parameters returning Boolean. subprogram PersistentSet.Add with (Object O) parameters returning nothing implemented as PersistentObject Po = O as PersistentObject, ThirdPartySet.Add(Po). 


. PersistentSet Object, . , , Set , . ( ):


 type MemberContainer: interface consisting of Delete: have (Object) parameters returns nothing, IsMember: have (Object) parameters returns Boolean. type Set: interface extending MemberContainer and consisting of Add: have (Object) parameters returns nothing. type PersistentSet: interface extending MemberContainer and consisting of Add: have (PersistingObject) parameters returns nothing. 


C#.


, NEPL

NEPL. List of String. , .


 type List: class generalized with (T) parameters consisting of 

Set PersistentSet.


 from UnboundedCollections import UnboundedSet as ThirdPartyUnboundedSet. from BoundedCollections import BoundedSet as ThirdPartBoundedSet. from PersistentCollections import PersistentSet as ThirdPartyPersistentSet, PersistentObject. type Set: interface generalized with (T) parameters consisting of Add: have (T) parameters returns nothing, Delete: have (T) parameters returns nothing, IsMember: have (T) parameters returns Boolean. type UnboundedSet: class implementing Set of Object and consisting of private ThirdPartySet: ThirdPartyUnboundedSet, public Add: subprogram with (Object) parameters returning nothing, public Delete: subprogram with (Object) parameters returning nothing, public IsMember: subprogram with (Object) parameters returning Boolean. type BoundedSet: class implementing Set of Object and consisting of private ThirdPartySet: ThirdPartyBoundedSet, public Add: subprogram with (Object) parameters returning nothing, public Delete: subprogram with (Object) parameters returning nothing, public IsMember: subprogram with (Object) parameters returning Boolean. type PersistentSet: class implementing Set of PersistentObject and consisting of private ThirdPartySet: ThirdPartyPersistentSet, public Add: subprogram with (PersistentObject) parameters returning nothing, public Delete: subprogram with (PersistentObject) parameters returning nothing, public IsMember: subprogram with (PersistentObject) parameters returning Boolean. 


()


. , , ┬л┬╗ . , ┬л тАФ ┬╗ . , . .


I тАФ The Interface Segregation Principle


, . . .



, ? , - . , , SQL? , . , API . API , ┬лinterface┬╗, , . . рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?


, , - , DBA . , 100500 , . . , .


, , , ┬л┬╗ . , ┬л interface, ┬╗. DBA . GDPR, HIPAA , .


- . , . рдФрд░ рдЗрд╕реА рддрд░рд╣ред


? , . :


, ( ).

? interface ┬лinterface_billing┬╗, ┬лinterface_customer_data┬╗ . .


, , . pet-project. IActor. , . , IActor : ICollidable, IDisplayble, IUpdatable. ?



( , Camera), . , - . , . , , IDisplayble SpecEffect.


CollisionsController , - ICollidable. , , , SOLID . TileWall -, . CollisionsController . , , IActor , .



: , , .


D тАФ The Dependency Inversion


-. , . , , . , , . , , , , - . , , - . , , - .


"рдпрд╣реА рд╣реИ! .┬╗ тАФ - ImportantClass. , , . , ImportantClass VeryImportantClass, , , EvenMoreImportantClass, , . , , , . , . , .



ImportantClass VeryImportantClass EvenMoreImportantClass. ImportantClass . , , . , IVeryImportantClass IEvenMoreImportantClass, ImportantClass.


ImportantClass VeryImportantClass . ImportantClass ┬л ┬╗, IVeryImportantClass .



. , , .


. .
. .

, ┬л┬╗ ┬л┬╗ - . , , . . , , . , . , -.


. , .


- , . ( MegaSender), . , , SOAP API.


-. SenderAccess. , MegaSender SenderAccess . SenderAccess MegaSender, , MegaSender, MegaSender , Apple i.


MegaSender. LightSender. , SenderAccess c LightSender. , , . , .


SenderAccess, , MegaSender . , SenderAccess MegaSender. MegaSender ┬л ┬╗. , MegaSender, , , . . , LightSender , , LightSender, MegaSender.


, SenderAccess , SenderAccess LightSender . .


, IActor ICollidable, IUpdatable, IDisplayble. , IActor . Actor Player, Enemy, Door, Wall . , .


Blueprint. . , , , , , et cetera. , , , .


, , C#, . , - List<String>. , List<T> List<String>. Actor Actor<TBlueprint>.


, , - . Actor<EnemyBlueprint> Actor<DoorBlueprint> , . , .


- . , , . , . , . , IActor, , ActorsFactory .


. : .



, , . - , . () :


. . . TCP/HTTP/SMPP/SOAP, . ? , TCP/HTTP/SMPP/SOAP- TCP/HTTP/SMPP/SOAP- , . , - . ? . , ┬л ┬╗ ┬л 1000 ┬╗.



. ? - SOLID'? , . , - , .


- , .
- , .

. , -, , . . - , , , , -. , .


. - , :


KISS тАФ . . . , , . , , .


, , Actor . , тАФ , - . , .


YAGNI тАФ . - , , ┬л ┬╗, , - . , . ┬л ┬╗ - . , , . , , .


, OC/P . 50 . , , -. 50 , . , - .


? , , ┬л ┬╗, . ┬л ┬╗ , .


, SOLID . , .



, . , -, , . , .


  • ┬лCode Complete┬╗ . , ┬л ┬╗ - .
  • ┬лClean Code┬╗ . ┬лClean Architecture┬╗.
  • ┬лAgile Principles, Patterns and Practices in C#┬╗ . SOLID . , language-agnostic.

рдкреБрдирд╢реНрдЪ


, . , , . : ! , , language-agnostic .


, language-agnostic. NEPL, : , , , . , , .


, . , , . :


, , , . , , . , . : , .

Source: https://habr.com/ru/post/hi446816/


All Articles