티스토리 뷰
어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
OOP란?
- 객체지향 프로그래밍(Object Oriented Programming)의 약자. 클래스에서 주로 사용되는 개념이다.
- 기존의 절차 지향에서 벗어나 프로그램을 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미한다.
- OOP는 코드의 재사용하고 최대한 간결하게 표현하여 코드의 변경과 반복를 최소화하고, 유지보수를 하는 데 유리하다는 장점이 있다.
- OOP는 추상화, 상속, 다형성, 캡슐화라는 4가지 특징을 보유하고 있다
1.캡슐화
- 캡슐화는 클래스 안에 서로 연관있는 속성과 기능들을 객체안에 담아서 하나의 캡슐로 만드는 것을 의미한다.
- 캡슐화는 외부로부터 클래스에 정의된 속성과 기능들을 접근을 방지하는 데이터 보호를 위해 사용한다.
- 또한 은닉화를 통해 내부 데이터나 내부 구현이 숨기고 외부에는 필요한 부분만 노출하게 하는 것도 사용 이유이다.
- 데이터 보호와 은닉화로 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 하는 것이 주요 목적이다.
2.추상화
- 함수나 클래스의 복잡한 내부 구현을 숨기고, 실제로 노출되는 외부은 단순하게 만들어서 사용한다는 개념.
- 노출된 외부 부분을 인터페이스라고 하며, 사용자가 내부 동작 원리는 몰라도 인터페이스만 알면 사용가능하게 만드는 역할을 수행
- 클래스에서는 정의시 메서드와 속성만 정의한 것을 인터페이스라 부른다
- 이런 추상화는 내부 기능들의 노출를 최소화하여 예기치 못한 사용상의 변화를 방지한다.
- 코드나 데이터의 은닉과 보호가 목적인 캡슐화와의 차이점으로는 추상화는 내부를 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰있다.
상속
- 부모 클래스의 함수나 속성을 자식 클래스가 물려받는 것을 의미한다.
- 주로 공통된 속성과 함수를 가진 기본 클래스를 정의하고, 세부사항이 다른 자식 클래스가 부모의 속성과 함수를 사용하게 함으로써 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근
다형성
- 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미한다.
- 같은 함수를 사용하지만 결과값이 다를 때, 사용한다.
- 대표적인 예가 오버라이딩으로, 부모 클래스에서 물려받은 함수를 자식에게 적합한 형태로 변형시키는 것이다.
- 부모에게서 물려받는 점에서는 상속과 비슷하지만, 상속은 자식들의 공통된 속성과 함수를 물려주는 것이고 다형성은 공통된 함수에서 자식만의 특징을 표현하는 것이라는 차이점을 알 수 있다.
'컴퓨터 공학 및 알고리즘' 카테고리의 다른 글
네트워크 (0) | 2023.05.01 |
---|---|
재업) 스코프와 클로저 (0) | 2023.04.24 |
UI/UX (1) | 2023.04.13 |
재귀 (0) | 2023.04.11 |
CLI 명령어 (1) | 2023.02.24 |
댓글