SlideShare a Scribd company logo
1 of 35
Download to read offline
Scala
self type & inheritance
myjlms99@gmail.com
๋ช…๊ธฐ์  ์ƒ์†๊ณผ ๊ตฌ์„ฑ
Inheritance
์ƒ์†์€ ์ˆ˜ํผํด๋ž˜์Šค ๋‚ด์˜ ๋ฉค๋ฒ„๋ฅผ ์ƒ์†์„ ๋ฐ›
์•„์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜
์žˆ๋‹ค.
Composition:
์ƒ์† ๊ด€๊ณ„๋กœ ์ธํ•ด ์ˆ˜ํผ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€
๊ฒฝํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ
์„ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณต
Inheritance
์ƒ์†์€ ์ˆ˜ํผํด๋ž˜์Šค ๋‚ด์˜ ๋ฉค๋ฒ„๋ฅผ ์ƒ์†์„ ๋ฐ›
์•„์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜
์žˆ๋‹ค.
์ž๊ธฐ ์ฐธ์กฐ(self reference)
Self type์œผ๋กœ ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ
self=>๋กœ๋งŒ ์ •์˜ํ•œ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ this ๋ณ„์นญ
์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
self => ์‚ฝ์ž…์€ this ํ‚ค์›Œ๋“œ ๋Œ€์‹  ๋‹ค๋ฅธ ์ด
๋ฆ„์ธ self๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ
Self type์œผ๋กœ ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ
self=>๋กœ๋งŒ ์ •์˜ํ•œ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ this ๋ณ„์นญ
์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
Self-type annotations
ํด๋ž˜์Šค ๋‚ด๋ถ€์— ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ง€์ •ํ• 
๊ฒฝ์šฐ ์ƒ์œ„ ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์ด ๋ฉค๋ฒ„๊ฐ€
์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ํ‘œ์‹œํ•œ๋‹ค.
์ž์ฒด ์œ ํ˜•์œผ๋กœ
์‚ฌ์šฉํ•˜๊ธฐ
Self-type์œผ๋กœ ์ƒ์† ์ฒ˜๋ฆฌํ•˜๊ธฐ
Self type์œผ๋กœ trait๋‚˜ class ์ง€์ •
self type ๋’ค์— ์‹ค์ œ ์ƒ์†ํ•  trait๋‚˜ class๋ฅผ ๋„ฃ
์–ด์„œ ์ƒ์†๊ณผ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹์œผ
๋กœ ์ง์ ‘ ํ™•์žฅ๋ณด๋‹ค ๊ฐ„์ ‘ ํ™•์ •์„ ํ•˜๋Š” ์„ ์–ธ์„ ์œ„
ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
์ž๊ฐ€ ์œ ํ˜•์€ ํŠน์„ฑ์„ ์ง์ ‘ ํ™•์žฅํ•˜์ง€๋Š” ์•Š
๋”๋ผ๋„ ํŠน์„ฑ์„ ๋‹ค๋ฅธ ํŠน์„ฑ๊ณผ ํ˜ผํ•ฉํ•ด์•ผ ํ•œ
๋‹ค๊ณ  ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
์‹ค์ œ ์ •์˜๋œ ๊ฒƒ์„ ๋ช…๊ธฐ ์—†์ด ๊ฐ€์ ธ์˜ค๋Š”
๊ฒƒ์ด๋ฏ€๋กœ ํ˜ผ๋ž€์€ ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ์†ํ‘œ์‹œ
์—†์ด ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.
Where to use self-types?
Self type์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์‹ค์ œ ํด๋ž˜์Šค์— ์‚ฌ
์šฉ๋˜๋Š” ์ˆœ์„œ
๋ช…์‹œ์  extends ์ฒ˜๋ฆฌ : class
ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ extendsํ•œ trait๋ฅผ ๋งŒ๋“ค
๋ฉด ์‹ค์ œ ํด๋ž˜์Šค๊ฐ€ ๋ช…๊ธฐ์ ์œผ๋กœ trait์—์„œ ์‚ฌ์šฉ๊ฐ€
๋Šฅํ•˜๊ณ  ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ญ
์ƒ trait๋ฅผ with ๋‹ค์Œ์— ์œ„์น˜ํ•œ๋‹ค.
Class ์ •์˜
Trait ์— class ์ƒ์†
์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ trait ์‚ฌ์šฉ
Self type ์ •์˜
ํ•˜๋‚˜์˜ trait์„ ์ •์˜ํ•˜๊ณ  self type์œผ๋กœ ์ง€์ •
ํ•ด์„œ ๊ทธ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์ถ”๊ฐ€
์ ์œผ๋กœ ํ™•์žฅ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
Self type ์ •์˜ ๋ฐ ์‹คํ–‰
2๊ฐœ์˜ trait๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ๋‚ด์—
self type์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์ •์˜๊ฐ€ ๋˜๊ณ  ์‹ค์ œ
์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๋•Œ๋„ with ๋ฌธ์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
ํƒ€ trait๋‚˜ ์ธ์Šคํ„ด์Šค ์ฐธ์กฐ
Self Type Annotation ์ •์˜
ํ•˜๋‚˜์˜ trait์„ ์ด์šฉํ•ด์„œ self type
annotation์„ ์ž‘์„ฑํ•˜๊ณ  class๋ฅผ ์ •์˜ํ•œ๋‹ค.
๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฉ”
์†Œ๋“œ ์ •์˜ํ•  ๋•Œ ์ปดํŒŒ
์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
Self Type Annotation ์‹คํ–‰
self type annotation์€ ๊ฐ„์ ‘์  ํ™•์žฅ์ด๋ฏ€๋กœ
์ƒˆ๋กœ์šด ์ธ์Šคํ„ดใ……๋ฅผ ๋งŒ๋“ค๋•Œ with ๋ฌธ์„ ์‚ฌ์šฉ
ํ•ด์„œ ๋ฐฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
Self type์„ ์ด์šฉํ•œ object ์ฒ˜
๋ฆฌ
Trait๋ฅผ ์ง€์ •ํ•  ๋•Œ self type ์‚ฌ์šฉ
ํ•˜๋‚˜์˜ ์ถ”์ƒ trait์„ self type์œผ๋กœ ์ง€์ •ํ•œ
trait์ด ์žˆ๋‹ค.
Object๋ฅผ ์ด์šฉํ•œ self type ํ™œ์šฉ
Object๊ฐ€ ์‚ฌ์šฉํ•  Mix trait๋ฅผ ์ƒ์†ํ–ˆ๊ณ  User
trait ์˜†์— ์‹ค์ œ ๊ตฌํ˜„๋œ ๋ธ”๋ก์„ ์ •์˜ํ•œ๋‹ค. ์‹ค์ œ
foo ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ตฌํ˜„๋œ name์ด ์ฒ˜๋ฆฌ
๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹จ์ผ Self type
Self type ์ฒ˜๋ฆฌ
์ƒ์†ํ•˜์ง€ ์•Š๊ณ  ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •
ํ•ด์„œ ๊ทธ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ฒ˜๋ฆฌํ•˜๋ฉด ์‹ค์ œ ํด
๋ž˜์Šค์— ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.
์ƒ์†ํ•ด์„œ ์ฒ˜๋ฆฌ
์ƒ์†ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ „๋ถ€ ๊ตฌํ˜„
ํ•ด์•ผ ํ•˜์ง€๋งŒ self type์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž๋™์œผ
๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์ž‡๋‹ค.
๋ณต์ˆ˜ ๊ฐœ Self type ์ฒ˜๋ฆฌ
์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ self ํƒ€์ž… ์ฒ˜๋ฆฌ
self type์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ •์˜ํ•˜๋ ค๋ฉด with๋ฌธ์œผ๋กœ
์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
๊ตฌ์กฐ์  self type
๊ตฌ์กฐ์  ํƒ€์ž…์˜ ์ด์ 
๊ตฌ์กฐ์  ํƒ€์ดํ•‘์€ ํŠน์„ฑ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํด๋ž˜์Šค
๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ฒฐํ•ฉ์„ ์ค„์ด๊ณ  ์žฌ์‚ฌ์šฉ
์„ ๋Š˜๋ฆฌ๋ ค๋Š” ๊ฒฝ์šฐ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ดํ•‘ ๋Œ€์‹  trait์˜ ์ด์ ์€ ํด๋ž˜์Šค
์˜ ์—ญํ• ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ž… ์ง€์ •
ํ•จ์ˆ˜ ๋‚ด์˜ ์ธ์ž๋กœ ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„ ์ž„์˜์˜
๊ตฌ์กฐ์  ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค. ์‹ค์ œ ํด๋ž˜์Šค์˜ ์ธ์Šค
ํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ฒ˜๋ฆฌ๋˜๋Š”
๋œ๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ž…์„ ํƒ€์ž… ๋ณ„์นญ ์ง€์ •
๊ตฌ์กฐ์  ํƒ€์ž…์„ ํƒ€์ž… ๋ณ„์นญ์œผ๋กœ ์ง€์ •ํ•ด์„œ ํ•จ
์ˆ˜์— ์„ ์–ธํ•˜๋ฉด ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋” ๋ช…ํ™•
ํ•ด ๋ณด์ธ๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ž…์„ self type ์ง€์ •
์‹ค์ œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ง์ ‘ ์ •์˜ํ•ด์„œ ๊ตฌ์กฐ์ 
ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด์„œ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ž…์˜ ๋ฉ”์†Œ๋“œ
๋Š” ์ถ”์ƒ ํƒ€์ž…์œผ๋กœ ์ง€์ •
ํ•œ๋‹ค.
๊ตฌ์กฐ์  ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„
๊ฐ๊ฐ์˜ trait์— ์ •์˜ํ•˜๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ •
์˜ํ•˜๊ณ  ์ด๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ with ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉ
ํ•ด์„œ ๋‹ค์ค‘์ƒ์†์„ ์ฒ˜๋ฆฌ
Object์— self type ์‚ฌ์šฉํ•˜๊ธฐ
Object/Class์— self type 1
Object ๋‚ด์— self type์„ ์ง€์ •ํ•˜๋ฉด ์‹ค์ œ self
๊ฐ€ ์ธ์‹๋˜์ง€ ์•Š๋Š”๋‹ค.
Object/Class์— self type 2
ํด๋ž˜์Šค ๋‚ด์˜ with ๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด
์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ
๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

