๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ.
๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋ณตํฉ(composite) ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๊ฐ๋ณ ๋ณ์๋ฅผ ํ ๊ทธ๋ฃน์ผ๋ก ์ฎ์ ๊ตฌ์กฐ์ฒด(struct)๋ ๊ฐ์ฒด(object)๊ฐ ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ์ ์ํฉ๋๋ค.
- ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ๋ ๊ด๋ จ์๋ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ํ๋ฐ ๋ชจ์์ ํ๊บผ๋ฒ์ ์ ๋ฌํ ์ ์๋ ์์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๊ฐ ์์ํ ์ปคํผ ์ข ๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ๋ชจ์ CoffeeRecord๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
CoffeeRecord {
String: Name
String: Brand
Integer: Rating
Float: Cost_Per_Pound
Boolean: Is_Dark_Roast
String: Other_Notes
}
- ์ปคํผ์ ์์ฑ์ ์ถ์ ํ๊ธฐ ์ํด ๋ณ์ ์ฌ์ฏ ๊ฐ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ์ ์งํ๋ ๋์ , ๋ชจ๋ ์ ๋ณด๋ฅผ ํ๋์ ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ CoffeeRecord์ ์ ์ฅํฉ๋๋ค.
์์ฑ์ด ์ถ๊ฐ๋๋ฉด ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ค์ํด์ง๋๋ค.
- ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์๋ค๋ฉด ์๋ฐฑ ๊ฐ์ ๊ด๋ จ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋๋ฐ, ์ด๋ ๋ณ์๋ฅผ ์๋ชป๋ ์์๋ก ํจ์์ ์ ๋ฌํ๋ ๋ฑ ํ๋ก๊ทธ๋๋จธ์ ์ค์๋ฅผ ์ผ๊ธฐํ ๊ฐ๋ฅ์ฑ๋ ๋ ๋์ต๋๋ค.
์๋ฐ(Java)๋ ํ์ด์ฌ(Python)์ ๋น๋กฏํ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์, ๋ณตํฉ ๋ฐ์ดํฐ๋ ์์ ์ ๋ฐ์ดํฐ์ ์๋์ ๋ํ ํจ์๋ฅผ ๋ชจ๋ ํฌํจํ๋ โ๊ฐ์ฒด(object)โ๊ฐ ๋ ์ ์์ต๋๋ค.
๊ฐ์ฒด์ ํจ์๋ ํ์ด์ฌ์ self ์ฐธ์กฐ์ฒ๋ผ ํน๋ณํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ํด๋น ๊ฐ์ฒด ์์ ์ ๋ฐ์ดํฐ์ ์ ๊ธํฉ๋๋ค.
๊ฐ์ฒด๋ ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ์ธ๋ถ์์ ๊ณต๊ฐ์ ์ผ๋ก ์ ๊ทผํ๋๋ก ํ์ฉํ ์ง ์๋๋ฉด ๋น๊ณต๊ฐ์ ์ผ๋ก ๊ฐ์ฒด ๋ด๋ถ ํจ์์์๋ง ์ ๊ทผํ๊ฒ ํ ์ง๋ฅผ ์ง์ ํ๋ ๊ฐ์์ฑ(visibility) ๊ท์น์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์์๋ ๋ค์ ์์ ์ฒ๋ผ โ๋ณ์์ด๋ฆ.ํ๋์ด๋ฆโ ์ด๋ผ๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ๋ณตํฉ ์๋ฃ ๊ตฌ์กฐ์ ํ๋์ ์ ๊ทผํฉ๋๋ค.
last_record.name = "Sublime Blend"
- ์ด ์ฝ๋๋ ์ปคํผ ๊ธฐ๋ก์ ์๋ lastest_record ๋ ์ฝ๋์ name ํ๋๋ฅผ Sublime Blend๋ก ์ค์ ํฉ๋๋ค.