рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реЛрдЪ: рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕реЛрдЪрдирд╛, рднрд╛рдЧ 1

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

рдЪреЗрдирд╕рд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдбрд╛рд▓рддреЗ рд╣реБрдП, рдпрд╣ рдХрд╣рд╛рдиреА рдЖрдкрдХреЛ рдкрд░рд┐рдЪрд┐рдд рд▓рдЧ рд╕рдХрддреА рд╣реИред рд╕рдорд╕реНрдпрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рд╣реИ - рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╕реАрдЦрдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╛рд╖рд╛ рдХрд╛ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗрд╡рд▓ рд╡рд┐рд╡рд░рдг рд╣реИред рдкреВрд░реА рд╕реВрдХреНрд╖реНрдорддрд╛ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реЛрдЪрдирд╛ рд╕реАрдЦрдирд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ - рдПрдХ рдЪреЗрдирд╕реЙ рдЗрдВрдЬрди рдФрд░ рдПрдХ "рдХрд╛рд░реНрдпрд╛рддреНрдордХ" рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ред

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

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

рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧреАрдХрд░рдг


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

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

рдЗрдВрдкреАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░

рдЙрдкрд░реЛрдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд░реНрдЧ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1. NumberClassifier, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди
public class Classifier6 { private Set<Integer> _factors; private int _number; public Classifier6(int number) { if (number < 1) throw new InvalidNumberException( "Can't classify negative numbers"); _number = number; _factors = new HashSet<Integer>>(); _factors.add(1); _factors.add(_number); } private boolean isFactor(int factor) { return _number % factor == 0; } public Set<Integer> getFactors() { return _factors; } private void calculateFactors() { for (int i = 1; i <= sqrt(_number) + 1; i++) if (isFactor(i)) addFactor(i); } private void addFactor(int factor) { _factors.add(factor); _factors.add(_number / factor); } private int sumOfFactors() { calculateFactors(); int sum = 0; for (int i : _factors) sum += i; return sum; } public boolean isPerfect() { return sumOfFactors() - _number == _number; } public boolean isAbundant() { return sumOfFactors() - _number > _number; } public boolean isDeficient() { return sumOfFactors() - _number < _number; } public static boolean isPerfect(int number) { return new Classifier6(number).isPerfect(); } } 

рдЗрд╕ рдХреЛрдб рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рдмрд╛рддреЗрдВ:

(рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ) рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░

рдЙрд╕реА TDD рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ рдЖрдк рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2 рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2. рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧреАрдХрд╛рд░рдХ
 public class NumberClassifier { static public boolean isFactor(int number, int potential_factor) { return number % potential_factor == 0; } static public Set<Integer> factors(int number) { HashSet<Integer> factors = new HashSet<Integer>(); for (int i = 1; i <= sqrt(number); i++) if (isFactor(number, i)) { factors.add(i); factors.add(number / i); } return factors; } static public int sum(Set<Integer> factors) { Iterator it = factors.iterator(); int sum = 0; while (it.hasNext()) sum += (Integer) it.next(); return sum; } static public boolean isPerfect(int number) { return sum(factors(number)) - number == number; } static public boolean isAbundant(int number) { return sum(factors(number)) - number > number; } static public boolean isDeficient(int number) { return sum(factors(number)) - number < number; } } 

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

рдХрд╛рд░реНрдп


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

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

