관리 메뉴

Partially Committed

[Spring] Spring κ³Ό OOP λ³Έλ¬Έ

πŸ’» Study !/Spring

[Spring] Spring κ³Ό OOP

WonderJay 2023. 1. 4. 17:34
728x90
λ°˜μ‘ν˜•
SMALL

Spring κ³Ό OOP


A. μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ™€ μŠ€ν”„λ§ λΆ€νŠΈλž€?

  μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λŠ” μ•„λž˜μ™€ 같이 정리할 수 μžˆλ‹€.

- 핡심 기술 : μŠ€ν”„λ§ DI μ»¨ν…Œμ΄λ„ˆ, AOP, 이벀트, 기타

- μ›Ή 기술 : μŠ€ν”„λ§ MVC, μŠ€ν”„λ§ WebFlux

- 데이터 μ ‘κ·Ό 기술 : νŠΈλžœμž­μ…˜, JDBC, ORM 지원, XML 지원

- 기술 톡합 : μΊμ‹œ, 이메일, 원격접근, μŠ€μΌ€μ€„λ§

- ν…ŒμŠ€νŠΈ : μŠ€ν”„λ§ 기반 ν…ŒμŠ€νŠΈ 지원

- μ–Έμ–΄ : μ½”ν‹€λ¦°, 그루비

- μ΅œκ·Όμ—λŠ” μŠ€ν”„λ§ λΆ€νŠΈλ₯Ό ν†΅ν•΄μ„œ μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λ₯Ό νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€. (λ³΅μž‘ν•œ 초기 μ„€μ • X )

 

  μŠ€ν”„λ§ λΆ€νŠΈλŠ” μ•„λž˜μ™€ 같이 정리할 수 μžˆλ‹€.

- μŠ€ν”„λ§μ„ νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 지원해쀀닀.

- Tomcat κ³Ό 같은 web server κ°€ λ‚΄μž₯λ˜μ–΄ μžˆμ–΄μ„œ λ³„λ„λ‘œ μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

- starter 쒅속성을 μ œκ³΅ν•˜μ—¬ λΉŒλ“œ ꡬ성을 μ‰½κ²Œ ν•  수 μžˆλ‹€.

- μŠ€ν”„λ§κ³Ό μ„œλ“œνŒŒν‹° 라이브러리λ₯Ό μžλ™μœΌλ‘œ ꡬ성해쀀닀.

- λ©”νŠΈλ¦­, μƒνƒœ 확인, μ™ΈλΆ€ ꡬ성과 같은 ν”„λ‘œλ•μ…˜ μ€€λΉ„ κΈ°λŠ₯을 μ œκ³΅ν•΄μ€€λ‹€.

- 관둀에 μ˜ν•œ κ°„κ²°ν•œ 섀정이 κ°€λŠ₯ν•˜λ‹€.

 

" Spring 은 java 기반의 ν”„λ ˆμž„μ›Œν¬λ‘œμ’‹μ€ 객체 지ν–₯ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„  κ°œλ°œν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” ν”„λ ˆμž„μ›Œν¬μ΄λ‹€."

 

