[Lisp] ํด๋์ค
๋๋๊ฒ๋ ๋ฆฌ์ต์ ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค.
์ข ํํ๊ฐ ๊ธฐ๊ดดํ๊ธด ํ๋ค๋ง
๋ฆฌ์ต์์ ํด๋์ค๋ defclass๋ผ๋ ํจ์๋ก ์ ์ํ ์ ์๋ค.
(defclass ํด๋์ค๋ช
(์ํผํด๋์ค๋ช
)
**ย ย ย (๋ฉค๋ฒ๋ค...)**
**ย ย ย (ํด๋์ค์ต์
...)**
)
๊ทธ๋ฆฌ๊ณ ํด๋์ค์ ๊ฐ์ฒด์์ฑ์ make-instance ํจ์๋ก ์ฒ๋ฆฌํ๋ค.

์ด์ํ๊ธดํ๋ฐ ์คํ์ ๋๋ค.
๊ทผ๋ฐ ๋ฌธ์ ๊ฐ ์๋ค.
x์ y๋ฅผ ๋ฉค๋ฒ๋ก ๋๊ธด ํ๋๋ฐ, ์ ๊ธฐ์ ์ ๊ทผํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ด๋ค...
์ ๊ทผํ๋ ค๋ฉด ๋ณ๋์ ์์ฑ์ ๋ถ์ฌ์ค์ผํ๋ค.
๊ทธ ์ค ํ๋๊ฐ :accessor๋ค.
๊ฐ ์์ฑ์ ์๊ดํธ๋ก ๋ค์ ๋ถ๋ฆฌํด์, :accessor์ ์ ๊ทผํจ์๋ช
์ ์ง์ ํด์ฃผ๋ฉด ์ง์ ํ ์ด๋ฆ์ผ๋ก ์ธ๋ถ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ค.

์ฐธ๊ณ ๋ก ์ฝ๋ก (:)์ ์ ์์ฑ ์์ ๋ฑ ๋ถ์ด์์ด์ผ ํ๋ค.
๋ฉ์๋์ ์ ์๋ defmethod ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
(defmethod ๋ฉ์๋๋ช
((object ํด๋์ค๋ช
))
**ย ย ย (๋ฐํ์)**
)
์ถ๋ ฅ๋ง ํ๋ ๊ฐ๋จํ ๋ฉ์๋ print-point๋ฅผ ์ ์ํ ์ฝ๋๋ค.


์ด์ ๊ป ์์ผ๋ก ๋ฉค๋ฒ๋ฅผ ์ด๊ธฐํํ์ง๋ง, ์ด๊ธฐํํ์ง ์์์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์๊ฒ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ ์ ์๋ค.
์์ฑ์ initform์ด๋ค.


initarg๋ก ์์ฑ์ ํธ์ถ๋ ์ด๋ฆ์ ๋ฑ๋กํ๋ฉด, make-instance๋ก ์์ฑํ ๋ ์ธ์๋ฅผ ๋๊ฒจ ์ด๊ธฐํ๋ฅผ ์ํฌ ์๋ ์๋ค.
์ด๋ฆ์ ์ฝ๋ก ์ผ๋ก ์์ํด์ผํ๋ค.


์์๋ฐ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. x, y์ ๋ํด z๊น์ง ๊ฐ๋ ํด๋์ค Point3๋ฅผ ํ์ฅํด๋ณธ๋ค.

Point3๋ผ๋ ๋ณ๊ฐ์ ํด๋์ค๊ฐ ๋์ง๋ง ์ฌ์ ํ Point์ ๋ฉ์๋๋ ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ฐธ๊ณ
https://www.tutorialspoint.com/lisp/lisp_clos.htm
http://www.gigamonkeys.com/book/object-reorientation-classes.html