SOLID
JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식 2021. 10. 8. 22:24

SOLIDλž€? ν΄λ¦°μ½”λ“œλ‘œ 유λͺ…ν•œ λ‘œλ²„νŠΈ λ§ˆν‹΄μ΄ 쒋은 객체 지ν–₯ μ„€κ³„μ˜ 5가지 원칙을 μ •λ¦¬ν•œ 것이닀. SRP : 단일 μ±…μž„ 원칙 OCP : 개방-폐쇄 원칙 LSP : λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙 ISP : μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙 DIP : μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙 SRP(Single Responsibility Principle) ν•œ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€. μ€‘μš”ν•œ 기쀀은 λ³€κ²½, 변경이 μžˆμ„ λ•Œ ν•˜λ‚˜μ˜ 클래슀만 λ³€κ²½λ˜λ©΄ ꡉμž₯히 잘 지킨 것이닀. → ν•˜λ‚˜μ˜ 클래슀 μ•ˆμ— DB, SQL 쿼리문, View 둜직 ...... μœ μ§€λ³΄μˆ˜ μΈ‘λ©΄μ—μ„œ μ΅œμ•…μ΄λ‹€. OCP(Open/closed principle) μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμœΌλ‚˜ λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€. λ§Œμ•½ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” κ΅¬ν˜„μ²΄..

[JAVA] Wrapper Class
JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식 2020. 6. 22. 22:19

Wrapper Class κ°œλ… Wrapper Classλž€? Javaμ—μ„œλŠ” κΈ°λ³Έν˜• λ³€μˆ˜(Primitive Type)와 μ°Έμ‘°ν˜• λ³€μˆ˜(Reference Type)κ°€ μ‘΄μž¬ν•¨ 그런데 데이터λ₯Ό μ €μž₯ν•  λ•Œ κΈ°λ³Έν˜• λ³€μˆ˜μ—λ„ μ €μž₯ν•  수 μžˆμ§€λ§Œ κΈ°λ³Έν˜• λ³€μˆ˜λ₯Ό 객체둜 μ·¨κΈ‰ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ 있음 μ΄λ•Œ κΈ°λ³Έν˜• λ³€μˆ˜λ₯Ό 객체둜 포μž₯ν•΄μ£ΌλŠ” 클래슀λ₯Ό Wrapper Class라고 함 Wrapper ν΄λž˜μŠ€λŠ” μ‚°μˆ  연산을 μœ„ν•΄ μ •μ˜λœ ν΄λž˜μŠ€κ°€ μ•„λ‹ˆλ―€λ‘œ, μΈμŠ€ν„΄μŠ€μ— μ €μž₯된 값을 λ³€κ²½ν•  수 μ—†μŒ 단지, 값을 μ°Έμ‘°ν•˜κΈ° μœ„ν•΄ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³ , μƒμ„±λœ μΈμŠ€ν„΄μŠ€μ˜ κ°’λ§Œμ„ μ°Έμ‘°ν•  수 있음 Ex) Integer data = new Integer(123); Wrapper Class의 μ’…λ₯˜ λ°•μ‹±(Boxing)κ³Ό μ–Έλ°•μ‹±(UnBoxing) λ°•μ‹±κ³Ό μ–Έ..

[JAVA] μΈν„°νŽ˜μ΄μŠ€ vs μΆ”μƒν΄λž˜μŠ€
JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식 2020. 4. 12. 22:33

μΆ”μƒν΄λž˜μŠ€λž€? 좔상 λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜μ—¬ 상속을 ν†΅ν•΄μ„œ μžμ† ν΄λž˜μŠ€μ—μ„œ 완성을 μœ λ„ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€. ν•œ 개 μ΄μƒμ˜ μΆ”μƒλ©”μ†Œλ“œλ₯Ό κ°€μ§€μ§€λ§Œ κ΅¬ν˜„ 된 λ©”μ†Œλ“œλ„ μ •μ˜κ°€ κ°€λŠ₯ν•˜λ‹€. λ―Έμ™„μ„± 섀계도 상속을 μœ„ν•œ 클래슀이기 λ•Œλ¬Έμ— λ”°λ‘œ 객체λ₯Ό 생성할 수 μ—†λ‹€. μΆ”μƒλ©”μ†Œλ“œλŠ” μ„ μ–Έλ§Œλ˜λ©° κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λΆˆμ™„μ „ν•œ λ©”μ†Œλ“œμ΄λ―€λ‘œ 객체λ₯Ό μƒμ„±ν•˜μ§€ λͺ»ν•œλ‹€. μΈν„°νŽ˜μ΄μŠ€λž€? μƒμˆ˜μ™€ 좔상 λ©”μ†Œλ“œμ˜ 집합이닀. 즉, λ‘œμ§μ„ μž‘μ„±ν•  수 μ—†λ‹€. κΈ°λ³Έ 섀계도 μΌμ’…μ˜ 좔상 클래슀둜, 좔상 λ©”μ†Œλ“œλ₯Ό κ°–μ§€λ§Œ 좔상 ν΄λž˜μŠ€λ³΄λ‹€ 좔상화 정도가 λ†’λ‹€. 좔상 클래슀처럼 λ‹€λ₯Έ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ”λ° 도움을 μ£ΌλŠ” λͺ©μ μœΌλ‘œ μž‘μ„±ν•œλ‹€. 닀쀑 상속(κ΅¬ν˜„)이 κ°€λŠ₯ν•˜λ‹€. μƒμ„±μžλ₯Ό κ°€μ§ˆ 수 μ—†μœΌλ©° 객체화가 λΆˆκ°€λŠ₯ν•˜λ‹€. μΆ”μƒν΄λž˜μŠ€ μΈν„°νŽ˜μ΄μŠ€ 차이점 μ‚¬μš©μ˜λ„ 차이점 μΆ”μƒν΄λž˜μŠ€λŠ” IS ..

