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

Coastby·2022년 7월 29일
0

JAVA

목록 보기
9/33

👉프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다.

객체 지향의 가장 큰 특징
⭐️재활용성⭐️

문법과 설계

  • 문법 : 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 익히는 것이다. 이 문법을 이해하고, 숙지해야 객체를 만들 수 있다. 객체를 만드는 법에 대한 학습.
  • 설계 : 좋은 객체를 만드는 법이다. 좋은 현실을 현실을 반영한다. 프로그램을 만든다는 것은 소프트웨어의 추상화라고 할 수 있다. 객체 지향 프로그래밍은 좀 더 현실을 반영하기 위한 노력의 산물이다. 고도의 추상화 능력이 필요하다.
  • 언어가 지원하는 객체지향 문법을 배우고, 이것들이 어떻게 동작하는 지 충분히 이해한 다음에 비로소 설계 원칙도 이야기할 수 있고, 객체와 사물의 비유도 시도해 볼 수 있을 것이다.

부품화 (분류, categorizing)

프로그래밍은 실체가 없고, 무한하고, 유연한다. 이러한 특성은 정신이 가진 장점이면서 소프트웨어의 극치이다. 이러한 문제점을 극복하기 위한 노력 중의 하나가 부품화라고 할 수 있다. 객체 지향과 부품화를 동일 시 할 수는 없지만 부품화라고 하는 소프트웨어의 큰 흐름은 객체 지향이 만들어지는데 지대한 공헌을 했다고 할 수 있다.

기능들을 부품화 시킨 덕분에 모니터가 고장나면 모니터만 교체하면 된다. 또한 문제가 생겼을 때 그 문제가 어디에서 발생한 것인지 파악하고 해결하기가 훨씬 쉬워진다.

모니터와 키보드 본체를 분리하는 기준은? 그 기준을 세우는 것이 추상화일 것이다. 기준에 정답은 없지만 적절함이 중요하다. 모니터, 키보드, 본체라는 개별 적인 완제품을 부품으로 조립하면 컴퓨터라는 하나의 완제품이 만들어진다.

객체 지향은 부품화의 정점이라고 할 수 있다. 메소드는 부품화의 예라고 할 수 있다.

메소들들을 부품으로 해서 하나의 완제품인 독립된 프로그램을 만드는 것이다. 메소드를 사용하면 코드의 양을 극적으로 줄일 수 있고, 메소드 별로 기능이 분류되어 있기 때문에 필요한 코드를 찾기도 쉽고 문제의 진단도 빨라진다.

그런데 프로그램이 커지면 엄청나게 많은 메소드들이 생겨난다. 메소드와 변수를 관리하는 것은 점점 어려운 일이 되기 시작한다. 인간이 다루기 힘들 정도로 프로그램이 거대하고 복잡해진다.

은닉화, 캡슐화

제대로 된 부품이라면 그것이 어떻게 만들어졌는지 모르는 사람도 그 부품을 사용하는 방법만 알면 쓸 수 있어야 한다.

은닉화, 캡슐화 : 내부의 동작 방법 (메소드)을 단단한 케이스 (객체) 안으로 숨기고 사용자에게는 그 부품의 사용방법만을 노출하고 있는 것이다.

인터페이스

잘 만들어진 부품이라면 부품과 부품을 서로 교환할 수 있어야 한다. 모니터를 바꿔 낄 수 있는 것은 모니터와 컴퓨터를 연결하는 케이블의 규격이 표준화 되어 있기 때문에 가능한 일이다.

각각의 부품은 미리 정해진 약속에 따라서 신호를 입, 출력하고, 연결점 모양을 표준에 맞게 만들면된다. 이러한 연결점을 인터페이스라고 한다. 또한 인터페이스란 이질적인 것들이 결합하는 것을 막아주는 역할도 한다.

profile
훈이야 화이팅

0개의 댓글