๊ฐ๋ฐ์์ /์ค๋ธ์ ํธ - ์กฐ์ํธ
Chapter 7. ๊ฐ์ฒด ๋ถํด
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ก์์ ์ถ์ํ์ ๊ธฐ๋ฅ ๋ถํด ๐ก ํ๋ก์์ ๋ ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๊ฑฐ์ ์ ์ฌํ๊ฒ ์คํ๋๋ ์์ ๋ค์ ํ๋์ ์ฅ์์ ๋ชจ์๋์์ผ๋ก์จ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ณ ์ค๋ณต์ ๋ฐฉ์งํ ์ ์๋ ์ถ์ํ ๋ฐฉ๋ฒ์ด๋ค. ์ ํต์ ์ธ ๊ธฐ๋ฅ ๋ถํด ๋ฐฉ๋ฒ์ ์์คํ ์ ๊ตฌ์ฑํ๋ ์ต์์ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ์์ ๋จ๊ณ์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ๋ถํดํด ๋๊ฐ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ๐ก ์ธ๋ถํ๋ ๋ง์ง๋ง ํ์ ๊ธฐ๋ฅ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํ๊ฐ๋ฅํ ์์ค์ด ๋ ๋๊น์ง ๊ณ์ ๋๋ค. ํํฅ์ ํ๋ก์์ ์ถ์ํ๋ฅผ ํตํด ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ด ๋๋ค. ์ต์์ ๊ธฐ๋ฅ(){ ์ธ๋ถ๊ธฐ๋ฅ1(); ์ธ๋ถ๊ธฐ๋ฅ2(); ์ธ๋ถ๊ธฐ๋ฅ3(); .. } ์ต์์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ ์ธ๋ถ๊ธฐ๋ฅ์ด ํธ์ถ๋์ด ์ํ๋ ์ต์์ ๊ธฐ๋ฅ์ ์..
Chapter 6. ๋ฉ์์ง์ ์ธํฐํ์ด์ค
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๋ฉ์์ง์ ๋ฉ์๋ ๐ก ๋ฉ์์ง๋, ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์ ์ผํ๊ฒ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฐ ๋ฌธ๋ฒ์ ์๋ก ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ฒ์ด ๋ฉ์์ง ์ ์ก์ด๋ค. ์์ ์.์คํผ๋ ์ด์ ๋ช (์ธ์); [ ex. condition.isSatisfiedBy(screening) ] โ ๋ฉ์ธ์ง์ ๋ฉ์๋๋ ๊ทธ๋ฌ๋ฉด ๊ฐ์๊ฑฐ ์๋์ผ? ๋ง์ฝ, ์์ ์ ๊ฐ์ฒด๊ฐ ์ธํฐํ์ด์ค ํํ๊ฐ ์๋ ๊ตฌํ์ฒด๋ผ๋ฉด ๋ง๋ ๋ง์ด ๋ ์ ์๋ค. ํ์ง๋ง, ๐จ ์์ ์ ๊ฐ์ฒด๊ฐ ์ธํฐํ์ด์ค๋ก ์ ์๋์ด์๋ค๋ฉด, ํด๋น ๋ฉ์์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๋์ ๋ฐ๋ผ ์ค์ ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์, ๐ก ๋ฉ์๋๋ ์์ ์ ๊ฐ์ฒด๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์, ์ค์ ๋ก ์คํ๋๋ ํ๋ก์ธ์ค(ํจ์)๋ฅผ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ..
Chapter 5. ์ฑ ์ ํ ๋นํ๊ธฐ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ์ฑ ์ ์ฃผ๋ ์ค๊ณ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณํ๊ฒ๋๋ฉด ์ ์ฐํ ์ค๊ณ๋ฅผ ํ๊ธฐ ํ๋ค๋ค. ์ ์ด์, '๋ฐ์ดํฐ' ๋ผ๋ ๊ฒ์ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด์ด๊ณ , ์ด๋ ๊ตฌํ์ ํด๋นํ๋ค. ๋ฐ๋ผ์, ๋ฐ์ดํฐ ์ค์ฌ์ ์ค๊ณ๋ ๊ฐ์ฒด์ ๊ตฌํ๋ถ์ ์ด์ ์ ๋ง์ถ๊ณ ์ค๊ณ ํ๋ค๋ ์๋ฏธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ผ๋ก ๊ฐ์ฒด ๊ฐ ํ๋ ฅ์ ์๊ฐํ๊ฒ ๋๋ฉด ์ธ๋ถ ๊ฐ์ฒด์๊ฒ ์์ ์ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด๋ฏ๋ก ์บก์ํ๋ฅผ ๋ฐฉํดํ๊ฒ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๊ตฌํ์ ์ค์ ์ผ๋กํ ์ค๊ณ๋ ์บก์ํ๋ฅผ ์ ํดํ๊ณ ์์ง๋๋ ๋ฎ์ถ๊ณ ๊ฒฐํฉ๋๋ ๋์์ผ๋ก์ ๋ณํ์ ์ทจ์ฝํ ์ค๊ณ๊ฐ ๋๋ค. ๐ก ๋ฐ๋ผ์, ๊ฐ์ฒด ์งํฅ์ ํต์ฌ์ธ ํ๋ ฅ, ์ฑ ์, ์ญํ ์ค ๊ฐ์ฅ ์ค์ํ ์ฑ ์ ์ ์ค์ ์ผ๋ก ์ค๊ณํ๋ ๊ฒ์ด ์ ์ฐํ ์ค๊ณ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค. [..
Chapter 4. ์ค๊ณ ํ์ง๊ณผ ํธ๋ ์ด๋์คํ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ ฅ, ์ฑ ์, ์ญํ ๊ทธ๋ฆฌ๊ณ ์ค๊ณ ํ์ง ํ๋ ฅ์ ๊ฐ์ฒด๋ค ๊ฐ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์งํ๋๋ ์ํธ์์ฉ์ด๋ค. ์ฑ ์์ ๊ฐ์ฒด๊ฐ ์ํํ๋ ํ๋์ด๋ค. ์ญํ ์ ์ฑ ์๋ค์ ์งํฉ์ด๋ค. ํ๋ ฅ, ์ฑ ์, ์ญํ ํ ๋น์ด ์ ๋์ด์ผ ๋ฐ๋์งํ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๊ฐ ๊ฐ๋ฅํด์ง๋ค. ๐ก ๊ทธ ์ค์์๋ ์ฑ ์์ด ์ ํ ๋น๋๋ ๊ฒ์ด ์ค์ํ๋ค. ๐จ ์ญํ ์ ์ฑ ์์ ์งํฉ์ด๊ธฐ ๋๋ฌธ์, ์ฑ ์์ ํ์ง์ ์์กดํ๊ฒ ๋๋ค. ํ๋ ฅ ์ญ์, ์ฑ ์์ด ์ ํ ๋น๋์ง ๋ชปํ๋ฉด ํจ์จ์ ์ผ๋ก ํ ์ ์๊ฒ๋๋ค. โ ์ฑ ์์ ์ด๋ค ์์ผ๋ก ํ ๋นํด์ผํ ๊น? ๋น์ทํ ์ฑ ์๋ผ๋ฆฌ ํ๋์ ๋ชฉ์ ์ ์ํด ํ๋ ฅํ๋ ๊ฒ ๋ผ๋ฆฌ ๋ชจ์๋๋ ๋์ ์์ง๋์ ๋ค๋ฅธ ์ฑ ์๋ผ๋ฆฌ ๋ถ๋ฆฌํ๋ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ๋ง์กฑํ๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋์ผ๋ง, ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋..
Chapter 3. ์ญํ , ์ฑ ์, ํ๋ ฅ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๊ฐ์ฒด ์งํฅ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๐ก ์ญํ , ์ฑ ์, ํ๋ ฅ์ด๋ค. ํด๋์ค, ์์, ์ง์ฐ ๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ ๊ฐ๋ ์ ๊ตฌํ์ ์ด์ ์ด ๋ง์ถ์ด์ ธ ์๊ธฐ ๋๋ฌธ์, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ค ํ๋ ฅ์ด ํ์ํ๊ณ ํ๋ ฅ์ ์ํด ์ด๋ค ์ญํ ๊ณผ ์ฑ ์์ด ํ์ํ์ง ๊ณ ๋ฏผ์ ํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค. 1๏ธโฃ ํ๋ ฅ ๊ฐ์ฒด๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ํํ๋ ์ํธ์์ฉ์ ๋งํ๋ค. ๋ ๊ฐ์ฒด์ ํ๋ ฅ์, ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋์์ ์์ฒญํ ๋ ์์๋๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ธํ ๋ด๋ถ ๊ตฌํ์ ์ง์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ๐ก ๋ฉ์์ง ์ ์ก์ ํตํด ํ๋ ฅํ๋ค. ๋ง์ฝ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ์ ๊ทผํ์ฌ ๋์ํ๋ค๋ฉด, ๊ฐ์ฒด์ ์์จ์ฑ์ ํผ์ํ๋ ํ์์ด๋ค. ๋ฐ๋ผ์, ..
Chapter 2. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋, ์ ๋ ํด์ผํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ด๋ค ํด๋์ค๊ฐ ํ์ํ์ง ๊ณ ๋ฏผํ๊ธฐ ์ ์ ์ด๋ค ๊ฐ์ฒด๋ค์ด ํ์ํ์ง ๊ณ ๋ฏผํด์ผํ๋ค. ์ฝ๋๋ก์ ๋ฐ๋ผ๋ณด๊ธฐ ์ ์ ๊ธฐ๋ฅ์ด ๋์๋๋ ๋ฉ์ปค๋์ฆ์ ์ ์๊ฐํ๋ผ๋ ์๋ฏธ์ธ ๊ฒ ๊ฐ๋ค. ๊ฐ์ฒด๋ฅผ ๊ณ ๋ฆฝ๋ ์กด์ฌ๋ก ๋ฐ๋ผ๋ณด์ง ๋ง๊ณ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ํ๋ ฅ์๋ก ๋ฐ๋ผ๋ณด์์ผ ํ๋ค. ๋ฌด์์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๋ ค๊ณ ๋ ธ๋ ฅํ๊ธฐ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ํ๋ ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๋ ๊ฒ์ด ํ์ํ๋ค. ํด๋์ค์ ๊ฒฝ๊ณ๋ฅผ ์ ๊ตฌ๋ถ ์ง์ด์ผ ํ๋ค. Chapter 1์์๋ ๋ง์ด ์ค๋ช ํ๋ฏ์ด, ๊ฐ์ฒด๋ ์์ ์ ํ๋๋ฅผ ์์ ์ด ๊ด๋ฆฌํ๋๋ก ํด์ผํ๋ฉฐ ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์บก์ํ๋ฅผ ํตํด ์ธ๋ถ์ ๊ณต๊ฐํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ์ธ๋ถ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ..
Chapter 1. ๊ฐ์ฒด, ์ค๊ณ
์กฐ์ํธ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ฝ๊ณ ์ ๋จธ๋ฆฟ์์ ์๋ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ๋ณ๊ฒฝ์ ์ทจ์ฝํ ์ฝ๋ public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audience audience) { // ๊ด๋๊ฐ ๊ฐ๋ฐฉ์ ์ด๋๊ถ์ด ์๋ค๋ฉด? if (audience.getBag().hasInvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTicket(); // ํฐ์ผ ์ ๊ณต audience.getBag().setTicket(ticket..