[SOLID] 쒋은 객체 지ν–₯ μ„€κ³„μ˜ 5κ°€μΉ˜ 원칙

SOLIDλž€? ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯이 μ‰¬μš΄ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κ³ μž ν•  λ•Œ μ μš©ν•  수 μžˆλŠ” 원칙. μ†ŒμŠ€ μ½”λ“œκ°€ 읽기 쉽고, ν™•μž₯ν•˜κΈ° μ‰¬μšΈ λ•ŒκΉŒμ§€ λ¦¬νŒ©ν„°λ§ν•  λ•Œ μ μš©ν•  수 μžˆλŠ” 지침이닀. 이 원칙은 μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발 μ „λž΅μ˜ 일뢀이닀. S(Single responsibilitty principle): 단일 μ±…μž„ 원칙 ν•œ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€. O(Open / closed principle): 개방 - 폐쇄 원칙 μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμœΌλ‚˜ λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€. L(Liskov substitution principle): λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙 κ°μ²΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ 정확성을 κΉ¨λœ¨λ¦¬μ§€ μ•ŠμœΌλ©΄μ„œ ν•˜μœ„ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ°”κΏ€ 수 μžˆμ–΄μ•Ό ν•œλ‹€. I(Interface segregatio..

ν•œ 살도 μ΄ν•΄ν•˜λŠ” 컴파일 μ–Έμ–΄ VS 인터프리터 μ–Έμ–΄

컴파일 μ–Έμ–΄ 컴파일 μ–Έμ–΄λŠ” μ»΄νŒŒμΌλŸ¬κ°€ ν•„μš”ν•œ 언어이닀. μ½”λ“œλ₯Ό λ°”λ‘œ μ‹€ν–‰ν•  수 μžˆλŠ”κ²Œ μ•„λ‹Œ, μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 μ»΄νŒŒμΌλŸ¬κ°€ 컴퓨터가 μ•Œμ•„λ“€μ„ 수 μžˆλ„λ‘ μ‹€ν–‰νŒŒμΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 컴파일링 과정을 거쳐야 ν•œλ‹€. λ”°λΌμ„œ 컴파일 μ–Έμ–΄λŠ” μ‹€ν–‰ν•˜κΈ° 전에 컴파일된 μ‹€ν–‰ νŒŒμΌμ„ λ§Œλ“€κΈ° μœ„ν•΄ μ‹œκ°„μ΄ 였래 κ±Έλ¦¬λŠ” 단점이 μžˆμ§€λ§Œ, ν•œ 번 μ‹€ν–‰ νŒŒμΌμ„ λ§Œλ“€μ–΄ 놓은 ν›„μ—λŠ” μ‹€ν–‰ 속도가 λΉ λ₯΄λ‹€λŠ” μž₯점이 μžˆλ‹€. λ˜ν•œ, 컴파일링 과정을 κ±°μΉ˜λ©΄μ„œ 데이터 νƒ€μž…μ΄ μ •μ μœΌλ‘œ κ²°μ •λœλ‹€. λŒ€ν‘œμ μΈ 컴파일 μ–Έμ–΄λ‘œλŠ” C, C++, Javaκ°€ μžˆλ‹€. 인터프리터 μ–Έμ–΄ 인터프리터 μ–Έμ–΄λŠ” 인터프리터λ₯Ό μ‚¬μš©ν•˜λŠ” 언어이닀. μΈν„°ν”„λ¦¬ν„°λŠ” 일단 싀행을 해놓고, λŸ°νƒ€μž„μ— ν•œ 쀄 ν•œ 쀄 λ²ˆμ—­ν•΄ μ‹€ν–‰ν•œλ‹€. μ‹€ν–‰ 전에 μ»΄νŒŒμΌν•˜λŠ” 과정이 μ—†μœΌλ―€λ‘œ 초반 μ‹€ν–‰ν•˜λŠ” μ†λ„λŠ” λΉ ..

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° VS ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° κ°μ²΄λž€? μžμ‹ μ˜ μƒνƒœλ₯Ό 가지며 역할을 μˆ˜ν–‰ν•˜λŠ” 개체 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€? ν”„λ‘œκ·Έλž¨μ„ λͺ…λ Ήμ–΄μ˜ λͺ©λ‘μœΌλ‘œ λ³΄λŠ” μ‹œκ°μ—μ„œ λ²—μ–΄λ‚˜, μ—¬λŸ¬ 개의 λ…λ¦½λœ λ‹¨μœ„μΈ κ°μ²΄λ“€μ˜ λͺ¨μž„μœΌλ‘œ νŒŒμ•…ν•˜κ³ μž ν•˜λŠ” 것이닀. 각각의 κ°μ²΄λŠ” λ©”μ‹œμ§€λ₯Ό μ£Όκ³ λ°›κ³ , 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ„ μœ μ—°ν•˜κ³  변경이 μš©μ΄ν•˜κ²Œ λ§Œλ“€κΈ° λ•Œλ¬Έμ—, λŒ€κ·œλͺ¨ κ°œλ°œμ— 많이 μ‚¬μš©λœλ‹€. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° κ΅¬ν˜„ 방법 1. 객체λ₯Ό 기본적인 λΉŒλ”© λΈ”λ‘μœΌλ‘œ 2. 각 κ°μ²΄λŠ” μ–΄λ–€ νƒ€μž…(클래슀)의 μΈμŠ€ν„΄μŠ€ 3. ν΄λž˜μŠ€λŠ” 상속(inheritance)으둜 μ—°κ΄€ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§• 1. μΊ‘μŠν™”(Encapsulation) πŸ’Š μ„œλ‘œ κ΄€λ ¨μžˆλŠ” 데이터와 ν•¨μˆ˜λ₯Ό 객체 μ•ˆμ— ν•˜λ‚˜λ‘œ λ¬Άκ³  μ™ΈλΆ€μ—μ„œ 보일 ν•„μš”κ°€ μ—†λŠ” 데이터λ₯Ό 잘..

동적 타이핑(dynamic typing)μ΄λž€?

λ³€μˆ˜μ˜ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜λŠ” ν–‰μœ„κ°€ μž…λ ₯ν•˜λŠ” μ‹œμ μ΄ μ•„λ‹Œ μ‹€ν–‰ν•˜λŠ” μ‹œμ μ— λ°œμƒν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. 예λ₯Ό λ“€μ–΄, Cλ‚˜ JavaλŠ” int data = 10κ³Ό 같이 dataλΌλŠ” λ³€μˆ˜κ°€ μ •μˆ˜ν˜•μ΄λΌκ³  사전에 μ„ μ–Έν•œλ‹€. 그에 λΉ„ν•΄ Python은 data = 10κ³Ό 같은 ν˜•νƒœλ‘œ μ„ μ–Έν•œλ‹€. 즉, dataλΌλŠ” λ³€μˆ˜μ˜ μžλ£Œν˜•μ΄ μ •μˆ˜(integer)인지 μ‹€μˆ˜(float)인지λ₯Ό ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ•„λ‹Œ 인터프리터가 슀슀둜 νŒλ‹¨ν•˜λŠ” 것이닀. 그리고 그것을 μ‹€ν–‰ μ‹œμ μ— λ™μ μœΌλ‘œ νŒλ‹¨ν•˜λ―€λ‘œ pythonμ–Έμ–΄κ°€ λ™μ μœΌλ‘œ μžλ£Œν˜•μ˜ 결정을 μ§€μ›ν•œλ‹€. λ‹€λ₯Έ μ–Έμ–΄λ“€κ³Ό 달리 python은 맀우 μœ μ—°ν•œ μ–Έμ–΄λ‘œ, ν• λ‹Ήλ°›λŠ” λ©”λͺ¨λ¦¬ 곡간도 μ €μž₯λ˜λŠ” κ°’μ˜ 크기에 따라 λ™μ μœΌλ‘œ λ‹€λ₯΄κ²Œ 할당받을 수 μžˆλ‹€.

곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
Β«   2024/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
κΈ€ 보관함