рдЙрдЪреНрдЪрддрд░ рдХрд╛рд░реНрдп

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

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

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3. рд╕рдВрднрд╛рд╡рд┐рдд рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛрдб рдЯреЗрдореНрдкрд▓реЗрдЯ
 public void addOrderFrom(ShoppingCart cart, String userName, Order order) throws Exception { setupDataInfrastructure(); try { add(order, userKeyBasedOn(userName)); addLineItemsFrom(cart, order.getOrderKey()); completeTransaction(); } catch (Exception condition) { rollbackTransaction(); throw condition; } finally { cleanUp(); } } 

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 3 рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдирджреЗрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рдЧ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдо, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдХрд░ OOP рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ 2 " рдЧреИрдВрдЧ рдСрдлрд╝ рдлреЛрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди " рдкреИрдЯрд░реНрди: рдХрдореНрдмрд╛рдЗрди рдореЗрдердб рдПрдВрдб рдХрдорд╛рдВрдб рдкреИрдЯрд░реНрди рдХреЛ рдорд┐рд▓рд╛рдКрдБрдЧрд╛ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд┐рдзрд┐ рдпрд╣ рдорд╛рдирддреА рд╣реИ рдХрд┐ рдореБрдЭреЗ рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред "рдХрдорд╛рдВрдб" рдкреИрдЯрд░реНрди рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд┐рд╖реНрдкрд╛рджрди рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реВрдЪреА 4 рдЗрди рджреЛ рдкреИрдЯрд░реНрди рдХреЛ рдХреЛрдб 3 рдореЗрдВ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 4. рдЦрдВрдбрд┐рдд рдЖрджреЗрд╢ рдХреЛрдб
 public void wrapInTransaction(Command c) throws Exception { setupDataInfrastructure(); try { c.execute(); completeTransaction(); } catch (Exception condition) { rollbackTransaction(); throw condition; } finally { cleanUp(); } } public void addOrderFrom(final ShoppingCart cart, final String userName, final Order order) throws Exception { wrapInTransaction(new Command() { public void execute() { add(order, userKeyBasedOn(userName)); addLineItemsFrom(cart, order.getOrderKey()); } }); } 

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

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

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 5. рдХрдорд╛рдВрдб рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЧреНрд░реВрд╡реА рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
 def wrapInTransaction(command) { setupDataInfrastructure() try { command() completeTransaction() } catch (Exception ex) { rollbackTransaction() throw ex } finally { cleanUp() } } def addOrderFrom(cart, userName, order) { wrapInTransaction { add order, userKeyBasedOn(userName) addLineItemsFrom cart, order.getOrderKey() } } 

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

рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдХрд╛рд░реНрдп

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

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6. рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧреАрдХрд╛рд░рдХ
 public class FNumberClassifier { public boolean isFactor(int number, int potential_factor) { return number % potential_factor == 0; } public List<Integer> factors(final int number) { return range(1, number+1).filter(new F<Integer, Boolean>() { public Boolean f(final Integer i) { return number % i == 0; } }); } public int sum(List<Integer> factors) { return factors.foldLeft(fj.function.Integers.add, 0); } public boolean isPerfect(int number) { return sum(factors(number)) - number == number; } public boolean isAbundant(int number) { return sum(factors(number)) - number > number; } public boolean isDeficiend(int number) { return sum(factors(number)) - number < number; } } 

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6 рдФрд░ 2 рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: рдпреЛрдЧ () рдФрд░ рдХрд╛рд░рдХ () ред sum () Functional Java рдореЗрдВ List class рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ foldLeft () рдкрджреНрдзрддрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреА рд╣реИ ред рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪреА рд╣реЗрд░рдлреЗрд░ рдХреЛ рдХреИрдЯрдореЛрд░реНрдлрд┐рдЬреНрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪреА рддрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, "рд╕реВрдЪреА рдХреЛ рдореЛрдбрд╝рдирд╛" рдХрд╛ рдЕрд░реНрде рд╣реИ:
  1. рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд▓реЗрдВ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
  2. рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
  3. рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ рджреЛрд╣рд░рд╛рдПрдВред

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 6 рдореЗрдВ рдПрдХ рдФрд░ рдкреЗрдЪреАрджрд╛ рддрд░реАрдХрд╛ рдХрд╛рд░рдХ рд╣реИ () , рдЬреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ "рдкрд░рд┐рдгрд╛рдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ, рди рдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдЪрд░рдгреЛрдВ"ред рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдХреНрдпрд╛ рд╣реИ? рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдирдВрдмрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдХреИрд╕реЗ рднреЗрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╡рд┐рднрд╛рдЬрдХ рд╣реИрдВ? рдпрд╣ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ - рдореИрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рдореЗрд░реЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдкрдврд╝рддрд╛ рд╣реИ: рд╣рдо рдкреНрд░рд╢реНрди рдореЗрдВ 1 рд╕реЗ рдПрдХ рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рд╕реВрдЪреА рдХреЛ f () рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдХреЛрдб рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдкреНрд░рд╡реГрддреНрддрд┐ред рдЕрддреАрдд рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди, рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣, рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЬреИрд╕реА рдмрд╣реБрдд рд╕реА рдХрд╖реНрдЯрдкреНрд░рдж рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рд╕рдордп рдХреЗ рд╕рд╛рде, рдЗрди рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдореНрд╕ рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдЦреБрдж рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрд╛ рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рдХрдВрдкреНрдпреВрдЯрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рдо рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдирд┐рдпрдорд┐рдд, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕рднреА рдореЗрдореЛрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╢рдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрджрдо рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕рдордп рдмрд┐рддрд╛рддреЗ рд╣реИрдВред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рджреМрд░рд╛рди, рдореИрдВ рдЗрд╕рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

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

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


All Articles