More Related Content

What's hot

Scala namespace scope
Scala namespace scopeScala namespace scope
Scala namespace scopeYong Joon Moon
ย 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic functionYong Joon Moon
ย 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax functionYong Joon Moon
ย 
Scala type args
Scala type argsScala type args
Scala type argsYong Joon Moon
ย 
Scala match pattern
Scala match patternScala match pattern
Scala match patternYong Joon Moon
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java์œ ๋ฆฌ ํ•˜
ย 
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€HoJun Sung
ย 
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰Yong Joon Moon
ย 
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6๋ฏผํƒœ ๊น€
ย 
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅJinhwa Hong
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆPark Jonggun
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„Bongseok Cho
ย 
Python class
Python classPython class
Python classHerren
ย 
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์˜ˆ๋ฆผ ์ž„
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and objectแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object๋ฏผํƒœ ๊น€
ย 
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œThe c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ์žฌ์ • ์ด
ย 
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Park Jonggun
ย 
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)๋””์ž์ธ ํŒจํ„ด(Observer, visitor)
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)์„ธ๋นˆ ์ •
ย 

What's hot (20)

Scala namespace scope
Scala namespace scopeScala namespace scope
Scala namespace scope
ย 
Scala nested function generic function
Scala nested function generic functionScala nested function generic function
Scala nested function generic function
ย 
Scala syntax function
Scala syntax functionScala syntax function
Scala syntax function
ย 
Scala type args
Scala type argsScala type args
Scala type args
ย 
C++ struct copy
C++ struct copyC++ struct copy
C++ struct copy
ย 
Scala match pattern
Scala match patternScala match pattern
Scala match pattern
ย 
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
ย 
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
Head first๋””์ž์ธํŒจํ„ด 1~13_ํฌ๋ฏผ_ํ˜ธ์ค€
ย 
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
ย 
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6
แ„‡แ…ตแ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ Javascript แ„‹แ…กแ†ฏแ„‹แ…กแ„€แ…กแ„€แ…ต #6
ย 
Effective c++ Chapter1,2
Effective c++ Chapter1,2Effective c++ Chapter1,2
Effective c++ Chapter1,2
ย 
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ
์ƒ์ฝ”์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์Šคํ„ฐ๋””3์žฅ
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
ย 
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
C++20์—์„œ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ย 
Python class
Python classPython class
Python class
ย 
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด
ย 
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and objectแ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5   function and object
แ„‹แ…ฌแ„€แ…จแ„‹แ…ฅ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 3/5 function and object
ย 
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œThe c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ
The c++ programming language 10์žฅ ํด๋ž˜์Šค ๋ฐœํ‘œ
ย 
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
ย 
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)๋””์ž์ธ ํŒจํ„ด(Observer, visitor)
๋””์ž์ธ ํŒจํ„ด(Observer, visitor)
ย 

