캡슐화 2

[ Spring ] 00. OOP(객체지향 프로그래밍)

스프링 프레임워크에 대해 알아보기 전에 먼저, 객체지향에 대해서 먼저 살펴볼 것이다. OOP Object-Oriented Programming 객체지향 패러다임이 나오기 이전의 패러다임들부터 간단하게 살펴보자. 패러다임의 발전 과정을 보면 점점 개발자들이 편하게 개발할 수 있도록 개선되고 있다는 것을 알 수 있다. 가장 먼저, 순차적, 비 구조적 프로그래밍이 있다. 말 그대로 순차적으로 코딩하는 것이다. 필요한 게 있으면 계속 순서대로 추가해가며 구현하는 방식이다. 직관적이야 하겠지만 점점 규모가 커지면 어떻게 될까? 이러한 순차적, 비 구조적 프로그래밍에서는 goto문을 활용한다. 만약 이전에 작성했던 코드가 다시 필요하면 그 곳으로 이동하기 위한 것이다. 규모가 커지면 커질수록 goto문을 무분별하게..

[ C++ ] 12. 캡슐화

캡슐화 (Encapusulation) 왜 멤버 변수를 비공개(private)로 할까? 이전 포스트 public과 private 접근 지정자에서 멤버 변수는 일반적으로 private로 설정한다고 했다. 왜 이렇게 설정하는지 현실 세계에서 비유를 들어보자. TV에는 TV를 끄고 켜기 위한 리모컨이 있다. 이 리모컨에는 버튼과 휠 등의 TV를 조작할 수 있는 인터페이스(interface)를 제공하지만, 리모컨의 내부가 어떻게 구현되어 있는지는 숨겨져 있다. 리모컨의 버튼을 누르면 리모컨 내부에서 어떻게 동작해서 TV를 조작하는지 알 필요가 없다. 인터페이스와 구현의 분리는 이렇게 리모컨의 작동 방식을 이해하지 않아도 리모컨을 사용할 수 있으므로 효과적이다. 비슷한 이유로, 프로그래밍에서도 구현과 인터페이스의 ..