[JAVA] μ„ μ–Έ μœ„μΉ˜μ— λ”°λ₯Έ λ³€μˆ˜
JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식 2020. 4. 6. 19:41

μ„ μ–Έ μœ„μΉ˜μ— λ”°λ₯Έ λ³€μˆ˜μ˜ μ’…λ₯˜ 1. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 클래슀 μ˜μ—­μ— μ„ μ–Έλ˜λ©° μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œ λ§Œλ“€μ–΄μ§ 각 μΈμŠ€ν„΄μŠ€λŠ” λ…λ¦½λœ λ©”λͺ¨λ¦¬ 곡간을 κ°€μ§€λ―€λ‘œ μ„œλ‘œ λ‹€λ₯Έ 값을 가지고 있음 2. 클래슀 λ³€μˆ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ•žμ— static을 뢙이면 생성할 수 있음 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜κ²Œ 됨 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ μ–Έμ œλ“  μ‚¬μš©κ°€λŠ₯ν•˜λ©°, 클래슀 λ‘œλ”©μ‹œ 생성됨 public을 μ•žμ— 뢙이면 μ „μ—­λ³€μˆ˜μ²˜λŸΌ μ‚¬μš© κ°€λŠ₯ 3. 지역 λ³€μˆ˜ λ©”μ„œλ“œ 내에 μ„ μ–Έλ˜λ©°, λ©”μ„œλ“œκ°€ 사라지면 μ†Œλ©Έ λΈ”λŸ­ λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯함 Reference JAVA의 정석, λ„μš°μΆœνŒ, 남ꢁ μ„± μ§€μŒ

[JAVA] μŠ€λ ˆλ“œμ˜ 싀행은 μ™œ start()일까?
JAVA/μ•Œμ•„λ‘λ©΄ 쒋을 지식 2020. 4. 1. 01:57

λ©€ν‹°μŠ€λ ˆλ”© λ©€ν‹°ν…ŒμŠ€ν‚Ήμ΄λž€? μ‹€μ œ 처리될 수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ 수 = CPU μ½”μ–΄μ˜ 개수 CPU μ½”μ–΄μ˜ κ°œμˆ˜λ³΄λ‹€ λ§Žμ€ ν”„λ‘œμ„ΈμŠ€κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λ‘ ν•¨κ»˜ λ™μ‹œμ— μ²˜λ¦¬ν•  수 μ—†μŒ 각 코어듀은 μ•„μ£Ό 짧은 μ‹œκ°„λ™μ•ˆ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ²ˆκ°ˆμ•„κ°€λ©° μ²˜λ¦¬ν•˜μ—¬ λˆˆμ†μž„μ„ 톡해 λ™μ‹œμ— λ™μž‘ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이게 ν•˜λŠ” 것 λ©€ν‹°μŠ€λ ˆλ”©μ΄λž€? λ©€ν‹°ν…ŒμŠ€ν‚Ήκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ μ•ˆμ— μ—¬λŸ¬κ°œμ˜ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것을 의미 μŠ€λ ˆλ“œλŠ” ν•˜λ‚˜μ˜ μž‘μ—… λ‹¨μœ„μ΄λ‹€ μ™œ start()일까? 의문점 보톡 μžλ°”μ—μ„œ μŠ€λ ˆλ“œλ₯Ό κ΅¬ν˜„ν•  λ•Œ run() λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•˜μ—¬ μŠ€λ ˆλ“œκ°€ μˆ˜ν–‰ν•  λ‘œμ§μ„ μž‘μ„±ν•¨ 근데 μ™œ μŠ€λ ˆλ“œμ˜ 싀행은 run() 호좜이 μ•„λ‹Œ, start() 호좜일까? λ§Œμ•½μ— run()을 ν˜ΈμΆœν•˜λ©΄ μŠ€λ ˆλ“œκ°€ λ™μž‘ν•˜μ§€ μ•Šμ„κΉŒ? μ•„λ‹ˆλ‹€. ..