객체 지향 프로그래밍에 대해 정리해보려한다.
학원이나 객체 지향 프로그래밍에 대해 접할때는 이론적으로 추상화, 캡슐화, 다형성, 상속등의 특징들을 가지고 공부를 하였다.
이러한 특징들은 머리속에 둥글게 존재하고 있지만, 막 나에게 와닿지는 않았다.
그래서 다시 정리해 보려한다.
객체 지향 프로그래밍(Object-Oriented Programming)
객체 지향 프로그래밍은 현실 세계에 존재하는 모든 사물이나 객체(Object)를 코드로 표현하기 위해 객체의 기능이나 개념을 추출해 추상화하여 모델링하는 프로그래밍을 말한다. 우리가 현실 세계에서 보는 사물들을 인지하는 방식을 프로그래밍에 접목하려는 사상을 의미한다.
예를 들면 주변에 존재하는 사물 자동차, 옷, 건물 등 모든 것을 객체라고 할 수 있다.
이러한 객체들의 상태(state)와 행위(behave)로 이루어진 객체라는 기본단위로 나누고, 이러한 객체의 상호작용을 통해 프로그램을 설계하고 개발한다.
객체 지향 프로그래밍의 특징
1. 클래스와 인스턴스
2. 추상화
3. 상속
4. 다형성
5. 캡슐화
1. 클래스와 인스턴스
- 클래스 : 어떠한 문제를 해결하기 위해 추상화를 거친후 속성과 행위에 대한 것을 변수나 메서드로 정의한 것
- 인스턴스 : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것 실제 사용되는 데이터이다.
2. 추상화
추상화는 어떠한 객체에 대한 공통된 속성을 묶는 것이라고 정의할 수 있다.
예를 들면 갤럭시와 아이폰이 있으면 두가지의 공통적인 특징 휴대폰이다 등으로 같은 특징을 묶어 하나 이름으로 붙이는 것 이다.
3. 상속
상속은 부모 클래스의 속성과 기능을 이어받아서 사용할 수 있도록 하고, 변경시 상속받은 자식클래스의 해당 기능만 다시 수정하여 사용할 수 있게 하는 것이다.
코드의 불필요한 수정작업을 줄이고 재 사용성을 높이기 위해 사용한다.
4. 다형성
하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 코드는 같은 모양이지만 각각 다른 행위를 할 수 있다.
- 오버라이딩 : 상위 클래스에서 사용되고 있는 속성을 하위클래스로 상속하여 사용하는 것 (재정의 하여 사용)
메서드(함수)의 이름이 같고, 매개 변수가 같고, 리턴타입이 같다.
- 오버로딩 : 같은 이름의 메서드(함수)를 여러개 정의한 뒤 매개 변수의 타입과 유형을 다르게하여 좀더 다양한 유형에 따라 사용하는 것
5. 캡슐화
접근제어자 public, private 등을 사용하여 객체가 외부에 노출되지 말아야할 정보 또는 기능을 은닉하고, 제어 권한이 있는 객체만 접근 가능하도록 만듬
객체 지향 프로그래밍의 장단점
장점
- 코드 재사용성의 용이 (상속을 이용하여 확장해서 사용이 가능하다.)
- 유지 보수가 쉬워짐 (객체 지향 프로그래밍에서는 메서드나 내부 변수로 존재하기 때문에 해당 부분만 수정하면 됨)
- 대형 프로젝트에 적합하다.
단점
- 처리 속도가 상대적으로 느리다.
- 설계시 많은 시간과 노력이 필요하다. (객체 지향 프로그래밍을 지켜서 사용하려면 많은 구체적인 생각들이 필요하다.)
참고 자료
- https://poiemaweb.com/js-object-oriented-programming
'개발 > 개발지식' 카테고리의 다른 글
[Javascript] 웹 화면 캡쳐하기 (Javascript, Html2Canvas) (0) | 2022.12.28 |
---|---|
[Next.js] Vercel로 배포한 환경에 .env 환경 변수 등록하기 (0) | 2022.12.22 |
[React] React 반응형 레이아웃 사용하기 + Typescript (0) | 2022.12.09 |
[Jenkins] GitLab webhook 등록 시, Hook executed successfully but returned HTTP 403 Error 및 webhook 등록 방법 (0) | 2022.11.23 |
Jenkins와 CI/CD (0) | 2022.11.23 |
댓글