새소식

Computer science - 2023.03.16

[OOP] OOP(객체 지향 프로그래밍)의 개념과 특징 알아보기

  • -

OOP란?


필요데이터추상화하여 속성(Attributes)와 행위(methods)를 가진 객체를 만들고, 그 객체들 간유기적상호 작용을 통해 로직구성하는 프로그래밍 방법이다.

 

데이터를 중심으로 필요한 기능을 함수로 구현하는 방식의 절차 지향 프로그래밍과 달리, OOP에선 데이터와 함수들을 묶고 이를 객체로 관리한다.

 

객체라고 하면 뭔가 말이 어렵고 한데, 그냥 우리가 일반적으로 사용하는 언어 구조와 비슷하다고 생각하면 이해하기 쉽다.

위 그림을 예시로 들면 우선 데이터는 '돈', '잔돈', '제품'이다. 앞서 절차 지향에선 데이터(돈, 잔돈, 제품)를 행위와 별도로 생각한다고 했다. 그래서 절차 지향에선 데이터에 대한 모든 행위를 '~돈을 ~', '~잔돈을~', '~제품을~'의 식으로 표현한다. 

 

하지만 우리가 데이터를 통해 어떤 행동을 할 땐, 목적이 되는 대상이나 주체가 정해져 있는 경우가 많다. 실제로 우리는 보통 말할 때도 '고객이 돈을 ~' 또는 "자판기가 돈을~"과 같은 표현을 더 많이 사용하고, 익숙하다. 이 경우 행위와 데이터를 묶어 유기적으로 표현하는 객체 지향과 닮았다.

 

OOP의 4가지 특징


Encapsulation(캡슐화) → Tell, Don’t Ask.

객체속성 행위를 하나로 고, 구현 코드를 외부에 감춰 은닉 하는 것을 뜻한다.

다시 말하면 데이터와 처리 행위를 묶고, 외부에는 그 행위를 보여주지 않는 것이다.

 

캡슐화는 객체의 응집도독립성여 객체의 모듈화지향할 수 있게 도와준다.

모듈화는 모듈 단위의 코드 재 사용이 가능하기 때문에, 코드 유지 보수에도 도움을 준다.

 

 

Abstraction(추상화)

중요하고 필요정보 만표현하기 위해서, 객체의 공통적인 속성과 행위를 하나로 묶는 것을 의미한다.

Inheritance(상속)

상위 클래스에서 정의된 기능을 가져와 재 사용하거나, 새로운 기능을 추가해

코드중복이고 재 사용성늘릴 수 있는 방법을 의미한다.

 

Polymorphism(다형성)

객체상속을 통해 기능확장, 변경하여 여러 형태객체재구성 되는 것을 의미한다.

OverridingOverloading을 통해 다형성을 확보할 수 있다.

 

  • Overriding : 상위 클래스동일한 이름을 가진 함수가 있을 때, 하위 클래스에서 기능재 정의 하는 것을 의미한다.
  • Overloading : 하나클래스 안에 같은 이름을 가진 함수여러 개 만들 수 있게 해줍니다. 구분을 위해 함수인자들은 달라야 한다.

 

OOP의 장/단점


장점
  • 높은 코드 재 사용성 : 다형성이 있고, 캡슐화를 통해 모듈화가 가능하기 때문에 
  • 생산성 향상 : 캡슐화로 객체의 독립성이 높기 때문에
  • 자연적 모델링 가능 : 일상의 언어와 유사하다는 장점이 있기 때문에
  • 유지 보수 우수성 : 캡슐화로 객체의 독립성이 높고, 다형성이 있어 기능 변경이 용이함

 

단점
  • 개발 속도가 느림 : 모델링 과정에서 시간이 오래 걸리기 때문에
  • 절차 지향 비해, 실행 속도 느림 : 클래스를 확인 후, 실행되기 때문에
  • 객체 많아짐에 따라 용량이 커짐 : Instance의 증가로 인한 문제점

참고

 

객체지향(OOP)과 절차적 프로그래밍(PP)

오늘은 프로그래밍에서 중요한 개념 중 하나인 객체지향 프로그래밍(Object Oriented Programming)과 절차적 프로그래밍(Procedure Programming)에 대해 알아보고자 합니다. 대개 객체지향 프로그래밍 언어를

st-lab.tistory.com

 

객체지향 vs 절차지향??

  객체지향 프로그래밍을 소개하는 많은 강의 및 입문서에서는 보통 절차지향 프로그래밍 기...

blog.naver.com

  • 객체 지향과 절차 지향의 차이를 이해하는데 도움이 됐다.
 

캡슐화란 무엇인가? 어떤 이점이 있는가?

객체지향을 공부하면 처음부터 귀에 못이 박히도록 듣는 단어가 있다. 바로 캡슐화다. 캡슐화가 도대체 뭐고, 이게 왜 중요한 요소일까? 일단 위키를 보도록 하자 캡슐화(영어: encapsulation)는 객

bperhaps.tistory.com

  • 캡슐화를 이해하는데 도움이 됐다.
 

다형성에 대해서 설명해보세요.

Overriding? Overloading? | 다향성에 대해서 설명해보세요. 객체지향 프로그래밍의 특징 중 하나인 다형성(polymorphis)은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해 주고, 같은 클래스

brunch.co.kr

  • 다형성의 내용을 참고 했다.
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.