본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 21일차 (2023-06-21) 자바 기초 DAY19_Generalization(상속) 수행_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 6. 22.
## 23. Composite, Command, Observer 디자인 패턴, 추상 클래스/메서드 활용하기

- Generalization(상속) 수행 
  - AbstractBoardListener 추상 클래스 정의
    - 추상 메서드 도입

 

Generalization(상속) 수행 

AbstractBoardListener 추상 클래스 정의

추상 메서드 도입

 

ㄴ bitcamp.handler 패키지에 BoardListener 생성

 

BoardDetailList.java

 

BoardListener.java

ㄴ 중복되는 코드 findBy(int no) 가 있는 BoardDetailList 클래스에서 해당 코드 BoardListener 클래스로 잘라내서 가져오기

ㄴ 중복되는 코드 각각 찾아서 제거해줘야 함

=> 클래스의 상속 관계를 고려하여 필드를 보호하고 상속한 클래스에서 필드에 접근할 수 있도록 protected 접근제어자 사용

 

BoardListener.java

ㄴ ActionListener 인터페이스 import 해주기

 

BoardAddListener.java

ㄴ BoardAddListener 클래스가 BoardListener 클래스를 상속 받도록 구현

 

BoardListListener.java

ㄴ BoardListListener 클래스가 BoardListener 클래스를 상속 받도록 구현

 

BoardDetailListener.java

ㄴ BoardDetailListener 클래스가 BoardListener 클래스를 상속 받도록 구현

 

BoardUpdateListener.java

ㄴ BoardUpdateListener 클래스가 BoardListener 클래스를 상속 받도록 구현

 

BoardDeleteListener.java

ㄴ BoardDeleteListener 클래스가 BoardListener 클래스를 상속 받도록 구현

 

BoardListener.java

ㄴ BoardListener 클래스에 abstract 붙여주기

 

BoardListener.java

 

ㄴ BoardListener 클래스가 추상클래스임을 직관적으로 알려주기 위해 이름을 AbstractBoardListener 로 이름 변경 (refactor 이용)

 

"oo님 반가워요!" 출력하도록 만들기

ㄴ "oo님 반가워요!" 출력하도록 만들어주는 HelloListener 클래스 생성

 

HelloListener.java

 

App.java

ㄴ HelloListener 클래스를 이용하여 

ㄴ helloMenu.addActionListener(new HelloListener()); => helloMenu에 HelloListener를 등록

=> helloMenu를 실행할 때 HelloListener의 service 메서드가 호출됨

ㄴ addActionListener 메서드를 통해 해당 Menu 객체에 이벤트 리스너를 등록함으로써, 특정 이벤트 발생 시 HelloListener의 동작을 수행할 수 있음
ㄴ mainMenu.add(helloMenu); => mainMenu에 helloMenu를 추가

=> mainMenu를 실행할 때 helloMenu도 함께 출력되고 사용자가 선택할 수 있는 메뉴로 제공됨

 

ㄴ HelloListener 클래스를 HeaderListener 라는 이름으로 복사한 후 수정

 

ㄴ HelloListener 클래스를 FooterListenr 라는 이름으로 복사한 후 수정

=>

FooterListener.java

=>