코딩이란 무엇일까

[Java/자바] 객체지향 프로그래밍이란(Object-Oriednted Programming)? 본문

Java

[Java/자바] 객체지향 프로그래밍이란(Object-Oriednted Programming)?

둥구는 지굴다 2022. 9. 28. 16:24

안녕하세요 오늘은 객체지향 프로그래밍에 대해 알아보려 합니다.

객체지향 프로그래밍이란?

저희가 프로그래밍을 하면서 객체지향, 절차 지향 굉장히 많이 들어봤을 단어들입니다.

객체지향 프로그래밍을 알기 전에 우선 객체의 개념을 알아야 합니다.

객체(Object)란?

객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것을 말합니다.

이렇게 말하니까 조금 어렵죠?

쉽게 생각해서 물리적으로 존재하는 객체는 자동차, 물통, 고양이, 강아지가 있고

추상적으로는 주문, 복지, 강의 등이 객체가 될 수 있습니다.

객체는 속성과 동작으로 구성되어 있습니다.

자동차를 예로 들자면 속성은 속도, 색상, 배기량 이 있을 수 있고

동작은 달린다, 멈춘다, 와같은 동적이 있을 수 있겠네요.

자 이제 본론으로 돌아와 객체라는 개념을 알았으니 그럼 이제 진짜 객체지향 프로그래밍이란 무엇을 의미할까요?

객체지향 프로그래밍

객체지향 프로그래밍이란 프로그램에 필요한 객체를 개발자가 파악하고

각각의 객체에 역할이 무엇인지를 정의해줍니다. 그리고 객체들 간에 상호작용을 통해 프로그램을 만드는 것을 의미합니다. 객체는 클래스라는 틀, 설계도를 통해 생겨난 실체입니다. 

절차 지향 프로그래밍

절차지향 프로그래밍은 포르그램을 기능 중심으로 바라봅니다.

명령을 절차대로 실행합니다. 

반면 객체지향 프로그래밍은 큰 객체의 부분 부분의 기능을 나누어 가져와 실행할 수 있습니다.

객체지향 프로그래밍의 특징

  • 추상화 
    • 추상화는 공통적인 특징을 모아놓은 것입니다.
    • 예를 들어 택시, 버스, 자가용이 있다 생각해 봅시다. 이 객체의 특징은 핸들이 있다, 바퀴가 있다, 등과 같이 공통적인 특징이 있습니다. 이 공통적인 특징을 모아 <자동차>라는 클래스를 만들 수 있습니다. 이 과정을 추상화라고 할 수 있습니다.

  • 상속
    • 말 그대로 부모의 것을 자식이 받아오는 것입니다.
    • 자식 클래스는 부모 클래스에 있는 기능을 상속받아 사용할 수 있습니다.
    • 위에 추상화로 만들어놓은 자동차 클래스는 부모 클래스로 자식 클래스인 택시, 버스, 자가용이 기능을 가져올 수 있는 것을 말합니다.
  • 캡슐화
    • 캡슐화는 보안과 관련되어있습니다.
    • 캡슐화란 연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 접근하지 못하게 은닉합니다.
    • 이렇게 정보은닉을 하여 외부에서 내부의 정보에 접근할 수 없게 합니다.
  • 다형성
    • 다형성이란 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질입니다.
    • 예를 들어 자동차의 엔진을 사용하는 방법은 동일하지만 어떤 엔진을 사용하느냐에 따라 주행 성능이 달라집니다.

자 오늘은 이렇게 해서 객체지향 프로그래밍에 대해 살짝 알아보았는데요.

아무래도 저도 배우는 입장이다 보니 이런 개념적인 부분을 글로 설명하기에는 조금 어려운 부분이 있네요.

오늘은 그냥 객체지향 프로그래밍에 대해 살짝 발만담가 봤다라고 생각해 주시고

객체지향의 특징에 대해서는 아마 따로 포스팅을 할 것 같습니다.

혹시 설명에 미흡했던 부분이 있으면 댓글로 남겨주시면 감사하겠습니다.

이상으로 글 읽어주셔서 감사합니다!

Comments