Home > 2024 > DataStructure > ๐Ÿ“ฆ[DataStructure] ๋ณตํ•ฉ ์ž๋ฃŒ ๊ตฌ์กฐ

๐Ÿ“ฆ[DataStructure] ๋ณตํ•ฉ ์ž๋ฃŒ ๊ตฌ์กฐ
DataStructure

๋ณตํ•ฉ ์ž๋ฃŒ ๊ตฌ์กฐ.

๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋ณตํ•ฉ(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๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.