민첩 한 소프트웨어 개발: 원칙, 모델 과 실천 학습 총화

1. 수요 분석:
    서로 다른 종류의 직원 의 정 보 를 수정 하고 먼저 추상 을 추출 합 니 다.
  •      직원 의 기본 정보 수정
  •      고용인 의 급여 결산 지불 수정
  •      직원 정 보 를 수정 하기 전에 먼저 직원 정 보 를 얻어 야 한다
  • .
    2. 추상 적 인 기본 클래스 만 들 기:
       
    /**
     * template method
     * @author 
     *
     */
    public abstract class ChangeEmployeeTransaction {
        //    
        public boolean executeChange(EmployeeBase emp){
            EmployeeBase employee = this.getEmployee(emp);
            if(employee==null) return false;
            if(changeEmployeeBase(employee)&&changeEmpPaymentMethod(employee)){
                return true;
            }
            return false;
        }
        //      
        public abstract EmployeeBase getEmployee(EmployeeBase employee);
        //        
        public abstract boolean changeEmployeeBase(EmployeeBase employee);
        //          
        public abstract boolean changeEmpPaymentMethod(EmployeeBase employee);
        
    }

    3. 시간 제 노동자 의 수정 실현
    /**
     *         
     * @author 
     *
     */
    public class ChangeHourlyEmpTransaction extends ChangeEmployeeTransaction{
    
        @Override
        public EmployeeBase getEmployee(EmployeeBase employee) {
            //  empID  employee
            return getHourlyEmployee((HourlyEmployee) employee);
        }
    
        private HourlyEmployee getHourlyEmployee(HourlyEmployee employee){
            HourlyEmployee hourlyEmployee = new HourlyEmployee();
            hourlyEmployee.setEmpAddress("PD CIA");
            hourlyEmployee.setEmpName("BUSH");
            return hourlyEmployee;
        }
        
        @Override
        public boolean changeEmployeeBase(EmployeeBase employee) {
            //      
            return false;
        }
    
        @Override
        public boolean changeEmpPaymentMethod(EmployeeBase employee) {
            //              
            return false;
        }
    
    }

    4. 영업 사원 정보의 수정 실현
    /**
     *          
     * ps:               
     * @author 
     *
     */
    public class ChangeCommisedEmpTransaction extends ChangeEmployeeTransaction{
    
        @Override
        public EmployeeBase getEmployee(EmployeeBase employee) {
            CommissionedEmployee e = getCommissionedEmployee((CommissionedEmployee) employee);
            return e;
        }
    
        private CommissionedEmployee getCommissionedEmployee(CommissionedEmployee employee){
            CommissionedEmployee employee2 = new CommissionedEmployee();
            employee2.setMonthlSalary((float)3000);
            return employee2;
        }
        
        @Override
        public boolean changeEmployeeBase(EmployeeBase employee) {
            return false;
        }
    
        @Override
        public boolean changeEmpPaymentMethod(EmployeeBase employee) {
            return false;
        }

    5. 월급 을 완전히 받 는 직원 의 정보 수정 실현
    /**
     *          
     * ps:               
     * @author 
     *
     */
    public class ChangeCommisedEmpTransaction extends ChangeEmployeeTransaction{
    
        @Override
        public EmployeeBase getEmployee(EmployeeBase employee) {
            CommissionedEmployee e = getCommissionedEmployee((CommissionedEmployee) employee);
            return e;
        }
    
        private CommissionedEmployee getCommissionedEmployee(CommissionedEmployee employee){
            CommissionedEmployee employee2 = new CommissionedEmployee();
            employee2.setMonthlSalary((float)3000);
            return employee2;
        }
        
        @Override
        public boolean changeEmployeeBase(EmployeeBase employee) {
            return false;
        }
    
        @Override
        public boolean changeEmpPaymentMethod(EmployeeBase employee) {
            return false;
        }
    
    }

    6. 테스트 용례
    public class TestChangeHourlyEmpTransaction extends TestCase{
        
        public void testExecute() throws Exception{
            ChangeEmployeeTransaction hourlyEmpTransaction = new ChangeHourlyEmpTransaction();
            assertEquals(false, hourlyEmpTransaction.executeChange(new HourlyEmployee()));
            ChangeEmployeeTransaction commisTransaction = new ChangeCommisedEmpTransaction();
            assertEquals(false, commisTransaction.executeChange(new CommissionedEmployee()));
            ChangeEmployeeTransaction  salaryTransaction = new ChangeSalaryEmpTransaction();
            assertEquals(false, salaryTransaction.executeChange(new SalaryEmployee()));
        }
        
        
    }

    7. 총화
     이번 의 실현 은 주로 템 플 릿 방법 모델 을 배우 기 위해 코드 가 너무 많은 실현 을 하지 않 는 다.학습 분석 을 통 해 템 플 릿 방법 모델 의 용도 와 OCP 원칙, 그리고 테스트 사례 의 사용 을 초보 적 으로 이해 했다.구체 적 인 업무 인 코딩 을 하기 전에 테스트 프로그램 을 구축 하면 가능 한 한 빨리 문 제 를 발견 하고 프로 그래 밍 효율 을 크게 높 일 수 있다.

    좋은 웹페이지 즐겨찾기