OPP(객체 지향 언어)
OPP란?
프로그래밍의 개념과 구조를 '객체(Object)' 중심으로 구성하는 프로그래밍 언어이다.
객체, **데이터와 그 데이터를 처리하는 기능(메서드)**를 하나로 묶은 단위
캡슐화 (Encapsulation)
- 정의
데이터(변수)와 메서드(기능)를 하나의 클래스로 묶고, 외부에서 내부 데이터에 직접 접근하지 못하게 막는 것. 보호된 인터페이스를 제공함. - 왜 "캡슐"인가?
객체의 내부(데이터)는 보호되고, 꺼내거나 변경하는 방법은 **인터페이스(메서드)**를 통해 통제된다. - 객체 내부를 보호하는 방법
변수 이름 앞에 밑줄 두 개(__)를 붙이면, 해당 변수는 클래스 외부에서 직접 접근할 수 없게 된다.
추상화 (Abstraction)
- 정의
추상화란 복잡한 시스템에서 핵심적인 부분만 추려내어 보옂는 것이다. 사용자는 복잡한 내부 구조를 몰라도, 필요한 기능만 사용할 수 있도록 만든다. - 왜 "추상화"인가?
복잡한 내용을 모두 드러내지 않고, 핵심적인 기능만 노출 시켜 사용성을 높인다.
마치 지도를 통해 복잡한 실제 도시를 단순하게 요약해 보여주듯이, 프로그램의 내부 복잡성을 감춘다.
상속 (Inheritance)
- 정의
기존 클래스(부모 클래스)의 속성과 메서드를 새로운 클래스가 물려받는 기능. 코드 재사용성과 유지보수성 향상 - 왜 "상속"인가?
부모가 가진 재산이나 특성을 자식에게 넘겨주는 현실의 상속 개념과 유사하다.
기존 코드를 재사용하고, 새로운 기능만 추가하면 되므로 유지보수에도 효과적이다.
다형성 (Polymorphism)
- 정의
같은 이름의 메서드가 객체에 따라 다르게 동작하는 것. 즉, 하나의 인터페이스로 여러 구현을 할 수 있다. - 왜 "다형성"인가?
"형태가 다양하다"는 뜻으로, 동일한 명령이나 함수 호출이 다양한 방식으로 실행될 수 있는 성질을 말한다.