본문 바로가기

💻 개발 이야기/객체지향 OOP2

상속은 무엇인가? Disclaimer이 글에는 개인적인 경험과 생각이 포함되어 있습니다.  01 | 자연, 그리고 프로그래밍 언어에서의 상속상속이라는 단어를 들으면 보통 "부모가 가진 것을 자식에게 물려준다"는 이미지를 떠올리게 된다. 이처럼 상속(Inheritance)은 철학적 관점에서 세대 간의 '전이(傳移)'를 의미하기도 하고, 생물학적 관점에서 '종(種)'과 '속(屬)' 간 유전적 특성이 이어지는 모습과 유사하다는 평가를 받는다. 생물학에서 동물(Animal)이라는 넓은 범주 아래 포유류(Mammal)가 동물의 공통 특성을 물려받고, 여기서 다시 고양잇과(Felidae)가 더 구체적인 특성을 취하는 식의 점진적 구체화가 자연스럽게 일어나는 것처럼, 객체지향 프로그래밍에서도 상위 클래스(부모)가 가진 특성과 동작을 .. 2025. 1. 25.
계약에 의한 설계(Design by Contract)를 실전에 적용하기 퇴근길, 지하철을 타고 집으로 향하던 중 문득 이런 생각이 스쳤다.지하철은 나를 안전하게, 정해진 시간 안에, 내가 원하는 역까지 데려다줄 것이다.지하철 기관사는 성실하게 그 임무를 수행할 것이다.개찰구에 카드를 태그 하면 결제가 완료되고 문이 열릴 것이다.운행 시간이 지나면 지하철을 이용할 수 없을 것이다.이 모든 것은 사회 속에서 정해진 규칙 덕분에 자연스럽게 이루어지는 일들이다. 우리는 그 규칙들을 믿고 다양한 서비스를 사용하며, 그 규칙이 지켜질 것이라는 전제 아래 다른 사람들과 협력하고 살아간다. 소프트웨어 세계에서도 이런 규칙을 적용할 수 있다. 바로 “계약에 의한 설계(Design by Contract)“라는 프로그래밍 패러다임이 그렇다. 이번 글에서는 이 패러다임이 소프트웨어에서 어떻게 작.. 2024. 10. 13.