객체 지향 프로그래밍(Object-oriented programming, OOP)이란?
- 객체 지향 프로그래밍(Object-oriented programming, OOP)은 프로퍼티와 메서드를 가진 객체를 만들고, 이렇게 만들어진 객체들 간의 상호작용을 통해 로직을 구현하는 프로그래밍 패러다임을 말합니다.
객체 지향 프로그래밍의 특징
- 객체 지향 프로그래밍은 크게 캡슐화, 상속성, 추상화, 다형성의 네 가지 특징을 가졌습니다.
캡슐화
- 동일한 목적으로 사용될 속성과 메서드를 하나의 객체로 묶음으로써 사용성, 관리적인 측면, 정보 은닉성에 대한 이점을 얻을 수 있습니다.
상속성
- 상위 클래스에 있는 프로퍼티와 메서드를 상속 받음으로써 상위 클래스의 코드를 재사용하며 클래스를 확장할 수 있다는 이점이 있습니다.
추상화
- 객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 선언하는 것을 의미합니다. 즉, 객체의 공통된 프로퍼티와 메서드를 선언하여 이를 상속받는 객체에서 정의함으로써 객체의 복잡성을 줄여 코드의 가독성을 높일 수 있습니다.
다형성
- 다형성은 공통된 인터페이스를 기반으로 오버로딩 및 오버라이딩을 통해 각기 다른 기능을 구현하는 것을 말합니다.
객체 지향 프로그래밍의 장.단점
장점
- 객체 단위로 모듈화하여 로직을 구현하기 때문에 재사용성이 높고 유지보수가 편리합니다.
- 각 객체를 독립적으로 개발하고 통합하기 때문에 대형 프로젝트의 개발이 쉬워집니다.
- 객체는 자신의 역할을 명확하게 정의하고 있기 때문에 객체의 역할을 파악하고 이용하기 쉽습니다.
- 하위 객체는 공통된 속성과 기능을 상속 받고, 자신만의 고유한 기능에만 집중할 수 있기 때문에 생산성이 높아집니다.
단점
- 객체들간의 상호작용을 기반으로하여 로직을 구현하기 때문에 설계가 어렵습니다.
- 로직에 필요한 객체를 생성하고 관리하고 가상 함수 테이블을 통한 함수 호출 방식에 의해서 절차 지향에 비해 상대적으로 성능이 낮습니다.
- 객체는 메모리 공간을 차지하므로, 객체를 많이 사용하는 경우에는 메모리 공간이 낭비될 수 있습니다.
'개발 상식' 카테고리의 다른 글
블로킹(Blocking) 넌블럭(Non-Blocking)) 그리고 동기(Synchronous) & 비동기(Asynchronous)의 특징과 차이점 (0) | 2023.03.05 |
---|---|
OAuth( Open Authorization )란? (0) | 2023.02.24 |
빅 엔디안( Big-Endian ) & 리틀 엔디안( Little-Endian ) (0) | 2023.01.27 |
정규 표현식( regular expression ) 간단한 사용법 (0) | 2023.01.06 |
URL 문법 (0) | 2022.12.26 |