Search

MVC ํŒจํ„ด & JavaFX

MVC ํŒจํ„ด & JavaFX

MVC ํŒจํ„ด

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ โ€œ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌโ€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ชจ๋“ˆํ™” ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด
M - Model : ๋ชจ๋ธ โ†’ ๋ฐ์ดํ„ฐ
V - View : ๋ทฐ โ†’ ํ™”๋ฉด
C - Controller : ์ปจํŠธ๋กค๋Ÿฌ โ†’ ๋ชจ๋ธ, ๋ทฐ ์ œ์–ดํ•˜๋Š” ์—ญํ• 
MVC (Model-View-Controller) ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์  ํŒจํ„ด์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
์ด ํŒจํ„ด์€ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ์ด‰์ง„ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ

โ€ข
Model (๋ชจ๋ธ): ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข
View (๋ทฐ): ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Controller (์ปจํŠธ๋กค๋Ÿฌ): ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
๊ตฌ์„ฑ ์š”์†Œ
์„ค๋ช…
์—ญํ• 
๋ชจ๋ธ (Model)
๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๋‹ด๋‹น
- ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐ ์—…๋ฐ์ดํŠธ - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰ - ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์œ ์ง€ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ
๋ทฐ (View)
์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(ํ™”๋ฉด)์„ ๋‹ด๋‹น
- ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ - ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ˆ˜์ง‘ ๋ฐ ์ „๋‹ฌ - ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜์—ฌ ํ™”๋ฉด ๊ฐฑ์‹  - ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
์ปจํŠธ๋กค๋Ÿฌ (Controller)
๋ชจ๋ธ๊ณผ ๋ทฐ ์‚ฌ์ด์˜ ์ค‘๊ฐœํ•˜๋Š” ์—ญํ• 
- ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ•ด์„ ๋ฐ ์ฒ˜๋ฆฌ - ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ๋ฐ ๊ด€๋ฆฌ - ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ ๊ด€๋ฆฌ - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ํ๋ฆ„ ์ œ์–ด

ํŒจํ„ด? (Pattern)

๋ชจ๋ฒ” ๋‹ต์•ˆ
์„ ํ—˜์ž๋‚˜ ์—ฐ๊ตฌ์ž๊ฐ€ ์‹œํ–‰์ฐฉ์˜ค๋‚˜ ์—ฐ๊ตฌ ๋์— ์ตœ์„ ์— ๊ฐ€๊นŒ์šด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์œผ๋กœ ์ž๋ฆฌ ์žก์€ ๊ตฌ์กฐ

์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ๋‹ต์•ˆ

๋””์ž์ธ ํŒจํ„ด

์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ๋‹ต์•ˆ

JavaFX์—์„œ์˜ MVC ํŒจํ„ด ๊ตฌํ˜„

JavaFX์—์„œ๋Š” FXML์„ ์‚ฌ์šฉํ•˜์—ฌ View(๋ทฐ) ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

FXML์ด๋ž€?

โ€ข
FXML์€ XML ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด๋กœ, JavaFX์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
UI ๊ตฌ์กฐ๋ฅผ ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ๋””์ž์ธ๊ณผ ๋กœ์ง์˜ ๋ถ„๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Scene Builder์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ์ ์œผ๋กœ UI๋ฅผ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaFX MVC ๊ตฌ์กฐ

๊ตฌ์„ฑ ์š”์†Œ
JavaFX์—์„œ์˜ ์—ญํ• 
๊ตฌํ˜„ ๋ฐฉ์‹
Model (๋ชจ๋ธ)
๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
- Java ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„- POJO (Plain Old Java Object)- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๋กœ์ง
View (๋ทฐ)
์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
-FXML ํŒŒ์ผ๋กœ ๊ตฌํ˜„- UI ์ปดํฌ๋„ŒํŠธ๋ฅผ XML ํ˜•์‹์œผ๋กœ ์ •์˜- CSS๋ฅผ ํ†ตํ•œ ์Šคํƒ€์ผ๋ง
Controller (์ปจํŠธ๋กค๋Ÿฌ)
์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ์ค‘์žฌ
- Java ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„- @FXML ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ- FXML์˜ ์ปดํฌ๋„ŒํŠธ์™€ ์—ฐ๊ฒฐ

FXML์˜ ์žฅ์ 

โ€ข
๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ: UI ๋””์ž์ธ(FXML)๊ณผ ๋กœ์ง(Controller)์ด ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
โ€ข
์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ: UI ๋ณ€๊ฒฝ ์‹œ Java ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
โ€ข
์žฌ์‚ฌ์šฉ์„ฑ: ๋™์ผํ•œ FXML ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํ˜‘์—… ์šฉ์ด: ๋””์ž์ด๋„ˆ๋Š” FXML์„, ๊ฐœ๋ฐœ์ž๋Š” Controller๋ฅผ ๋‹ด๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JavaFX MVC ์˜ˆ์‹œ ๊ตฌ์กฐ

ํ•ต์‹ฌ: JavaFX์—์„œ๋Š” FXML์ด View์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜์—ฌ, UI๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  Java ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ MVC ํŒจํ„ด์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.