Similar to Scala self type inheritance

C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1
C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1
C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1์ค€์˜ ๋ฐ•
ย 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ ๋ช…์ค€ ๊น€
ย 
Design patterns
Design patternsDesign patterns
Design patternsJoshua Yoon
ย 
๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13Shin heemin
ย 
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7Yeonah Ki
ย 
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜Keunhyun Oh
ย 
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณChangwon National University
ย 
04. interface in typescript
04. interface in typescript04. interface in typescript
04. interface in typescriptHan JaeYeab
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4yonsei
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6quxn6
ย 

Similar to Scala self type inheritance (20)

C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1
C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1
C# ๊ณ ๊ธ‰ ๋ฌธ๋ฒ• part 1
ย 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ 
ํŒŒ์ด์ฌ ๋‘˜์งธ๋‚ 
ย 
Design patterns
Design patternsDesign patterns
Design patterns
ย 
๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13๋””์ž์ธํŒจํ„ด 1~13
๋””์ž์ธํŒจํ„ด 1~13
ย 
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
แ„€แ…ฆแ„‹แ…ตแ†ทแ„‘แ…ณแ„…แ…ฉแ„€แ…ณแ„…แ…ขแ„†แ…ตแ†ผแ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ 7
ย 
Composite pattern
Composite patternComposite pattern
Composite pattern
ย 
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜
[SwiftStudy 2016] 3์žฅ. ํ•จ์ˆ˜
ย 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
ย 
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
10 swift แ„‹แ…งแ†ฏแ„€แ…ฅแ„’แ…งแ†ผแ„€แ…ฎแ„Œแ…ฉแ„Žแ…ฆแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
ย 
EC 789
EC 789EC 789
EC 789
ย 
04. interface in typescript
04. interface in typescript04. interface in typescript
04. interface in typescript
ย 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Special method แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4
ย 
Effective c++ 3
Effective c++ 3Effective c++ 3
Effective c++ 3
ย 
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ  for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ  for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
[IT๊ธฐ์ˆ ์นผ๋Ÿผ#1]๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ for AngularJS, React_๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,AngularJS,React์ „๋ฌธ๊ต์œกํ•™์›
ย 
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
(๊ณ ๊ธ‰์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค?
ย 
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1
ย 
Holub on-patterns-2-1
Holub on-patterns-2-1Holub on-patterns-2-1
Holub on-patterns-2-1
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6
ย 

More from Yong Joon Moon

rust ownership
rust ownership rust ownership
rust ownership Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐ
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐ
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐYong Joon Moon
ย 
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐYong Joon Moon
ย 
Python+numpy pandas 4แ„‘แ…งแ†ซ
Python+numpy pandas 4แ„‘แ…งแ†ซPython+numpy pandas 4แ„‘แ…งแ†ซ
Python+numpy pandas 4แ„‘แ…งแ†ซYong Joon Moon
ย 
Python+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซPython+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซYong Joon Moon
ย 
Python+numpy pandas 2แ„‘แ…งแ†ซ
Python+numpy pandas 2แ„‘แ…งแ†ซPython+numpy pandas 2แ„‘แ…งแ†ซ
Python+numpy pandas 2แ„‘แ…งแ†ซYong Joon Moon
ย 
Python+numpy pandas 1แ„‘แ…งแ†ซ
Python+numpy pandas 1แ„‘แ…งแ†ซPython+numpy pandas 1แ„‘แ…งแ†ซ
Python+numpy pandas 1แ„‘แ…งแ†ซYong Joon Moon
ย 
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆYong Joon Moon
ย 
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ Yong Joon Moon
ย 

More from Yong Joon Moon (16)

rust ownership
rust ownership rust ownership
rust ownership
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‡แ…กแ†ซแ„‡แ…ฉแ†จแ„Œแ…ก แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผแ„Œแ…ก แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ฅแ„แ…ต แ„ƒแ…ตแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ฅ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„†แ…ฎแ†ซแ„Œแ…กแ„‹แ…งแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‚แ…ขแ„‡แ…ฎ แ„ƒแ…ฆแ„‹แ…ตแ„แ…ฅ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Xml แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ class ๋ฐ function namespace ์ดํ•ดํ•˜๊ธฐ
ย 
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐ
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐ
ํŒŒ์ด์ฌ ์—‘์…€_csv ์ฒ˜๋ฆฌํ•˜๊ธฐ
ย 
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ํŒŒ์ด์ฌ ํŒŒ์ผ์ฒ˜๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
ย 
Python+numpy pandas 4แ„‘แ…งแ†ซ
Python+numpy pandas 4แ„‘แ…งแ†ซPython+numpy pandas 4แ„‘แ…งแ†ซ
Python+numpy pandas 4แ„‘แ…งแ†ซ
ย 
Python+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซPython+numpy pandas 3แ„‘แ…งแ†ซ
Python+numpy pandas 3แ„‘แ…งแ†ซ
ย 
Python+numpy pandas 2แ„‘แ…งแ†ซ
Python+numpy pandas 2แ„‘แ…งแ†ซPython+numpy pandas 2แ„‘แ…งแ†ซ
Python+numpy pandas 2แ„‘แ…งแ†ซ
ย 
Python+numpy pandas 1แ„‘แ…งแ†ซ
Python+numpy pandas 1แ„‘แ…งแ†ซPython+numpy pandas 1แ„‘แ…งแ†ซ
Python+numpy pandas 1แ„‘แ…งแ†ซ
ย 
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ํŒŒ์ด์ฌ ํฌ๋กค๋ง ๋ชจ๋“ˆ
ย 
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ
แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ช แ„‹แ…ตแ†ซแ„†แ…ฎแ†ซแ„’แ…กแ†จ
ย 

Scala self type inheritance

  • 1. Scala self type & inheritance myjlms99@gmail.com
  • 3. Inheritance ์ƒ์†์€ ์ˆ˜ํผํด๋ž˜์Šค ๋‚ด์˜ ๋ฉค๋ฒ„๋ฅผ ์ƒ์†์„ ๋ฐ› ์•„์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 4. Composition: ์ƒ์† ๊ด€๊ณ„๋กœ ์ธํ•ด ์ˆ˜ํผ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€ ๊ฒฝํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ์„ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ๊ณต
  • 5. Inheritance ์ƒ์†์€ ์ˆ˜ํผํด๋ž˜์Šค ๋‚ด์˜ ๋ฉค๋ฒ„๋ฅผ ์ƒ์†์„ ๋ฐ› ์•„์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 7. Self type์œผ๋กœ ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ self=>๋กœ๋งŒ ์ •์˜ํ•œ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ this ๋ณ„์นญ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. self => ์‚ฝ์ž…์€ this ํ‚ค์›Œ๋“œ ๋Œ€์‹  ๋‹ค๋ฅธ ์ด ๋ฆ„์ธ self๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ
  • 8. Self type์œผ๋กœ ๋ณ„์นญ ์‚ฌ์šฉํ•˜๊ธฐ self=>๋กœ๋งŒ ์ •์˜ํ•œ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ this ๋ณ„์นญ ์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
  • 9. Self-type annotations ํด๋ž˜์Šค ๋‚ด๋ถ€์— ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์ƒ์œ„ ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ์ด๋ฆ„์ด ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ํ‘œ์‹œํ•œ๋‹ค. ์ž์ฒด ์œ ํ˜•์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ
  • 11. Self type์œผ๋กœ trait๋‚˜ class ์ง€์ • self type ๋’ค์— ์‹ค์ œ ์ƒ์†ํ•  trait๋‚˜ class๋ฅผ ๋„ฃ ์–ด์„œ ์ƒ์†๊ณผ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹์œผ ๋กœ ์ง์ ‘ ํ™•์žฅ๋ณด๋‹ค ๊ฐ„์ ‘ ํ™•์ •์„ ํ•˜๋Š” ์„ ์–ธ์„ ์œ„ ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์ž๊ฐ€ ์œ ํ˜•์€ ํŠน์„ฑ์„ ์ง์ ‘ ํ™•์žฅํ•˜์ง€๋Š” ์•Š ๋”๋ผ๋„ ํŠน์„ฑ์„ ๋‹ค๋ฅธ ํŠน์„ฑ๊ณผ ํ˜ผํ•ฉํ•ด์•ผ ํ•œ ๋‹ค๊ณ  ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ •์˜๋œ ๊ฒƒ์„ ๋ช…๊ธฐ ์—†์ด ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ˜ผ๋ž€์€ ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ์†ํ‘œ์‹œ ์—†์ด ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.
  • 12. Where to use self-types? Self type์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์‹ค์ œ ํด๋ž˜์Šค์— ์‚ฌ ์šฉ๋˜๋Š” ์ˆœ์„œ
  • 13. ๋ช…์‹œ์  extends ์ฒ˜๋ฆฌ : class ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ extendsํ•œ trait๋ฅผ ๋งŒ๋“ค ๋ฉด ์‹ค์ œ ํด๋ž˜์Šค๊ฐ€ ๋ช…๊ธฐ์ ์œผ๋กœ trait์—์„œ ์‚ฌ์šฉ๊ฐ€ ๋Šฅํ•˜๊ณ  ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ญ ์ƒ trait๋ฅผ with ๋‹ค์Œ์— ์œ„์น˜ํ•œ๋‹ค. Class ์ •์˜ Trait ์— class ์ƒ์† ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ trait ์‚ฌ์šฉ
  • 14. Self type ์ •์˜ ํ•˜๋‚˜์˜ trait์„ ์ •์˜ํ•˜๊ณ  self type์œผ๋กœ ์ง€์ • ํ•ด์„œ ๊ทธ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์ถ”๊ฐ€ ์ ์œผ๋กœ ํ™•์žฅ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • 15. Self type ์ •์˜ ๋ฐ ์‹คํ–‰ 2๊ฐœ์˜ trait๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ๋‚ด์— self type์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์ •์˜๊ฐ€ ๋˜๊ณ  ์‹ค์ œ ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๋•Œ๋„ with ๋ฌธ์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
  • 17. Self Type Annotation ์ •์˜ ํ•˜๋‚˜์˜ trait์„ ์ด์šฉํ•ด์„œ self type annotation์„ ์ž‘์„ฑํ•˜๊ณ  class๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฉ” ์†Œ๋“œ ์ •์˜ํ•  ๋•Œ ์ปดํŒŒ ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • 18. Self Type Annotation ์‹คํ–‰ self type annotation์€ ๊ฐ„์ ‘์  ํ™•์žฅ์ด๋ฏ€๋กœ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ดใ……๋ฅผ ๋งŒ๋“ค๋•Œ with ๋ฌธ์„ ์‚ฌ์šฉ ํ•ด์„œ ๋ฐฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • 19. Self type์„ ์ด์šฉํ•œ object ์ฒ˜ ๋ฆฌ
  • 20. Trait๋ฅผ ์ง€์ •ํ•  ๋•Œ self type ์‚ฌ์šฉ ํ•˜๋‚˜์˜ ์ถ”์ƒ trait์„ self type์œผ๋กœ ์ง€์ •ํ•œ trait์ด ์žˆ๋‹ค.
  • 21. Object๋ฅผ ์ด์šฉํ•œ self type ํ™œ์šฉ Object๊ฐ€ ์‚ฌ์šฉํ•  Mix trait๋ฅผ ์ƒ์†ํ–ˆ๊ณ  User trait ์˜†์— ์‹ค์ œ ๊ตฌํ˜„๋œ ๋ธ”๋ก์„ ์ •์˜ํ•œ๋‹ค. ์‹ค์ œ foo ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ตฌํ˜„๋œ name์ด ์ฒ˜๋ฆฌ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 23. Self type ์ฒ˜๋ฆฌ ์ƒ์†ํ•˜์ง€ ์•Š๊ณ  ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ • ํ•ด์„œ ๊ทธ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ฒ˜๋ฆฌํ•˜๋ฉด ์‹ค์ œ ํด ๋ž˜์Šค์— ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.
  • 24. ์ƒ์†ํ•ด์„œ ์ฒ˜๋ฆฌ ์ƒ์†ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ „๋ถ€ ๊ตฌํ˜„ ํ•ด์•ผ ํ•˜์ง€๋งŒ self type์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž๋™์œผ ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์ž‡๋‹ค.
  • 25. ๋ณต์ˆ˜ ๊ฐœ Self type ์ฒ˜๋ฆฌ
  • 26. ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ self ํƒ€์ž… ์ฒ˜๋ฆฌ self type์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ •์˜ํ•˜๋ ค๋ฉด with๋ฌธ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • 28. ๊ตฌ์กฐ์  ํƒ€์ž…์˜ ์ด์  ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์€ ํŠน์„ฑ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํด๋ž˜์Šค ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ฒฐํ•ฉ์„ ์ค„์ด๊ณ  ์žฌ์‚ฌ์šฉ ์„ ๋Š˜๋ฆฌ๋ ค๋Š” ๊ฒฝ์šฐ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์  ํƒ€์ดํ•‘ ๋Œ€์‹  trait์˜ ์ด์ ์€ ํด๋ž˜์Šค ์˜ ์—ญํ• ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • 29. ๊ตฌ์กฐ์  ํƒ€์ž… ์ง€์ • ํ•จ์ˆ˜ ๋‚ด์˜ ์ธ์ž๋กœ ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„ ์ž„์˜์˜ ๊ตฌ์กฐ์  ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค. ์‹ค์ œ ํด๋ž˜์Šค์˜ ์ธ์Šค ํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋œ๋‹ค.
  • 30. ๊ตฌ์กฐ์  ํƒ€์ž…์„ ํƒ€์ž… ๋ณ„์นญ ์ง€์ • ๊ตฌ์กฐ์  ํƒ€์ž…์„ ํƒ€์ž… ๋ณ„์นญ์œผ๋กœ ์ง€์ •ํ•ด์„œ ํ•จ ์ˆ˜์— ์„ ์–ธํ•˜๋ฉด ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋” ๋ช…ํ™• ํ•ด ๋ณด์ธ๋‹ค.
  • 31. ๊ตฌ์กฐ์  ํƒ€์ž…์„ self type ์ง€์ • ์‹ค์ œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ง์ ‘ ์ •์˜ํ•ด์„œ ๊ตฌ์กฐ์  ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด์„œ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ตฌ์กฐ์  ํƒ€์ž…์˜ ๋ฉ”์†Œ๋“œ ๋Š” ์ถ”์ƒ ํƒ€์ž…์œผ๋กœ ์ง€์ • ํ•œ๋‹ค.
  • 32. ๊ตฌ์กฐ์  ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ ๊ฐ๊ฐ์˜ trait์— ์ •์˜ํ•˜๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ • ์˜ํ•˜๊ณ  ์ด๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ with ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉ ํ•ด์„œ ๋‹ค์ค‘์ƒ์†์„ ์ฒ˜๋ฆฌ
  • 33. Object์— self type ์‚ฌ์šฉํ•˜๊ธฐ
  • 34. Object/Class์— self type 1 Object ๋‚ด์— self type์„ ์ง€์ •ํ•˜๋ฉด ์‹ค์ œ self ๊ฐ€ ์ธ์‹๋˜์ง€ ์•Š๋Š”๋‹ค.
  • 35. Object/Class์— self type 2 ํด๋ž˜์Šค ๋‚ด์˜ with ๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‚ด๋ถ€ ๋ฉ”์†Œ๋“œ ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.