우주코딩
유스케이스, 추상클래스, 스택 사용하기 본문
유스케이스
액터가 시스템을 통해 달성하려는 업무 목표
유스케이스명 = 업무명으로 이름을 짓는다. 구매하기, 주문하기... etc
유스케이스 관계
포함관계 (include) = 필수작업
회원가입 include 주소검색
주소 검색이 필수이기 때문에 해당 작업을 건너뛰고 회원가입을 진행할 수 없다확장관계(extend) = 선택작업
회원가입 extend 사진등록
사진등록은 회원가입을 확장한다
사진등록을 건너뛰고 회원가입 작업을 완료할 수 있다.
확장점 (extension point) 에서 작업을 수행할지 선택한다.
프로젝트
추상메서드밖에 없을경우에 인터페이스로 전환하는 것이 유지보수에 좋다
상속해줄 필드도 없고 구현해야할 메서드만 제공할 때
같을 타입으로 묶으면서 구현 규칙을 정하는 경우 인터페이스 문법을 적용하는 것이 낫다.
인터페이스 = 메서드 사용 규칙
10-i 추상클래스 적용
인터페이스의 일부 규칙을 미리 구현할 필요가 있을 때 추상 클래스 활용,
또는 서브클래스에게 상속해 줄 필드나 메서드가 있을 때
- size() 규칙 추가하기
리스트인터페이스를 구현하는 두 클래스 모두 사이즈라는 필드를 가지고 있다
인터페이스에 사이즈라는 규칙을 추가한다.
또 추상클래스를 도입하여 서브 클래스에게 field 사이즈와 사이즈라는 메서드를 물려준다
기존의 ArrayList 와 LinkedList가 AbstractList를 상속받는다
이렇게 인터페이스와 콘크리트 중간에서 추상클래스가 미리 인터페이스의 일부 메서드를 구현해주면 서브클래스를 만들 때 편하다.
추상클래스를 쓰는 또 다른 용도
- AbstractList 정의하고 상속시켜주기
(필드 접근의 기본은 package private이다 == default)
11-a 스택 구현과 사용
자료구조 다루기 ^^
스택이란,, 데이터를 넣고 꺼내는 것
1-2-3-4-5
5-4-3-2-1
라스트 인 퍼스트 아웃
push pop
예 1) 웹브라우저에서 방문사이트 URL저장시
2) bread crumb 빵조각 구현할 때(사이트 이동경로)
List 인터페이스에 인덱스로 항목을 꺼내는 메서드(get(int))를 추가한다.
애노테이션 @Override 붙여주어야 재정의를 잘 하고있는지 알 수 있다.
인덱스로 목록에서 값을 꺼내거나 삭제하는 메서드를 준비
Object remove(int index);스택방식으로 데이터를 관리하는 것! (역순으로 꺼내는 방식이 필요하다면) java.util.Stack을 모방해서 ArrayList 상속받는 Stack클래스 구현
push(), pop() 메서드 추가하기
- 사용자가 입력한 명령을 Stack에 보관하기
명령입력이 아니라 메뉴를 사용했기 때문에
bread crumb 방식으로 접근해야한다 ㅜ
- 사용자가 선택한 메뉴의 bread crumb을 출력한다. bread crumb을 스택을 통해 만든다
스택 - 라스트 인 퍼스트 아웃/ 브래드크럼을 구현할 때 적합
큐 - 퍼스트 인 퍼스트 아웃 / 예약 처리를 구현할 때 적합
'Project' 카테고리의 다른 글
File 입출력 사용하기 (0) | 2021.09.09 |
---|---|
제네릭 적용 (0) | 2021.08.22 |
Composite 디자인 패턴 적용하기 (0) | 2021.08.03 |
클래스 문법 활용하기, 패키지 만들기 (0) | 2021.07.16 |
메서드, 메서드 문법, 메서드 사용법, 메서드의 활용 (0) | 2021.07.14 |