본문 바로가기

개발이야기/C#2

[C#]추상클래스(abstract), 인터페이스(interface)는 어떻게 다르게 쓰일까 추상클래스(abstract), 인터페이스(interface)와 그 차이점에 대해 얘기해보고 왜 그러한 차이점이 생기도록 디자인되었나를 써보겠습니다. 차이점에 대해 알더라도 왜 그러한 차이가 있는지를 생각해보고 알맞게 사용해야 정말 그걸 안다고 말할 수 있다고 생각합니다. 우선 OOP에서 의미하는 ‘추상’은 뭘까요 ? 어떠한 클래스를 정의할 때 공통된 기능을 추출하는걸 ‘추상화시킨다’라고 합니다. 예를 들어 게임에서 여러 종류의 몬스터가 존재한다고 가정해봅시다. A몬스터는 근접에서 칼로 공격하고, B몬스터는 원거리에서 활로 공격하고, C몬스터는 마법 공격을 합니다. 이때 몬스터 클래스를 설계한다면 이 몬스터 클래스의 공격 기능을 추상화시켜야 합니다. 모든 몬스터는 공격이라는 공통된 기능이 있지만 그 공격의.. 2022. 10. 7.
[C#]IDisposable, Finalize, using 이 무엇인가? 그리고 왜 사용하는가? IDisposable, Finalize, using 이 무엇인가? 그리고 왜 사용하는가? C#의 가비지 컬렉터는 사용이 끝난 메모리를 자동적으로 해지시켜준다. 하지만 가바지 컬렉터가 인식하지 못하는 메모리의 종류가 있다. 관리되지 않는 리소스라고 칭하는데 파일스트림 객체나, 창 핸들, 디비 커넥션과 같은 객체들이다. 이러한 객체들을 해지 시켜주기 위해서 Finalize, IDisposable, using 과 같은 기능들이 있는데 하나씩 설명해보겠다. Finalize Finalize는 소멸자와 비슷한 개념이라고 생각하면 된다. 클래스에서 소멸자를 만들면 이는 Finalize를 오버라이딩한거와 같다. 그래서 관리되지 않는 리소스들을 소멸자에서 해지시켜주는 것 또한 하나의 방법이다. 하지만 이는 몇가지 문제점.. 2022. 10. 1.