B. 객체 지ν–₯의 κ°œλ…κ³Ό 쒋은 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€?

  객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ 컴퓨터 ν”„λ‘œκ·Έλž¨μ„ λͺ…λ Ήμ–΄μ˜ λͺ©λ‘μœΌλ‘œ λ³΄λŠ” μ‹œκ°μ—μ„œ λ²—μ–΄λ‚˜μ„œ μ—¬λŸ¬ 개의 독립 λ‹¨μœ„(객체)λ“€μ˜ λͺ¨μž„μœΌλ‘œ νŒŒμ•…ν•˜κ³ μž ν•˜λŠ” κ΄€μ μœΌλ‘œ, 각각의 κ°μ²΄λŠ” 메세지λ₯Ό μ£Όκ³ λ°›κ³  이λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.(ν˜‘λ ₯) μ΄λŸ¬ν•œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ„ μœ μ—°ν•˜κ³  변경이 μ‰½κ²Œ λ§Œλ“€κΈ° λ•Œλ¬Έμ— λŒ€κ·œλͺ¨ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— 많이 μ‚¬μš©λœλ‹€. μ£Όμš”ν•œ νŠΉμ§•μ€ 좔상화, μΊ‘μŠν™”, 상속, λ‹€ν˜•μ„±μ΄λ©° κ°€μž₯ 핡심적인 κ°œλ…μ€ λ‹€ν˜•μ„±(Polymorphism) 이닀.

 

  μ—­ν• κ³Ό κ΅¬ν˜„μœΌλ‘œ 세상을 κ΅¬λΆ„ν•˜μ˜€μ„ λ•Œ, μžλ™μ°¨λΌλŠ” 역할이 있으면 이것에 λŒ€ν•œ κ΅¬ν˜„μ²΄λŠ” K3, μ•„λ°˜λ–Ό, ν…ŒμŠ¬λΌ λͺ¨λΈ3 κ°€ μžˆμ„ 것이고 λ‘œλ―Έμ˜€μ™€ μ€„λ¦¬μ—£μ΄λΌλŠ” 역할이 μžˆλ‹€λ©΄ 이것에 λŒ€ν•œ κ΅¬ν˜„μ²΄λŠ” μž₯동건, μ›λΉˆ, κΉ€νƒœν¬, μ†‘ν˜œκ΅κ°€ μžˆμ„ 것이닀. 이와 같이 λͺ¨λ“  κ°œλ…μ„ μ—­ν• κ³Ό κ΅¬ν˜„μœΌλ‘œ κ΅¬λΆ„ν•˜μ—¬ 보닀 λ‹¨μˆœν•˜κ²Œ 섀계가 κ°€λŠ₯ν•˜κ³ , 변경이 νŽΈλ¦¬ν•΄μ§„λ‹€.

 

- ν΄λΌμ΄μ–ΈνŠΈλŠ” λŒ€μƒμ˜ μ—­ν• (Interface)만 μ•Œλ©΄ λœλ‹€.

- ν΄λΌμ΄μ–ΈνŠΈλŠ” κ΅¬ν˜„ λŒ€μƒμ˜ λ‚΄λΆ€ ꡬ쑰λ₯Ό λͺ°λΌλ„ λœλ‹€.

- ν΄λΌμ΄μ–ΈνŠΈλŠ” κ΅¬ν˜„ λŒ€μƒμ˜ λ‚΄λΆ€ ꡬ쑰가 λ³€κ²½λ˜μ–΄λ„ 영ν–₯을 받지 μ•ŠλŠ”λ‹€.

- ν΄λΌμ΄μ–ΈνŠΈλŠ” κ΅¬ν˜„ λŒ€μƒ 자체λ₯Ό 변경해도 영ν–₯을 받지 μ•ŠλŠ”λ‹€.

 

  μžλ°” μ–Έμ–΄μ—μ„œ 역할은 Interface 이고 κ΅¬ν˜„μ€ Interface λ₯Ό κ΅¬ν˜„ν•œ Class, object κ°€ λœλ‹€. 객체λ₯Ό 섀계할 λ•Œ μ—­ν• κ³Ό κ΅¬ν˜„μ„ λͺ…ν™•νžˆ λΆ„λ¦¬ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.

 

  κ°μ²΄λŠ” 혼자 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. κ°μ²΄λŠ” ν˜‘λ ₯ν•˜λŠ” 관계가 μ‘΄μž¬ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈ(μš”μ²­), μ„œλ²„(응닡) μˆ˜λ§Žμ€ 객체 ν΄λΌμ΄μ–ΈνŠΈμ™€ 객체 μ„œλ²„λŠ” μ„œλ‘œ ν˜‘λ ₯ν•˜λŠ” 관계λ₯Ό 가진닀. μžλ°” μ–Έμ–΄μ—μ„œμ˜ λ‹€ν˜•μ„±μ€ μ˜€λ²„λΌμ΄λ”©(Overriding ; λΆ€λͺ¨ ν΄λž˜μŠ€λ‘œλΆ€ν„° 상속받은 λ©”μ†Œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것)으둜 κ΅¬ν˜„ν•œλ‹€. μ˜€λ²„λ‘œλ”©(Overloading)은 1 개의 ν΄λž˜μŠ€μ—μ„œ λ™μΌν•œ μ΄λ¦„μ˜ λ©”μ†Œλ“œ λ˜λŠ” μƒμ„±μžλ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것이닀.

  μ˜€λ²„λΌμ΄λ”©μ„ μ΄μš©ν•˜λ©΄ λ‹€ν˜•μ„±μœΌλ‘œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 객체λ₯Ό μ‹€ν–‰ μ‹œμ μ—μ„œ μœ μ—°ν•˜κ²Œ λ³€κ²½ν•  수 μžˆλ‹€. 클래슀 상속 관계도 λ‹€ν˜•μ„±, μ˜€λ²„ 라이딩을 μ μš©ν•  수 μžˆλ‹€. μœ μ—°ν•˜κ²Œ ν•„μš”μ— 따라 객체λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€λŠ” 것이 μ€‘μš”ν•˜λ‹€.

   λ‹€ν˜•μ„±μ˜ λ³Έμ§ˆμ€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 객체 μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ μ‹œμ μ— μœ μ—°ν•˜κ²Œ λ³€κ²½ν•  수 μžˆλ‹€λŠ” 것이고 λ‹€ν˜•μ„±μ˜ λ³Έμ§ˆμ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체 κ°„ ν˜‘λ ₯ 관계λ₯Ό λ– μ˜¬λ €μ•Ό ν•˜λ©°, ν΄λΌμ΄μ–ΈνŠΈλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  μ„œλ²„μ˜ κ΅¬ν˜„ κΈ°λŠ₯을 μœ μ—°ν•˜κ²Œ λ³€κ²½ κ°€λŠ₯ν•˜λ‹€λŠ” 것이닀.

  μŠ€ν”„λ§μ€ λ‹€ν˜•μ„±μ„ κ·ΉλŒ€ν™”ν•΄μ„œ μ΄μš©ν•  수 μžˆλ„λ‘ 도와쀀닀. IoC, DI 등은 λ‹€ν˜•μ„±μ„ ν™œμš©ν•΄μ„œ μ—­ν• κ³Ό κ΅¬ν˜„μ„ νŽΈλ¦¬ν•˜κ²Œ λ‹€λ£° 수 μžˆλ„λ‘ μ§€μ›ν•œ 것이닀. μŠ€ν”„λ§μ„ μ΄μš©ν•˜μ—¬ κ΅¬ν˜„μ„ νŽΈλ¦¬ν•˜κ²Œ λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.

 

