Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

우주코딩

유스케이스, 추상클래스, 스택 사용하기 본문

Project

유스케이스, 추상클래스, 스택 사용하기

우주코딩 2021. 8. 22. 20:13

유스케이스

액터가 시스템을 통해 달성하려는 업무 목표
유스케이스명 = 업무명으로 이름을 짓는다. 구매하기, 주문하기... etc

유스케이스 관계

  1. 포함관계 (include) = 필수작업
    회원가입 include 주소검색
    주소 검색이 필수이기 때문에 해당 작업을 건너뛰고 회원가입을 진행할 수 없다

  2. 확장관계(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을 스택을 통해 만든다

스택 - 라스트 인 퍼스트 아웃/ 브래드크럼을 구현할 때 적합
큐 - 퍼스트 인 퍼스트 아웃 / 예약 처리를 구현할 때 적합

Comments