Govern/Eclipse SE -상속,클래스,타입

07-23(금) 1.커플링 중첩클래스

Mary's log 2021. 7. 23. 09:33

※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.


■ 인터페이스 디커플링

-나는 오라클DBMS-emp를 쓰는데, 회사에서는 MySQL DBMS-emp를 씀...

 

 

-프로그래밍끼리 디커플링 : 모듈사이를 인터페이스로 연결, 구현체를 분리

  모듈사이의 연결고리(의존관계)를 인터페이스를 사용하여 두 모듈의 의존성을 감소하여,

  개발 및 유지보수가 용이하게 처리방식

-객체들 간에 결속력이 강할 경우, 그 프로그램의 구성요소 중 하나를 수정하게 되면 그와 연관된 모든 구성요소도 새로 수정해야함.

  그러나 인터페이스를 이용한 설계가 잘 된 경우에는 수정하고자 하는 요소만 수정하여 재배포.

 

 

09Day7 프로젝트

-나는 오라클DBMS-emp를 쓰는데, 회사에서는 MySQL DBMS-emp를 씀...

┌내가 쓰던 Oracle클래스와 회사가 쓰던 MySQL 클래스를 생성해줌┐

┌DBMain에서 Oracle클래스 쓰다가 SQL 들어오면 Oracle 들어오면 다시 다 써야함┐

 

∴ A클래스의 코드를 수정했는데, B클래스의 코드도 수정해야함.
   =이런 걸 "커플링" 되었다고 하고, 서로 연관이 너무 깊게 되어있다고 하는 것.   
    =>그래서 우리는 최대한 의존하지 않도록 "디커플링" 해주기 위해 중간에 완충제를 마련.

 

┌완충제 클래스 DBService 생성┐

┌그러면 이제 DBMain┐

ㄴ아까처럼 Oracle클래스나 SQL클래스로 바로 객체생성한게 아니고,
   DBService로 객체생성하고 DBService에 접근해서 호출하면,   
   좀 빙 둘러서 가지만, 전부 싹다 수정해야하는 불편함은 없는거임. 


■ 중첩클래스

클래스 안에 또 다른 클래스가 정의 근데 거의 안 쓰임

 

 

 

 

-Outer클래스를 통해서만 Inner클래스에 접근가능

-Inner클래스 : Outer클래스의 멤버처럼 동작
-Inner클래스 : Outer클래스의 멤버변수,멤버함수

                  사용가능(private여도)
-Inner클래스 안에서 static변수 불가능

 

 

 

 

< Inner클래스 종류 4가지 >

anonymous는 꼭 기억하기★

 

 

09Day8 프로젝트-Outer Inner 클래스

 

 

 

 

anonymous Inner 클래스

 

09Day8 프로젝트-클래스 Bird, Flyer, 

 

 


 

 인터페이스이름 <정렬기준> 

ㄴ < Person > 외에는 다른 것들이 접근 못하게 해주는것. Generic 때 배움.

 

책204~5쪽 예제 7-8 이해하기
09Day8 프로젝트- com.test - Ex07_8

1. 클래스 Person에 멤버변수랑 생성자랑, toString 함수 생성

2. 클래스 PersonComp에 implements상속받는데, 인터페이스 Comparator를

배열 방 2개를 가져와서 인자 기준으로 비교하고, 차순 정렬하게 함.

3. 클래스 Ex07_8 메인함수에는

클래스 Person 타입의 변수ps에, 새로운 객체[클래스 Person타입의 (인자들)]을, 저장함

...

..

.

클래스Person 타입의 변수ps 배열에 , p~p4 저장

Array.sort( 배열 변수ps를   ,    new PersonComp(   )  ) ; 로 정렬하라? (  )안에 기준 넣음

foreach문으로 (클래스Person타입의 변수person에 : 배열변수ps) 의 "값들"을 자동순서대로 저장 {

                      sysout. 변수 person를 보여라

                    }