Skip to content

Latest commit

ย 

History

History
80 lines (56 loc) ยท 4.66 KB

Chapter3.md

File metadata and controls

80 lines (56 loc) ยท 4.66 KB

[Chapter 3] ํ•จ์ˆ˜๋ฅผ ์ž˜ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

1. ํ•จ์ˆ˜๋ฅผ ์ž‘๊ฒŒ, ๋” ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ

  • 2~4์ค„ ์ •๋„๋กœ ์—„์ฒญ ์งง๊ฒŒ
  • if/else/while ๋ฌธ ๋“ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋ก์€ ํ•œ์ค„์ด์—ฌ์•ผํ•จ
  • ์ค‘์ฒฉ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธธ๋งŒํผ ํ•จ์ˆ˜๊ฐ€ ์ปค์ ธ์„œ๋Š” ์•ˆ๋œ๋‹ค (ํ•จ์ˆ˜์—์„œ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์€ 1๋‹จ์ด๋‚˜ 2๋‹จ์„ ๋„˜์–ด์„œ๋ฉด ์•ˆ๋จ)

2. ํ•จ์ˆ˜๋Š” ํ•œ๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋ฅผ ์ž˜ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋งŒ์„ ํ•ด์•ผ ํ•œ๋‹ค. (SRP, Single Responsibility Principle)

  • ํ•จ์ˆ˜๊ฐ€ ํ•œ ๊ฐ€์ง€๋งŒ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•1 : ์ง€์ •๋œ ํ•จ์ˆ˜ ์ด๋ฆ„ ์•„๋ž˜์—์„œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•˜๋‚˜์ธ ๋‹จ๊ณ„๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ํ•œ๋‹ค.
  • ํ•จ์ˆ˜๊ฐ€ ํ•œ ๊ฐ€์ง€๋งŒ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•2 : ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ํ‘œํ˜„์ด์•„๋‹ˆ๋ผ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ ์ž‘์—…์€ ์—ฌ๋Ÿฌ ์ž‘์—…์• ํ•˜๋Š” ์…ˆ
  • ํ•จ์ˆ˜๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„น์…˜์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ•œ ํ•จ์ˆ˜์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•œ๋‹ค๋Š” ์ฆ๊ฑฐ, ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ์ด์œ ๊ฐ€ ์—ฌ๋Ÿฟ

  • ์šฐ๋ฆฌ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” ํฐ ๊ฐœ๋…์„(์ฆ‰, ํ•จ์ˆ˜ ์ด๋ฆ„์„) ๋‹ค์Œ ์ถ”์ƒํ™” ์ˆ˜์ค€์—์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

  • ์ถ”์ƒํ™”๋ž€? (์ถ”์ƒํ™” ์ˆ˜์ค€์ด๋ž€?)
    ์‚ฌ์†Œํ•œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ•ต์‹ฌ๋งŒ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ
    ์„ธ์ƒ ๋งŒ์‚ฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์›€์ง์ด๊ณ  ์žˆ๋Š”์ง€ ๊ทธ ๊ตฌ์กฐ, ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์ œํ•™์—์„œ๋Š” โ€˜๋ชจ๋ธ๋งโ€™์ด๋ผ๋Š” ํ‘œํ˜„๋„ ์ถ”์ƒํ™”์™€ ๋™์˜์–ด๋กœ ์“ฐ์ธ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    ๊ฐœ๋ณ„์„ฑ์„ ๋‚ฎ์ถ”๊ณ , ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒํ™ฉ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3. ํ•จ์ˆ˜ ๋‹น ์ถ”์ƒํ™” ์ˆ˜์ค€์€ ํ•˜๋‚˜๋กœ!

  • ๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™ : ์œ„์—์„œ ์•„๋ž˜๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์œผ๋ฉด ํ•จ์ˆ˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ ๋‚ฎ์•„์ง„๋‹ค.
  • Switch ๋ฌธ์€ ์ถ”์ƒ ํŒจํ† ๋ฆฌ์— ๊ฝ๊ฝ ์ˆจ๊ธฐ์ž

4. ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ!

  • ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ธธ์–ด๋„ ๊ดœ์ฐฎ๋‹ค. ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ฃผ์„๋ณด๋‹ค ์ข‹๋‹ค.
  • ์ด๋ฆ„์„ ๋ถ™์ผ ๋•Œ๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ชจ๋“ˆ ๋‚ด์—์„œ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๊ฐ™์€ ๋ฌธ๊ตฌ, ๋ช…์‚ฌ, ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

