티스토리 뷰

기술 공부

UML 시험 대비

十月 2023. 6. 12. 10:38

// java 기초 다루는 느낌 (?
// 230613 시험은 문제 해결 시나리오 (찾아서 해결...)


1. 유스케이스 다이어그램 // 동적

액터와 유스케이스 (연관 관계)

액터 : 서비스에 대해 어떠한 요청을 받는 주체 // 졸라맨
유스케이스 : 눈에 보이는 기능 (세세한 것은 빼고) // 동그라미
 
→ 유스케이스는 페이지 단위가 아닌 기능 단위로 생각해야 함.
→ '마이페이지'가 아닌 '회원 정보 수정'과 같은 기능 단위로 기술
 

관계

실선 (연관 관계) : 액터와 유스케이스 사이
 
점선 (포함 include / 확장 extends 관계) : // 반드시 들어가야 하는 관계
포함 관계 ex) '내 정보 조회'를 하려면 필수로 '로그인'을 해야 하는 것
 '내 정보 조회' → '로그인' 반드시
확장 관계 ex) '파일 첨부' 와 '글 등록' 파일 첨부 → 글 등록
 굳이 꼭 해야 하는 건 아님 선택적
 파일 첨부를 하기 위해서는 글 등록을 해야 하지만, 선택적!
 
(짝사랑) '나는 네가 있어야 해..'  화살표 방향이 중요

≫ 기능이 재사용(공유) 될 때는, 포함 관계로 이루어지는 것이 더 바람직하다.
 
*주의
유스케이스가 동적 다이어그램인 것은 맞지만 시간의 흐름이 나타나선 안 됨
시간의 흐름은 시퀀스 다이어그램에서만 나타나는 것!
extends를 많이 사용하다보면 흐름이 보이기 때문에 액터 입장에서 연관 관계를 자주 쓰자.
 


2. 클래스 다이어그램 // 정적

 
 

기본 구조

클래스 명
필드
메소드

com.kh.spring.member.model.vo.Member
패키지.클래스명
 
 

인터페이스 구조

   ○

기본적으로 사용
혹은

<<interface>>
클래스명
 
 

 
 

생성자 관련

public void method(){}	// 반환 타입 void
public Member(){}	// 반환 타입 X : 생성자

1. 반환 타입 없음,
2. 생성자 이름 = 클래스 이름,
3. 매개 변수는 있어도 없어도 됨

→ 기본 생성자는 만들어도, 매개 변수 생성자는 안 만들 수 있음
// 매개변수 생성자만 만들면 추후 JVM이 기본 생성자 안 만들어줌

 

+) 싱글톤 패턴 (Math 클래스)
→ 모든 메소드, 필드를 전부 Static으로 두고 생성자를 private

 
 

≫ default는 기호로 나타낼 수 있어도, 직접 예약어로 적으면 안 됨
 
 

필드명/메소드명 : static

 

클래스명/메소드명 : abstract (추상)

≫ abstrace는 클래스와 메소드밖에 없음 (필드 X)
 

필드명/메소드명(대문자) : final

 
+)
abstract Class(추상 클래스)는 미완성이라 자식 클래스를 만들어 자식에서 완성을 시킴
근데 final은 상속을 시킬 수 없어서 동시에 사용할 수 없는 것임.
static 공유인데 abstract, 즉 미완성된 걸 공유할 수 없어서 그럼.
abstract는 미완성이라 자식이 완성시켜야 하는데 private은 접근 불가능.
 
 

인터페이스는 객체 생성 불가

왜냐, 상속 필드와 추상 메소드만 들어갈 수 있음

public interface MemberDAO{
	public final int num = 10;	// 필드는 값을 무조건 넣어야 함
	public abstract void print(); 	// 미완성, 몸통 {} X
    
    ▼
    
    [public final] int num = 10;
    [public abstract] void print();
    // public final, public abstract 생략 가능
    // 무조건 상속 필드와 추상 메소드이기 때문!
}
public abstract class Coffee{
    private int tem;		// 일반 필드
    public void drink(){}	// 일반 메소드, 몸통 {} O
    public abstract void makeCoffee();	// 추상 메소드
	
    1. 추상 메소드가 들어가 있으면 추상 클래스가 됨
    → 일반 필드, 일반 메소드를 넣어도 상관 없음!
    2. 추상 메소드가 있으면 무조건 추상 클래스이다.
    하지만 추상 메소드가 있어야 추상 클래스를 만드는 건 아니다.
    → 추상 메소드가 없어도 추상 클래스를 만들 수 있다.
}

 


클래스 다이어그램의 관계

 

연관 관계

// 필드에서 참조하는 것

 
서로 참조하는 경우 꺽쇠 생략

public class A {
	private B b;
}

public class B {
	private A a;
}

 
만약 A → B 일 경우 (한 쪽 방향으로 참조하는 경우)

public class A {
	private B b;
}

public class B {
	
}

 
A → B 인데 0..* 인 경우

public class A {
	private List<B> b;	// 여러 번 참조
}

public class B {

}

 

의존 관계

// 메소드에서 참조하는 것

public class A {
    public void method1(B b){}	// 매개변수로 참조하거나,
    public void method2(){	// 객체 생성으로 참조
    	B b = new B();
    }
}

 

일반화 관계

public class A extends B {
}

 

실체화 관계

public class A implements B {
}

 

Java는 단일 상속이 기본이라 extends는 한 개만 가능
하지만 인터페이스 implements는 여러 개 상속 가능
≫ 인터페이스 간의 상속은 extends로 나타냄

public class SmartPhone extends Telephone implements MultiMedia, Camera{
}

 

https://seewol.tistory.com/143

클래스 다이어그램 오답노트

seewol.tistory.com


3. 시퀀스 다이어그램

// 흐름이 나타날 수밖에 없음

 
기본 흐름 : 기본적인 흐름
대안 흐름 : 또 다른 경우의 수가 생겼을 때
예외 흐름 : 에러 등 잘못 흘러갔을 때
→ 이러한 대안, 예외 흐름을 나타내기 위해 결합 조각이 필요!
 
결합 조각
alt : if- if else
opt : if
loop
break
...
 
 

'기술 공부' 카테고리의 다른 글

Session 로그인 시 유지 시간  (0) 2024.01.16
@RequestParam 과 @ModelAttribute  (0) 2024.01.16
클래스 다이어그램 오답노트  (0) 2023.06.02
JavaScript 공부  (0) 2023.04.25
JavaScript 오답노트  (0) 2023.04.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/06   »
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
글 보관함