C. 객체 지ν–₯ μ„€κ³„μ˜ 원칙 SOLID

  ν΄λ¦°μ½”λ“œλ‘œ 유λͺ…ν•œ λ‘œλ²„νŠΈ λ§ˆν‹΄μ΄ μ•„λž˜μ˜ 쒋은 객체 지ν–₯ μ„€κ³„μ˜ 5가지 원칙을 μ •λ¦¬ν•˜μ˜€λ‹€.

(1) SRP : 단일 μ±…μž„ 원칙(Single responsibility principle)

- ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œμ„ κ°€μ Έμ•Ό ν•œλ‹€.

- ν•˜λ‚˜μ˜ μ±…μž„μ΄λΌλŠ” κ°œλ…μ΄ λ‹€μ†Œ λͺ¨μ†Œν•œλ°, λ¬Έλ§₯κ³Ό 상황에 λ”°λΌμ„œ 달라지기 λ•Œλ¬Έμ΄λ‹€.

- μ€‘μš”ν•œ 기쀀은 변경이닀. λ³€κ²½ 사항이 λ°œμƒν•˜μ˜€μ„ λ•Œ, νŒŒκΈ‰ νš¨κ³Όκ°€ 적으면 단일 μ±…μž„ 원칙을 잘 λ”°λ₯Έ 것이닀.

 

(2) OCP : 개방-폐쇄 원칙(Open/Closed principle)

- μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμ§€λ§Œ λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Ό ν•œλ‹€.

- λ‹€ν˜•μ„±μ„ ν™œμš©ν•œ κ°œλ…μ΄λ‹€.

- μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“€μ–΄μ„œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 κ΅¬ν˜„ν•œλ‹€κ³  κ°€μ •ν•˜μž.

public class MemberService {
//	private MemberRepository memberRepository = new MemoryMemberRepository();
    private MemberRepository memberRepository = new JdbcMemberRepository();
}

μ‹€μ œλ‘œ μœ„μ™€ 같이 κ΅¬ν˜„ν•˜λ©΄ μ•„λž˜μ˜ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

 

1. memberService ν΄λΌμ΄μ–ΈνŠΈκ°€ κ΅¬ν˜„ 클래슀λ₯Ό 직접 선택해야 ν•œλ‹€.

2. κ΅¬ν˜„ 객체λ₯Ό λ³€κ²½ν•˜λ €λ©΄ ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œλ₯Ό λ³€κ²½ν•΄μ•Ό ν•œλ‹€.

3. λ‹€ν˜•μ„±μ„ μ΄μš©ν–ˆμ§€λ§Œ OCP 원칙을 지킬 수 μ—†λ‹€.

 

