1.응집도와 결합도
응집도와 결합도에 대해 읽어보니 헷갈리고 어려웠는데 느낀대로 말해보면 결합도는 의존성,응집도는 한 모듈이 갖고있는 하나의 기능을 따지는듯하다.
*결합도가 낮으면 좋고 높으면 그닥 / 응집도가 낮으면 그닥 높으면 좋다
결합도,응집도 여러 단계로 나뉘어 지는데 이건 자세히 들어가려면 거의 책 한권의 내용일듯해서 일단 크게만 보고 예를들어 보면
-결합도: 비밀번호 변경하는 A클래스 있을때 A클래스에서는 비번 변경하려는 회원정보 불러오기 B클래스,변경비번확인 체크하는 C클래스,변경완료하고 회원정보 등록하는 D클래스 이렇게 필요하니 결합도가 있다 할 수 있는듯하다.
-응집도: 회원가입 하는 클래스안에서 비밀번호 변경하는 메소드가 있을시, 회원가입 클래스에서는 회원 가입만 해야하는데 완전 다른 행동인 비밀번호 변경하는게 들어있어서 응집도가 낮다 볼 수 있는듯하다.
Class 회원가입 {
DataProcessing dataprocessing = new DataProcessing();
public void 회원가입(닉네임,비번,비번확인,휴대폰번호){
dataprocessing.닉네임 중복체크();
dataprocessing.중복 이메일 체크();
dataprocessing.비밀번호 조건체크();
dataprocessing.비밀번호 확인이랑 같은지 체크();
dataprocessing.휴대폰 본인확인 체크();
dataprocessing.회원리스트에 등록();
}
}
이걸 보면 회원 가입 클래스에서는 오직 DataProcessing 클래스에만 의존하기 때문에 결합도가 좀 낮다고 볼 수 있으나
DataProcessing클래스는 맞는지 틀린지 처리하는 클래스인데 회원을 등록하는 기능까지 갖고 있어서 응집도가 좀 높다고 볼수 있다.
Class 회원가입 {
DataProcessing dataprocessing = new DataProcessing();
PhoneNumCheck numCheck = new PhoneNumCheck();
JoinRoute joinRoute = new JoinRoute();
CreateUser createUser= new CreateUser();
public void 회원가입(닉네임,비번,비번확인,휴대폰번호){
dataprocessing.닉네임 중복체크();
dataprocessing.중복 이메일 체크();
dataprocessing.비밀번호 조건체크();
dataprocessing.비밀번호 확인이랑 같은지 체크();
numCheck.휴대폰 본인확인 체크();
joinRoute.어떻게 알고 가입했는지();
createUser.회원리스트에 등록();
}
}
이제 위에 첫번째 코드부분 설명은 없었고 잊어버렸다하고 이번꺼 보면
이번에는 DataProcessing,PhoneNumCheck,JoinRoute,CreateUser 이렇게 4개의 클래스에 의존해서 결합도가 좀 높다고 볼 수 있고, DataProcessing,PhoneNumCheck,JoinRoute,CreateUser 클래스안 메소드들은 회원가입 메소드안에서 호출 하는 메소드만 존재한다고 했을때 응집도가 좀 낮다고 볼 수 있다.
*지금은 예시로 이해를 위해서 결합도,응집도가 높다,낮다 한거지만 프로그램의 크기에 따라 결합도,응집도 세기가 결정되는듯하니 개수로만 보고 응집도,결합도 낮다,높다 판단하면 안 되는듯하다!!