Day 5

๐Ÿ”– ์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„: 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)
ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์„ ๋•Œ ๊ฐ์ฒด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๊ทธ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ์‹ค์ œ ์‚ฌ์šฉ๋  ๋•Œ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๊ฐ์ฒด๋Š” ํ˜„์‹ค ์„ธ๊ณ„์— ๊ฐ€๊น๊ณ , ์ธ์Šคํ„ด์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์— ๊ฐ€๊น๋‹ค.
๊ฐ์ฒด๋Š” โ€˜์‹ค์ฒดโ€™, ์ธ์Šคํ„ด์Šค๋Š” โ€˜๊ด€๊ณ„โ€™์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค.
๊ฐ์ฒด๋ฅผ โ€˜ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šคโ€™๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
โ€˜๋ฐฉ๊ธˆ ์ธ์Šคํ„ด์Šคํ™”ํ•˜์—ฌ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ํ• ๋‹นํ•œโ€™ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋งํ•˜์ง€๋งŒ, ์ด๋Š” ์›๋ณธ(์ถ”์ƒ์ ์ธ ๊ฐœ๋…)์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ผ ๋ฟ ์—„๊ฒฉํ•˜๊ฒŒ ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚˜๋ˆ„๊ธด ์–ด๋ ต๋‹ค.


์†Œ๊ฐ 3์ค„ ์š”์•ฝ

  • ๋ณธ๋ฌธ ๋‚ด์šฉ๋ณด๋‹ค๋„ ๊ตฌ๊ธ€๋ง ๊ณผ์ •์—์„œ "๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ" ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ฒŒ ๋˜์–ด ๋‹ค๋ฅธ ํ•œ ํŽธ์œผ๋กœ ์˜๋ฏธ ์žˆ๋˜ ์ฑ•ํ„ฐ์˜€๋‹ค.
  • ๋˜‘๋˜‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ์ „๋ฌธ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์‚ฌ์ด์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์ฐจ์ด์  ํ•˜๋‚˜๋งŒ ๋“ค์ž๋ฉด, ์ „๋ฌธ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ช…๋ฃŒํ•จ์ด ์ตœ๊ณ ๋ผ๋Š” ์‚ฌ์‹ค์„ ์ดํ•ดํ•œ๋‹ค.
  • ์ด ์žฅ์—์„œ ์†Œ๊ฐœํ•œ ๊ทœ์น™ ๋ช‡ ๊ฐœ๋ฅผ ์ ์šฉํ•ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง€๋Š”์ง€ ์‚ดํŽด๋ณด๋ผ.

0๊ฐœ์˜ ๋Œ“๊ธ€