"μˆœμˆ˜ν•œ μžλ°” μ–Έμ–΄λ‘œλŠ” 이λ₯Ό ν•΄κ²°ν•  수 μ—†κ³ , 객체λ₯Ό μƒμ„±ν•˜κ³  연관관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” λ³„λ„μ˜ 쑰립, μ„€μ •μžκ°€ ν•„μš”ν•œλ° μ΄λŸ¬ν•œ 역할을 μŠ€ν”„λ§μ΄ ν•΄μ£ΌλŠ” 것이닀."

 

(3) LSP : λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙(Liskov subsitution principle)

- ν”„λ‘œκ·Έλž¨μ˜ κ°μ²΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ 정확성을 κΉ¨λœ¨λ¦¬μ§€ μ•ŠμœΌλ©΄μ„œ ν•˜μœ„ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ°”κΏ€ 수 μžˆμ–΄μ•Ό ν•œλ‹€.

- λ‹€ν˜•μ„±μ—μ„œ ν•˜μœ„ ν΄λž˜μŠ€λŠ” μΈν„°νŽ˜μ΄μŠ€ κ·œμ•½μ„ λ‹€ μ§€μΌœμ•Ό ν•œλ‹€.

- λ‹€ν˜•μ„±μ„ μ§€μ›ν•˜κΈ° μœ„ν•œ 원칙, μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ κ΅¬ν˜„μ²΄λ₯Ό λ―Ώκ³  μ‚¬μš©ν•˜κΈ° μœ„ν•œ 원칙이닀.

- λ‹¨μˆœν•œ 컴파일의 성곡 μ—¬λΆ€λ₯Ό λ”°μ§€λŠ” 것이 μ•„λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μžλ™μ°¨μ˜ μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ—‘μ…€ κΈ°λŠ₯은 μ•žμœΌλ‘œ κ°€λŠ” 것을 보μž₯ν•œλ‹€. λ’€λ‘œ κ°€λ©΄ LSP λ₯Ό μœ„λ°˜ν•œ 것이닀. 아무리 λŠλ¦¬λ”λΌλ„ μ•žμœΌλ‘œ κ°€κΈ΄ κ°€μ•Όν•  것.

 

(4) ISP : μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙(Interface segregation principle)

- νŠΉμ • ν΄λΌμ΄μ–΄λŠλ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ—¬λŸ¬ κ°œκ°€ λ²”μš© μΈν„°νŽ˜μ΄μŠ€ ν•˜λ‚˜λ³΄λ‹€ μ’‹λ‹€.

- μžλ™μ°¨ μΈν„°νŽ˜μ΄μŠ€λŠ” μš΄μ „ μΈν„°νŽ˜μ΄μŠ€, μ •λΉ„ μΈν„°νŽ˜μ΄μŠ€μ™€ 같이 λΆ„λ¦¬ν•˜λŠ” 것이 μ’‹λ‹€.

- λΆ„λ¦¬ν•˜μ˜€μ„ λ•Œ μ€‘μš”ν•œκ²ƒμ€ μΈν„°νŽ˜μ΄μŠ€ μžμ²΄κ°€ 변해도 μš΄μ „μž ν΄λΌμ΄μ–ΈνŠΈμ— 영ν–₯을 주지 μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 것이닀.

- μ΄λ ‡κ²Œ ν•˜λ©΄ μΈν„°νŽ˜μ΄μŠ€κ°€ λͺ…확해지고, λŒ€μ²΄ κ°€λŠ₯성이 높아진닀.

 

(5) DIP : μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙(Dependency inversion principle)

- ꡬ체화에 μ˜μ‘΄ν•˜μ§€ μ•Šκ³  좔상화에 μ˜μ‘΄ν•œλ‹€.

- κ΅¬ν˜„ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•œλ‹€λŠ” κ²ƒμœΌλ‘œ μ—­ν• (Role) 에 μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€λŠ” 것과 κ°™λ‹€.

- 객체 세상도 ν΄λΌμ΄μ–ΈνŠΈκ°€ μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Ό μœ μ—°ν•˜κ²Œ κ΅¬ν˜„μ²΄λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€.

- κ΅¬ν˜„μ²΄μ— μ˜μ‘΄ν•˜κ²Œ 되면 변경이 νž˜λ“€μ–΄μ§„λ‹€.

