티스토리 뷰
// 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 |