결합도: 하나의 클래스가 다른 클래스와 얼마나 많이 연결되어 있는지를 나타내는 표현 -> 결합도가 높은 프로그램은 유지보수가 어렵다.
ex) 서로 연결된 클래스끼리
하나를 고쳤을 때 다른 클래스도 고쳐야 할 경우-> 결합도 높음,의존성 높음
하나를 고쳤을 때 다른 클래스를 고치치 않아도 됨-> 결합도 낮음, 의존성 낮음
아예 클래스끼리 영향을 미치지 않을 수는 없지만 유지 보수의 용이성을 위해 최대한 결합도를 낮춰야 한다.
결합도를 낮추기 위해 '다형성' 개념이 사용된다. -> 공통적인 내용은 인터페이스에 넣고 상속을 받도록한다.(클래스와 클래스를 직접 연결하지 말고 상속, 오버라이딩을 이용해서 간접적으로 연결)
스프링은 기존의 방식과 다르게 객체를 소스로 적어 직접 만들지 않는다. 객체는 스프링 컨테이너가 만들고 개발자는 필요할 때 객체를 불러와 사용한다. 또한 스프링 방식으로 설계하면 자바코드에는 거의 손을 대지 않고 xml파일(환경설정 파일)만 편집하여 내용을 수정하는 것이 가능하다.
스프링은 자바 자체에서 제공되는 라이브러리가 없기 때문에 외부에서 다운로드 받아서 넣어야 한다. 이 과정을 편리하게 만든 것이 메이븐(Maven)이다.
메이븐(Maven)은 pom.xml의 dependencies 설정을 통해서 필요한 라이브러리를 다운받아서 저장소에 관리하는 역할을 한다 즉, 자동으로 라이브러리를 다운로드 받아서 처리해주는 툴이다.
<몰랐던 내용>
JAR파일 -> 자바의 라이브러리 등을 배포하기 위한 압축 파일
new를 사용하여 새로운 객체를 생성할 때 앞/뒤 자료형이 다른 경우 앞은 앞이 부모타입, 뒤가 자식타입이다.
절대경로: 최상위 디렉토리부터 대상 파일까지의 모든 경로
상대경로: 현재 디렉토리를 기준으로 대상 파일까지의 경로
최상위 디렉토리 /
현재 디렉토리 ./
현재 디렉토리의 상위 디렉토리 ../