kmmom591
@kmmom5916278
Students
437
Reviews
38
Course Rating
4.7
์๋
ํ์ธ์.
์ ๋ ๋ฐฉ์์ฐ์
์ฒด์์ SW ๊ฐ๋ฐ์๋ก ๊ทผ๋ฌดํ๋ฉฐ ๋ฐฉ์ฐ ์ฐ๊ตฌ์์ผ๋ก ์ผํ๊ณ ์๋ ๊ฐ๋ฐ์์
๋๋ค.
๋ํ์์๋ ์ปดํจํฐ๊ณตํ์ ์ ๊ณตํ๊ณ ,
๋ฐฉ์์ฐ์
์ฒด์ ์
์ฌํด ์ค์ ๋ฐฉ์ฐ SW ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํด ์์ต๋๋ค.
ํ์ฌ๋ ๋ฌด๊ธฐ์ฒด๊ณ ๋ฐ ๋ฐฉ์ฐ ์์คํ
๊ณผ ์ฐ๊ณ๋ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ฉฐ,
C++, Java ๊ธฐ๋ฐ์ ์์คํ
๊ฐ๋ฐ์ ์ํํ๊ณ ์์ต๋๋ค.
Courses
Reviews
- [AI Survival Guide] How to survive without competing with AI
- The Essence of Object-Orientation in 30 Minutes
- [AI Survival Guide] How to survive without competing with AI
- The Essence of Object-Orientation in 30 Minutes
- [AI Survival Guide] How to survive without competing with AI
Posts
Q&A
๋คํ์ฑ ๊ฐ๋ ๋ฌธ์
์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค!๋คํ์ฑ์ ์ค๋ฒ๋ก๋ฉ/์ค๋ฒ๋ผ์ด๋ฉ์ผ๋ก๋ง ์ค๋ช ํ๋ ๊ฒ์ ์ฌ์ค ๋คํ์ฑ์ ์ผ๋ถ๋ง ๋ค๋ฃจ๋ ๊ฒ์ ๋๋ค. Cardelli & Wegner(1985)์ ๋ถ๋ฅ์ ๋ฐ๋ฅด๋ฉด ์ค๋ฒ๋ก๋ฉ์ ์์์ ๋คํ์ฑ(ad-hoc polymorphism) ์ ํ ์ข ๋ฅ์ด๊ณ , ๊ฐ์ฒด์งํฅ ์ค๊ณ์์ ํต์ฌ์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ์ ์๋ธํ์ ๋คํ์ฑ(inclusion polymorphism) ์ ๋๋ค."๋ถ๋ชจ ํ์ ์ผ๋ก ๋ค๋ฃฌ๋ค = ๊ตฌํ์ด ์๋ ์ถ์์ ์์กดํ๋ค"๋ GoF์ "Program to an interface, not an implementation" ์์น๊ณผ ๋์ผํ ๋งฅ๋ฝ์ผ๋ก, ์ฝ๋๊ฐ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๊ฐ ์๋๋ผ ์ธํฐํ์ด์ค/์ถ์ ํ์ ์๋ง ์์กดํ๋ฉด ์๋ก์ด ๊ตฌํ์ฒด๋ฅผ ์ถ๊ฐํด๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด OCP๊ฐ ๋คํ์ฑ/์ถ์ํ์ ์ฐ๊ฒฐ๋๋ ์ด์ ์ ๋๋ค. 1. ๋คํ์ฑ(Polymorphism)์ ์ ์ โ ์ค๋ฒ๋ก๋ฉ/์ค๋ฒ๋ผ์ด๋ฉ์ ๋์ด์Luca Cardelli & Peter Wegner (1985), "On Understanding Types, Data Abstraction, and Polymorphism" (ACM Computing Surveys, Vol. 17, No. 4)์ด ๋ ผ๋ฌธ์ ๋คํ์ฑ์ ๋ค์ ๋ค ๊ฐ์ง๋ก ๋ถ๋ฅํ ๊ฐ์ฅ ๊ถ์ ์๋ ์์ ์ ๋๋ค:Parametric polymorphism (์ ๋ค๋ฆญ)Inclusion polymorphism (์๋ธํ์ ๋คํ์ฑ โ ์์/์ธํฐํ์ด์ค)Overloading (์์ ๋คํ์ฑ)Coercion (๊ฐ์ ๋ณํ)์ค๋ฒ๋ก๋ฉ์ ๋คํ์ฑ์ ํ ์ข ๋ฅ์ผ ๋ฟ์ด๋ฉฐ, ๊ฐ์ฒด์งํฅ์์ ํต์ฌ์ผ๋ก ๋ค๋ฃจ๋ ๋คํ์ฑ์ Inclusion polymorphism(์๋ธํ์ ๋คํ์ฑ) ์ ๋๋ค. 2. "๋ถ๋ชจ ํ์ ์ผ๋ก ๋ค๋ฃฌ๋ค" = "๊ตฌํ์ด ์๋ ์ถ์์ ์์กด" โ ์ด๊ฒ ๋ฌด์จ ๋ป์ธ๊ฐ?Barbara Liskov (1987), "Data Abstraction and Hierarchy" (SIGPLAN Notices)๋ฆฌ์ค์ฝํ ์นํ ์์น(LSP)์ ์์ ์ผ๋ก, ํต์ฌ ๊ฐ๋ ์ ์ด๊ฒ์ ๋๋ค:"If S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of that program."์ฆ, ์ฝ๋๊ฐ ๊ตฌ์ฒด์ ์ธ ์์ ํด๋์ค(๊ตฌํ)๋ฅผ ๋ชฐ๋ผ๋ ๋ถ๋ชจ ํ์ (์ถ์)๋ง ์๋ฉด ๋์ํด์ผ ํ๋ค๋ ๊ฒ์ด๊ณ , ์ด๊ฒ์ด "๊ตฌํ์ด ์๋ ์ถ์์ ์์กด"์ ์๋ฏธ. 3. OCP์ ๋คํ์ฑ/์ถ์ํ์ ๊ด๊ณRobert C. Martin (1996), "The Open-Closed Principle" (C++ Report)"A module should be open for extension but closed for modification."Martin์ ์ด ์์น์ ๋ฌ์ฑํ๋ ํต์ฌ ์๋จ์ผ๋ก ์ถ์ํ(abstraction) + ๋คํ์ฑ(polymorphism) ์ ๋ช ์ํฉ๋๋ค. ์๋ก์ด ๊ตฌํ์ฒด๋ฅผ ์ถ๊ฐํ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์์๋ ๋๋ ์ด์ ๊ฐ ๋ฐ๋ก ๋ถ๋ชจ ํ์ (์ธํฐํ์ด์ค/์ถ์ํด๋์ค)์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋๋ค.GoF (Gang of Four), "Design Patterns" (1994) โ Erich Gamma ์ธ"Program to an interface, not an implementation."์ ๋ฌธ์ฅ์ด "์ถ์์ ์์กด"์ ์ ๋ช ํ ํํ. 4. DIP(์์กด์ฑ ์ญ์ ์์น)์์ ์ฐ๊ฒฐRobert C. Martin, "Agile Software Development" (2002)"High-level modules should not depend on low-level modules. Both should depend on abstractions.""๊ตฌํ์ด ์๋ ์ถ์์ ์์กด"๊ณผ ์ ํํ ๊ฐ์ ๋งฅ๋ฝ. ์ฐธ๊ณ ์๋ฃ:Cardelli & Wegner (1985) โ "On Understanding Types, Data Abstraction, and Polymorphism"Barbara Liskov (1987) โ "Data Abstraction and Hierarchy"Robert C. Martin (1996) โ "The Open-Closed Principle"GoF (1994) โ "Design Patterns: Elements of Reusable Object-Oriented Software"
- 1
- 3
- 29
Q&A
์๋ ํ์ธ์. ์์ ์๋ฃ ๋งํฌ ์ ๊ณต์ ์ด๋์ธ๊ฐ์?
https://gitlab.com/kmmom591-group/uml-basics์๊ธฐ URL์ผ๋ก ์ ์ํ์๋ฉด, ์์ ์งํ์ ์ฌ์ฉํ ์๋ฃ ๋ฐ ์ค์ต ์๋ฃ ํ์ธ ๊ฐ๋ฅํ์ญ๋๋ค.๊ฐ์ฌํฉ๋๋ค :)
- 0
- 1
- 45
Q&A
์ง๋ก๊ฐ ํฐ ๊ณ ๋ฏผ์ ๋๋ค...
์๋ ํ์ธ์ :) ์๋ฐยท๋ฐฑ์๋ ํฌํธํด๋ฆฌ์ค, ๋ฐฉ์ฐ์์ ๋ถ๋ฆฌํ ๊น?๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ๋ง์ด๋์ค๋ ์๋๋๋ค.๋ค๋ง ์ง๋ฌด์ ๋ฐ๋ผ ํ์ด ๋ค๋ฅผ ๋ฟ์ด์์.๋ฐฉ์ฐ ๊ธฐ์ ์์๋ ํฌ๊ฒ ๋ณด๋ฉด์๋ฒ ๋๋/์ ์ด SW (C/C++)์์คํ ยทํ๋ซํผ SW์ํยท์๋ฎฌ๋ ์ดํฐยท๋๊ตฌ ๊ฐ๋ฐ๋ด๋ถ ์๋ฒยท๋ฐ์ดํฐ ์ฒ๋ฆฌ์ด๋ ๊ฒ ๋๋ฉ๋๋ค.์๋ฐ ๋ฐฑ์๋ ๊ฒฝํ์ ํ์์ ์์ญ์์ ์ถฉ๋ถํ ์๋ฏธ๊ฐ ์๊ณ ,โSW๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ์ค๊ณํ๊ณ , ๋ฌธ์ ๋ฅผ ๋๊น์ง ํด๊ฒฐํด๋ณธ ๊ฒฝํโ์ ์ด๋ค ์ง๋ฌด์์๋ ๊ณตํต์ผ๋ก ๋ด ๋๋ค. ๊ทธ๋ผ C/C++์ ๊ผญ ์๋ก ํ์ผ ํ ๊น?์ง๊ธ๊น์ง ํ ๋ฐฑ์๋๋ฅผ ๋ฒ๋ฆด ํ์๋ ์ ํ ์์ต๋๋ค.๋์ โ์ฃผ๋ ฅ์ ์๋ฐ ๋ฐฑ์๋,๋ฐฉ์ฐ์ ๊ณ ๋ คํด C/C++๊ณผ Linux๋ฅผ ์ดํดํ๋ ์์ค๊น์ง๋ ๊ฐ์ ธ๊ฐ์.โ์ถ์ฒ์C/C++๋ก ์์ ํ๋ก์ ํธ 1~2๊ฐ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ๋น๋ยท์คํ ๊ฒฝํ๋คํธ์ํฌ, ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ค ๊ฐ๋ ์ดํด์ด ์ ๋๋ง ์์ด๋ ๋ฉด์ ์์๋โ์ฃผ ์ธ์ด๋ ์๋ฐ์ง๋ง, ๋ฐฉ์ฐ ํ๊ฒฝ์ ๊ณ ๋ คํด C/C++ ๊ธฐ๋ฐ ์์คํ ๋ ํ์ตํ์ต๋๋ค.โ๋ผ๊ณ ์ถฉ๋ถํ ์ค๋๋ ฅ ์๊ฒ ์ค๋ช ํ ์ ์์ต๋๋ค. 3ํ๋ ์ง๊ธ ์์ ์์์ ๋ฐฉํฅ ์ ์์ง๊ธ ํ๋ ์๋ฐ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ ๊ณ์ ์์ฑ๋, ๊ตฌ์กฐ, ์ค๋ช ๋ ฅ์ ๋์ด์ธ์๋์์C/C++ + Linux๋ ๊น์ด๋ณด๋ค โ๊ฒฝํโ ์์ฃผ๋ฐฉ์ฐ SW๊ฐ ๋์๊ฐ๋ ํ๊ฒฝ์ ์ดํดํ๋ ๋ฐ ์ด์ 4ํ๋ ๋ ๋ฐฉ์ฐ / ๋๊ธฐ์ / ๊ธ์ต๊ถ ๋์์ ์ง์ ๊ฐ๋ฅํ ํฌํธํด๋ฆฌ์ค ์์ฑ ๋ฌผ๋ก ์ ๊ฐ ์ ์ํ ๋ฐฉํฅ์ด๋ ์กฐ์ธ์ด 100ํ๋ก ๋ง๋ค๋ ๋ณด์ฅ์ ์์ง๋ง, ๋ฏธ์ฝํ๊ฒ๋๋ง ๋์์ด ๋์๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 85





![Thumbnail image of the [AI Survival Guide] How to survive without competing with AI](https://cdn.inflearn.com/public/files/courses/340653/cover/ai/1/fdd3be47-1f8d-4850-8a81-c266158dfe84.png?w=148)