5. ํ•จ์ˆ˜ ์ธ์ˆ˜
- ์ด์ƒ์ ์ธ ์ธ์ˆ˜ ๊ฐœ์ˆ˜ ์ˆœ์„œ -> 0, 1 (3,4๊ฐœ ์ด์ƒ์€ ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๊ธฐ)

  1. ๋‹จํ•ญ ํ•จ์ˆ˜
    1. ์ธ์ˆ˜์— ์งˆ๋ฌธ์„ ๋˜์ง€๋Š” ๊ฒฝ์šฐ
    2. ์ธ์ˆ˜๋ฅผ ๋ญ”๊ฐ€๋กœ ๋ณ€ํ™˜ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ
    3. (๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉ) ์ด๋ฒคํŠธ ํ•จ์ˆ˜
  2. ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜ - ์“ฐ์ง€๋งˆ๋ผ
  3. ์ดํ•ญ ํ•จ์ˆ˜
    ๋‚˜์œ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ๋‹จํ•ญ ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๋„๋ก ์• ์จ์•ผํ•œ๋‹ค.
  4. ์‚ผํ•ญ ํ•จ์ˆ˜
    ์‹ ์ค‘ํžˆ ๋งŒ๋“ค์ž
  • ์ธ์ˆ˜ ๊ฐ์ฒด
Circle makeCircle(double x, double y, double radius)
Circle makeCircle(Point center, double radius)

์ธ์ˆ˜๊ฐ€ 2~3๊ฐœ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ผ๋ถ€๋ฅผ ๋…์ž์ ์ธ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์ž. ๊ฐœ๋…์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

  • ์ธ์ˆ˜ ๋ชฉ๋ก : ๋™๋“ฑํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฐ€๋ณ€ ์ธ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํ•จ์ˆ˜์—์„œ Listํ˜• ์ธ์ˆ˜ ํ•˜๋‚˜๋กœ ์ธ์ˆ˜ ๋Œ€์ฒดํ•˜๊ธฐ
  • ํ•จ์ˆ˜ ์ด๋ฆ„ : ๋™์‚ฌ/๋ช…์‚ฌ ์Œ + ์ธ์ˆ˜ ์ด๋ฆ„(์ธ์ˆ˜ ์ˆœ์„œ์— ๋งž๊ฒŒ ๋„ฃ๊ธฐ)

6. ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค์ง€ ๋งˆ๋ผ!

  • ํ•จ์ˆ˜ ์ด๋ฆ„์—์„œ ์ง์ž‘ํ–ˆ๋˜ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ์˜ˆ์ƒ์น˜๋ชปํ•œ ๋‚ด์šฉ์ด ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋กํ•ด์•ผํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ์ถœ๋ ฅ ์ธ์ˆ˜๋ฅผ ์“ฐ์ง€ ๋งˆ๋ผ (๋‹ค๋ฅธ ๋ฐ์— ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ) -> ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค๋ฉด ํ•จ์ˆ˜๊ฐ€ ์†ํ•œ ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๊ธฐ

7. ๋ช…๋ น๊ณผ ์กฐํšŒ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ผ!

  • ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋‘˜ ๋‹ค ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • Try/Catch ๋ธ”๋ก์€ ๋”ฐ๋กœ ๋ฝ‘์•„๋‚ด์„œ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด๋ผ.

8. ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ณด๋‹ค ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ!
(if๋ฅผ ์‚ฌ์šฉํ•˜๋Š”)์˜ค๋ฅ˜ ์ฝ”๋“œ๋ณด๋‹ค ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ์›๋ž˜ ์ฝ”๋“œ์—์„œ ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง„๋‹ค.

9. ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ๋ผ!
์ค‘๋ณต์„ ์—†์• ๋ฉด ๋ชจ๋“ˆ ๊ฐ€๋…์„ฑ์ด ํฌ๊ฒŒ ๋†’์•„์ง„๋‹ค.

10. ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ํฐ ํ•จ์ˆ˜์—์„œ : return ๋ฌธ์ด ํ•˜๋‚˜์—ฌ์•ผํ•œ๋‹ค. ๋ฃจํ”„ ์•ˆ์—์„œ break, continue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค. goto๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผํ•œ๋‹ค.
  • ์ž‘์€ ํ•จ์ˆ˜์—์„œ : return, break, continue ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•ด๋„๋œ๋‹ค. goto๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผํ•œ๋‹ค.

๊ฒฐ๋ก 

  • ํ•จ์ˆ˜๋Š” ๋™์‚ฌ๋ฉฐ, ํด๋ž˜์Šค๋Š” ๋ช…์‚ฌ๋‹ค.
  • ์ž˜๋งŒ๋“  ํ•จ์ˆ˜๋Š” ๊ธธ์ด๊ฐ€ ์งง๊ณ , ์ด๋ฆ„์ด ์ข‹๊ณ , ์ฒด๊ณ„๊ฐ€ ์žกํžŒ ํ•จ์ˆ˜์ด๋‹ค.
  • ํ•จ์ˆ˜์˜ ๊ทผ๋ณธ์ ์ธ ๋ชฉํ‘œ๋Š” ์‹œ์Šคํ…œ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ’€์–ด๊ฐ€๋Š”๋ฐ ์žˆ๋‹ค.