Web/Spring

객체지향이란?

Spring 공부를 오늘 시작했다!

Spring은 '객체지향'을 극한으로 사용하기 위해 도와주는 프레임 워크이다.

( 현재 Spring 배운지 하루차 이기 때문에 내가 모르는 스프링의 기능과 의미가 있을 것 같다. 계속 공부하며 정리해야 겠다. )

그래서 인지 Spring에서 객체지향의 개념이 계속 나와 객체지향 프로그래밍에 대해 확실히 짚고 넘어갈 필요가 있어 포스팅 하게 되었다.

꼬리에 꼬리를 무는 질문을 대답하는 형태로 작성하여서 객체지향이 헷갈리시는 분들도 고민을 따라가며 읽으면 도움이 될 것 같다.





객체지향 프로그래밍


객체지향 프로그래밍은 프로그램을 각각의 독립된 객체들이 데이터를 주고받고, 처리할 수 있게 프로그래밍 하는 것이다.

객체들이 데이터를 주고받고 한다는 것은 대충 이해가 되는데 여기서 그러면 '객체'가 정확히 무엇이지? 라는 의문이 들었다.

 

객체


객체하나의 기능을 수행하는 변수와 메소드의 모음 이다.

 

그러면 함수와 객체의 차이점은 무엇인가?!
절차지향에서도 함수를 이용하면 하나의 기능을 수행할 수 있게 할 수 있는데?!?

 

함수와 객체의 차이점


가장 큰 함수와 객체의 차이점은

  • 함수는 서로간에 연관이 없다!
  • 객체는 서로 연관이 있는 것들끼리 묶을 수 있다!  

 

간단하게 자동차의 바퀴로 예를 들면,  

함수로 바퀴를 구현하고 나면 달랑 바퀴함수 하나만 존재하기 때문에

  • 이 바퀴가 자동차의 바퀴인지, 비행기의 바퀴인지, 자전거의 바퀴인지 모른다.
  • 만약 자동차의 바퀴라고 친다고 해도 자전거의 바퀴를 구현하려면 '바퀴'라는 이름이 겹치게 된다! 
    ( 학교에서 C언어 과제를 할때도 불편했었다ㅠㅠ )  

 

그런데 객체를 자동차와 관련된 클래스로 묶고나면  

  • 의미상으로도 구별하기 쉽고,
  • 자동차클래스에서 바퀴메소드를 구현할 수 있고, 자전거 클래스에서 바퀴메소드를 구현할 수 있다.

 

정리


그래서 객체지향프로그래밍에 대해 풀어서 의미를 다시 적어보면,

'서로 연관이 있는 것들끼리 묶은 변수와 메소드의 모음끼리 데이터를 주고받고 처리할 수 있게 프로그래밍 하는 것'이다.

 

 

다음 포스팅


그럼 다음에는 이 객체 지향 프로그래밍이 왜 나왔나요? 어떻게 해야 좋은 객체지향 프로그래밍인가요? 에 대한 포스팅을 할 예정이다.