๐ ์ค๋ ์ฝ์ ๋ฒ์: 2์ฅ ์๋ฏธ ์๋ ์ด๋ฆ pt.2
์์ ์ ๊ธฐ์ต๋ ฅ์ ์๋ํ์ง ๋ง๋ผ
ํด๋์ค ์ด๋ฆ: ๋ช ์ฌ๋ ๋ช ์ฌ๊ตฌ๊ฐ ์ ํฉํ๋ค.
๋งค์๋ ์ด๋ฆ: ๋์ฌ๋ ๋์ฌ๊ตฌ๊ฐ ์ ํฉํ๋ค.
์ ๊ทผ์,Accessor : get
๋ณ๊ฒฝ์,Mutator: set
์กฐ๊ฑด์,Predicate: is
๊ธฐ๋ฐํ ์ด๋ฆ์ ํผํ๋ผ.
ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ผ. โ๏ธ
๋ง์ฅ๋์ ํ์ง ๋ง๋ผ. โ๏ธ
์ด ๋ ๋จ๋ฝ(โ๏ธ) ์ ์์ฝ์ ๊ฒฐ๊ตญ ํ ๋งค์๋์๋ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๊ณ (ex. add) ๋ง์ฝ ๋งค์๋๊ฐ ๊ธฐ์กด ๋งค์๋์ ๋งฅ๋ฝ์ด ๋ฌ๋ผ์ง๋ค๋ฉด ๋ค๋ฅธ ๋จ์ด(ex. insert, append) ๋ฅผ ์ฌ์ฉํ๋ผ๋ ๋ด์ฉ์ด์๋ค.
ํด๋ฒ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ.
๋ฌธ์ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ.
์๋ฏธ ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐํ๋ผ.
๋ถํ์ํ ๋งฅ๋ฝ์ ์์ ๋ผ.
์ด๋ฆ์ ๋ถํ์ํ ๋งฅ๋ฝ์ ์ถ๊ฐํ์ง ์๋๋ก ์ฃผ์ํ๋ค. accountAddress์ customerAddress๋ Address ํด๋์ค ์ธ์คํด์ค๋ก๋ ์ข์ ์ด๋ฆ์ด๋ ํด๋์ค ์ด๋ฆ์ผ๋ก๋ ์ ํฉํ์ง ๋ชปํ๋ค.
Java ์ฉ์ด ์ดํดํ๋ ๋ฐ์ ํ๋์ด๋(?) ์ฑํฐ์๋ค. ๋ชจ๋ฅด๋ ์ฉ์ด๋ค์ด ์์ฃผ ๋ฑ์ฅํด ์ฝ๋ ํ๋ฆ์ด ๋์ด์ง๋ ํ์๊ฐ ๋์ด๋ฌ๋ค. ์์งํ ์ด๋ ๊ฒ ๋ถํด๋ฝ์ผ๋ก ๋ค๊ฐ์ด ์ฝ๋ ๊ธฐํ๊ฐ ์์๋ค๋ฉด ์ด๋ ๊ฒ ์ด์ฌํ ๊ตฌ๊ธ๋งํ๋ฉฐ ์ฝ์ง๋ ์์์ ๊ฒ ๊ฐ๋ค. (2์ฅ์ฏค์์ ์ด๋ฏธ ์ฑ
๋ฎ์์ ๋ฏ...) ๋ค์ ํ ๋ฒ ์ด๋ ๊ฒ ๋ค๊ฐ์ด ์ฝ์ ๊ธฐํ๊ฐ ์์ด์ ๊ฐ์ฌํ๋จ ์๊ฐ์ด ๋ค์๋ค. ์ง๊ธ์ ๋ฏ์ ์ฉ์ด๋ค์ด๋ผ ๊ท์ฐฎ๊ณ ๊ฑฐ๋ถ๊ฐ์ด ๋ค์ง๋ง ์ข์ ๊ณต๋ถ ๊ธฐํ๋ผ๊ณ ์๊ฐํ๋ค.
(p.32) "์์ฑ์๋ฅผ ์ค๋ณต์ ์ํ ๋๋ ์ ์ ํฉํ ๋ฆฌ ๋งค์๋๋ฅผ ์ฌ์ฉํ๋ค. ๋งค์๋๋ ์ธ์๋ฅผ ์ค๋ช ํ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ค.", "์์ฑ์ ์ฌ์ฉ์ ์ ํํ๋ ค๋ฉด ํด๋น ์์ฑ์๋ฅผ private ๋ก ์ ์ธํ๋ค."
์์ฑ์,constructor:
์์ฑ์(์์ด: constructor, ํน์ ์ฝ์๋ก ctor)๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฒด์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํ๋ ์๋ธ๋ฃจํด์ ๊ฐ๋ฆฌํจ๋ค
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ:
https://www.youtube.com/watch?v=vrhIxBWSJ04
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋: ๊ฐ์ฒด ์์ฑ์ ์ญํ ์ ํ๋ ํด๋์ค ๋ฉ์๋
https://velog.io/@ljinsk3/%EC%A0%95%EC%A0%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%84%9C%EB%93%9C%EB%8A%94-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C
private:์๋ฐ์ ๋ณ์์ ํจ์, ํด๋์ค์ ๋ํ ์ ๊ทผ์ ์ ํํ๋ ๋ฌธ๋ฒ ์ค ํ๋.
https://mainia.tistory.com/5574
public > protected > default > private
- public : ์ ๊ทผ์ ์ ํ์ด ์์
- protected : ๋์ผํ ํจํค์ง ๋ด์ ์กด์ฌํ๊ฑฐ๋ ํ์ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- default : ์๋ฌด๋ฐ ์ ๊ทผ ์ ํ์๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด default ๊ฐ์ด ๋๋ฉฐ, ๋์ผํ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅ
- private : ์๊ธฐ ์์ ์ ํด๋์ค ๋ด์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅ
ํด๋ฒ ์์ญ&๋ฌธ์ ์์ญ:
https://softwareengineering.stackexchange.com/questions/125926/what-is-problem-domain
- ํด๋ฒ ์์ญ(problem domain): ์ ๋ฌธ๊ฐ ์ฉ์ด. - ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ ์ ๋ฌธ๊ฐ(ํ๋ก๊ทธ๋๋จธ)๋ค์ด ์ฌ์ฉํ๋ ์ฉ์ด.
- ๋ฌธ์ ์์ญ(solution domain): ๋น์ ๋ฌธ๊ฐ ์ฉ์ด. - ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์์ญ์ ์ธ์ด. ์ฆ, ์ค์ ์์คํ ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ ๋นํ๋ก๊ทธ๋๋จธ๋ค๊ณผ์ ์ํต์ ์ํด ์ฌ์ฉํ๋ ์ธ์ด.
ํด๋์ค ์ธ์คํด์ค: ํด๋์ค vs. ๊ฐ์ฒด vs. ์ธ์คํด์ค
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
ํด๋์ค(Class) VS ๊ฐ์ฒด(Object)
ํด๋์ค๋ โ์ค๊ณ๋โ, ๊ฐ์ฒด๋ โ์ค๊ณ๋๋ก ๊ตฌํํ ๋ชจ๋ ๋์โ์ ์๋ฏธํ๋ค.
๊ฐ์ฒด(Object) VS ์ธ์คํด์ค(Instance)
ํด๋์ค์ ํ์ ์ผ๋ก ์ ์ธ๋์์ ๋ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅด๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์ค์ ์ฌ์ฉ๋ ๋ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ฒด๋ ํ์ค ์ธ๊ณ์ ๊ฐ๊น๊ณ , ์ธ์คํด์ค๋ ์ํํธ์จ์ด ์ธ๊ณ์ ๊ฐ๊น๋ค.
๊ฐ์ฒด๋ โ์ค์ฒดโ, ์ธ์คํด์ค๋ โ๊ด๊ณโ์ ์ด์ ์ ๋ง์ถ๋ค.
๊ฐ์ฒด๋ฅผ โํด๋์ค์ ์ธ์คํด์คโ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
โ๋ฐฉ๊ธ ์ธ์คํด์คํํ์ฌ ๋ ํผ๋ฐ์ค๋ฅผ ํ ๋นํโ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ๋งํ์ง๋ง, ์ด๋ ์๋ณธ(์ถ์์ ์ธ ๊ฐ๋ )์ผ๋ก๋ถํฐ ์์ฑ๋์๋ค๋ ๊ฒ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ผ ๋ฟ ์๊ฒฉํ๊ฒ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ๋๋๊ธด ์ด๋ ต๋ค.