Keep Going

[Java] 객체 지향 프로그래밍 본문

Study/JAVA

[Java] 객체 지향 프로그래밍

seon 2019. 8. 19.
반응형

[what is 객체 지향 프로그래밍?]

- 객체지향프로그래밍(Object Oriented Programming)

- 상태(state), 행위(behave)로 이루어진 객체로 만드는 것!

- 변수, 메소드를 그룹핑한것!

- 이 객체들을 조합해서 프로그램을 만드는거야. 

 

점점 사이트의 규모가 커지면서 글목록, 본문, 댓글의 로직들을 다 따로 분류해서 레고 조각(객체.껍데기)(which has 변수, 메소드)으로 만들어. 그룹핑하는거지.

--> 자연스럽게 '객체지향' 개념,문법이 등장하게 된거지.

--> 네이버에서 사용한 댓글 레고조각이 페이스북에 사용하는 댓글 레고조각이 될 수 있어(재활용성)

 

[설계와 추상화]

지하철 노선도가 '디자인'의 추상화라고 한다면 프로그램을 만드는 것은 '소프트웨어'의 추상화라고 할 수 있다.

즉! 좀 더 프로그래밍을 통해 현실을 잘 반영하기 위해 '객체지향프로그래밍'이 등장한거야.

 

[부품화]

객체가 다른 곳에서 사용할 수 있는 '재활용성'은 객체를 '부품'으로 만드는 것부터 시작한다. 부품으로 잘 만들어야 재활용하기 좋은 로직이 되는거야.

 

ex) 노트북은 키보드, 모니터, 마우스, 본체 라는 부품으로 나눌 수 있어. 부품으로 나누게 되면 문제가 발생했을 때 부분적으로 고쳐서 다시 사용할 수 있어. 

 

어떻게 부품화 시킬것인가? 어떻게 설계할 것인가? 가장 적합하게!(가장 어렵지..)

 

객체지향은 부품화의 정점!!

메소드도 부품화의 예시야. 메소드를 사용하는 기본 취지는 연관되어 있는 로직들을 결합해서 메소드라는 완제품을 만드는 것이야. 그리고 이 메소드들을 부품으로 해서 하나의 완제품인 독립된 프로그램을 만드는거지. 

근데, 프로그램이 커지면서 메소드가 엄~청 많아지고, 메소드와 변수를 관리하는게 어려워..... 

 

So, the new thing is came. 객체 지향 프로그램!~!

핵심은 : 연관된 메소드와 그 메소드가 사용하는 변수들을 분류하고 그룹핑하는 것.

ex) 파일과 디렉토리가 있을 때 메소드나 변수가 파일이면 이것들을 그룹핑하는게 디렉토리(객체)지!

 

[은닉화, 캡슐화]

부품을 생각해봐. 모니터를 새로 샀을 때 그걸 사용하기 위해 본체랑 선만 연결하자나. 사실 모니터가 작동되는데는 수많은 기능들이 탑재되어 있는데 우리는 상세히 알 필요도 없고, 알 방법도 없지. 즉! 부품화를 아주 잘 시킨거지~!~!

 

[인터페이스]

: 부품들 간의 약속. HDMI케이블을 어떤 규격으로 만들건지는 약속 되어 있는 것 처럼.

반응형

'Study > JAVA' 카테고리의 다른 글

[Java] 클래스 멤버와 인스턴스 멤버  (0) 2019.08.23
[Java] 클래스와 인스턴스 그리고 객체  (0) 2019.08.19
입력과 출력  (0) 2019.08.19
메소드  (0) 2019.08.14
배열  (0) 2019.08.14