- OCP μ—μ„œ μ„€λͺ…ν•œ MemberService λŠ” Interface 에 μ˜μ‘΄ν•˜μ§€λ§Œ κ΅¬ν˜„ ν΄λž˜μŠ€μ—λ„ λ™μ‹œμ— μ˜μ‘΄ν•œλ‹€. μ™œλƒλ©΄ MemberService ν΄λΌμ΄μ–ΈνŠΈκ°€ MemberRepository m = new MemoryMemberRepository(); 와 같이 κ΅¬ν˜„ 클래슀λ₯Ό 직접 μ„ νƒν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. μ΄λŠ” DIP λ₯Ό μœ„λ°˜ν•˜λŠ” μ‚¬ν•­μœΌλ‘œ 순수 μžλ°” μ–Έμ–΄λ§ŒμœΌλ‘œλŠ” 이λ₯Ό ν•΄κ²°ν•  수 μ—†λ‹€.

 

D. Spring κ³Ό 객체지ν–₯섀계

- 객체 지ν–₯의 핡심은 λ‹€ν˜•μ„±μ΄λ‹€.

- λ‹€ν˜•μ„±μ„ 지킀면 λΆ€ν’ˆμ„ κ°ˆμ•„λΌμš°λ“― 개발이 κ°€λŠ₯ν•˜λ‹€.

- ν•˜μ§€λ§Œ λ‹€ν˜•μ„± λ§ŒμœΌλ‘œλŠ” κ΅¬ν˜„ 객체λ₯Ό λ³€κ²½ν•  λ•Œ ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œλ„ ν•¨κ»˜ λ³€κ²½λ˜λŠ” λ“± OCP, DIP λ₯Ό 지킬 수 μ—†λ‹€.

- 이λ₯Ό ν•΄κ²°ν•΄μ£ΌλŠ” 것이 μŠ€ν”„λ§μ΄λ‹€.

- DI(Dependency Injection ; μ˜μ‘΄κ΄€κ³„, μ˜μ‘΄μ„± μ£Όμž…) κ³Ό DI μ»¨ν…Œμ΄λ„ˆλ₯Ό μ œκ³΅ν•˜μ—¬ λ‹€ν˜•μ„± + OCP, DIP κ°€ κ°€λŠ₯ν•˜λ„λ‘ μ§€μ›ν•œλ‹€.

- ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œμ˜ λ³€κ²½ 없이 κΈ°λŠ₯을 ν™•μž₯ν•  수 있게 λœλ‹€.

 

(정리)

- λͺ¨λ“  μ„€κ³„μ—μ„œ μ—­ν• κ³Ό κ΅¬ν˜„μ„ λΆ„λ¦¬ν•˜λŠ” 것이 μ’‹μœΌλ©° μ΄μƒμ μœΌλ‘œ λͺ¨λ“  섀계에 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λΆ€μ—¬ν•˜λŠ” 것이 μ’‹λ‹€.

- ν•˜μ§€λ§Œ μ΄λŠ” μΆ”μƒν™”λΌλŠ” λΉ„μš©μ„ λ°œμƒμ‹œν‚¨λ‹€.

- κ·Έλž˜μ„œ μ‹€μ œ 업무 μƒμ—μ„œλŠ” κΈ°λŠ₯을 ν™•μž₯ν•  κ°€λŠ₯성이 μ—†λ‹€λ©΄ ꡬ체 클래슀λ₯Ό 직접 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μœΌλ©°, ν–₯ν›„ ν™•μž₯이 ν•„μš”ν•œ 경우 λ¦¬νŒ©ν„°λ§μ„ ν†΅ν•΄μ„œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ„μž…ν•˜λŠ” 것이 방법이닀.


References

1. μŠ€ν”„λ§ 핡심 원리 - 기본편 (κΉ€μ˜ν•œ)

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

 

μŠ€ν”„λ§ 핡심 원리 - 기본편 - μΈν”„λŸ° | κ°•μ˜

μŠ€ν”„λ§ μž…λ¬Έμžκ°€ 예제λ₯Ό λ§Œλ“€μ–΄κ°€λ©΄μ„œ μŠ€ν”„λ§μ˜ 핡심 원리λ₯Ό μ΄ν•΄ν•˜κ³ , μŠ€ν”„λ§ κΈ°λ³ΈκΈ°λ₯Ό ν™•μ‹€νžˆ λ‹€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€., - κ°•μ˜ μ†Œκ°œ | μΈν”„λŸ°...

www.inflearn.com

 

728x90
λ°˜μ‘ν˜•
LIST
Comments