[OOP] 객체 지향 프로그래밍
OOP(object-oriented-programming)란?
OOP, 객체 지향 프로그래밍은, 소프트웨어 설계 및 개발에서 객체(Object)를 중심으로 프로그래밍하는 패러다임
이는 데이터와 그 데이터를 처리하는 메서드를 하나로 묶어, 코드의 재사용성과 유지보수성을 높임
- 객체(Object)란 클래스의 인스턴스이며, 속성과 메서드로 구성
- 현실세계의 물체와 개념을 옮겨 놓은 것
- ex) 자동차(객체)는 색상, 모델, 속도(속성)를 가지고 주행, 정지(행동)를 할 수 있음
OOP의 특징
OOP는 캡슐화, 상속, 추상화, 다형성이라는 특징을 가짐
캡슐화 (Encapsulation)
캡슐화란 데이터와 메서드를 하나의 단위로 묶어 외부에서 접근을 제한함으로써 객체 내부를 보호하는 개념
- ex) 은행계좌로 예를 들면, 이 객체는 잔액이라는 데이터와 입금 및 출금이라는 메서드를 가집니다.
캡슐화해서 외부에서 직접 잔액을 수정할 수 없도록 하고, 입금이나 출금 메서드를 통해서만 잔액을 변경할 수 있게 합니다.
의도한 방식으로만 데이터에 접근할 수 있도록 하여, 잘못된 접근으로부터 데이터를 안전하게 지킬 수 있음
상속 (Inheritance)
상속은 기존 클래스의 속성과 메서드를 물려받아 코드의 중복을 제거하고 재사용성을 증대시키는 기능
- ex) 동물이라는 클래스는 나이,종류라는 속성과 먹다, 자다라는 메서드를 가지고 있습니다.
그리고 이 클래스를 물려받아 강아지, 고양이라는 하위 클래스를 만들어 각자의 특성을 추가할 수 있습니다.
중복된 코드를 줄이고, 공통된 기능을 쉽게 재사용 가능
추상화 (Abstraction)
추상화란 불필요한 세부 정보를 생략하고 객체의 공통된 속성과 행동을 모아 상위 개념으로 정의하는 것을 의미
- ex) 자동차, 오토바이, 버스등 탈것이 있습니다.
이 탈것들은 이동수단이라는 공통된 속성과 이동하기, 정지하기등의 기능을 가지고 있습니다.
추상화를 통해 차량이라는 상위개념을 정의할 수 있습니다.
코드가 더욱 간결해지고 관리하기 쉬워짐
다형성 (Polymorphism)
다형성은 동일한 인터페이스를 통해 다양한 객체가 서로 다른 방식으로 동작할 수 있는 것을 의미
- ex) 동물이라는 클래스에서 움직이다라는 메서드가 있을 때, 상속받은 동물들은 각각 다른방식의 움직임을 출력할 수 있습니다.
- 강아지가 네발로 달립니다.
- 독수리가 하늘을 납니다.
- 돌고래가 수영을 합니다.
동일한 메서드나 함수 명을 사용하더라도, 클래스마다 메서드가 다르게 동작하는 것이 핵심
OOP의 장점
- 코드의 재사용성이 높아짐
- 유지보수가 쉬워짐
- 코드가 간결해짐
OOP의 단점
- 처리 속도가 비교적 느림
- 메모리 사용량이 많음
- 프로그램 설계에 많은 시간 듦