JAVA기초 -13

아기코딩단2·2022년 4월 5일
0

메서드 이름이 바뀌면 일관성이 깨진다 -> 유지보수가 어렵다.

인터페이스 - 객체 사용 규칙을 정의 (즉 프로그래밍의 일관성을 지원)하는 문법 / 객체 사용규칙을 통일하기 위해서
메서드 호출 규칙을 정의하게 되면 객체가 다르더라도 같은 이름을 호출하기 때문에 일관성이 있기 때문에 프로그래밍에 일관성이 있다.
장점 - 객체의 교체가 쉬움(다형적 변수?)

concrete - 구현체

사용하는 애 caller
caller에 의해서 사용되는 애 callee
보통은 caller/ callee 둘중에 하나만 만듦

인터페이스는 객체 메서드 호출 규칙을 정의하는 것이기 때문에 메서드를 작성할 때 메서드 몸체를 작성하지 말아야한다.
메서드 바디가 없는 메서드를 추상 메서드라고 한다.(abstract)

인터페이스는 기본이 public이라서 생략가능하다

공개되지않은 규칙은 규칙이 아니다. 그래서 무조건 public - 인터페이스
인터페이스도 결국 class다

JSON사용할 때는 addAll사용

BoardDao 구현체를 spring boot가 주입하도록 변경한다.
-클래스 선언부에 @Repository 애노테이션을 붙인다.
DAO 에는 @Repository 애노테이션을 붙여야함

Dao 붙이거나 Repository 이 붙어있으면 데이터를 다루는 클래스라고 생각하면 됨
그래서 여기다가 Spring Boot 애노테이션을 붙일 때 @Repository 붙여야함 다른 거 붙여도 되지만 개발자들끼리 알 수 있도록 약속
@Repository = 저장소

객체 주입 - 의존 객체 주입 dependency injection(DI) (Spring Boot 기능)

@Autowired - 필드 선언부에 이 애노테이션을 붙여서 표시해두면 Spring Boot 가 BoardController 객체를 만들 때 BoardDao 구현체를 찾아 자동으로 주입한다.(interface)

추상클래스 - 서브클래스가 반드시 가져야할 공통분모를 정의한 클래스/ 보통 상속의 generalization 과정에서 식별(identify)한다.

public abstract class AbstractBoardDao implements BoardDao{
추상클래스는 추상 메서드로 해야한다.

protected ArrayList boardList = new ArrayList();
서브클래스에서 접근해야하는 필드라면 접근 범위를 protected로 설정한다

save()는 서브클래스 마다 방법이 다르다.
그래서 수퍼클래스에서 save매서드를 구현해도 의미가 없다!
이런 method 를 abstract method로 선언한다.
서브클래스에서 오버라이딩 할 ㅅ ㅜ있도록 접근 가능해야한다.
서브클래스가 다른 패키지에 있을 수있다.
이런 경우 메서드의 접근 범위를 protected로 한다.
protected abstract void save() throws Exception;

generalization 의 장점 코드를 최소화 시킨다

container - 객체를 관리한다(생성/보관/삭제)

수퍼클래스가 인터페이스를 구현했으면 서브 클래스도 인터페이스를 구현한 거임

profile
레거시 학살자

0개의 댓글