Records rather than Memories

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

Software/JAVA

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

Downer 2019. 10. 18. 23:48

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

 

객체 지향 프로그래밍이란 무엇일까?

- 로직을 상태와 행위로 이루어진 객체로 만드는 것

- 즉 하나의 덩어리가 아니라 객체를 마치 레고 블럭처럼 조립해서 하나의 프로그램을 이루는 것

 

처음에는 코드 양이 많지 않기 때문에 if문, 반복문 절차적 언어로만 가능하지만

많은 사람이 참여하고 복잡해질 수록 절차적 언어만으로는 프로그램을 만드는 것이 불가능에 가까워진다.따라서 그룹핑을 통해 중복되는 코드를 줄여야할 필요성이 생겼고 그러한 목적성으로 객체 지향 프로그래밍이 나온 것이다.

 

 

* 객체 지향 프로그래밍은 객체를 만드는 것이고 하나의 객체 안에는 그 객체가 가지고 있는 목적에 따라 연관되어 있는 변수와 메소드를 묶어두고 연관성 없는 객체과 분리하는 것이다.

 

 

 

문법

1. 언어가 제공하는 기능을 익히는 것.

if문, for문 처럼 문법적인 구성을 가지고 있다.

 

 

설계

2. 객체지향을 이용해서 현실을 담아내는

SW를 만들어 내는 것

(생각을 통해 설계해야 하기때문에 어렵다)

 

 

현실의 지하철을 길 그대로 만들면 한눈에 보기 어렵다.

따라서 모든 정보를 나타내지  필요한 정보만 추상화해 지하철 노선도를 만든다.

즉, 지식보다는 지혜의 영역이기에 스스로 경험하고 자기화시켜야한다.

 

 

부품화

 

예전 컴퓨터는 본체와 모니터, 키보드가 하나로 되어있다.

따라서 하나가 고장나면 모두 바꿔야 하는데

이러한 모습이 절차적 언어로만 구성된 프로그램이라 할 수 있다.

 

 

그런데 모니터, 본체, 컴퓨터를 부품화 시키면

각각을 원하는 대로 교체할 수 있고 문제가 생겨도 해결하기 쉽다.

이러한 모습이 객체 지향 프로그래밍이라고 할 수 있다.

 

 

* 그런데 최신 데스크탑경우 같이 부품화의 매력이 반감되어 다시 하나로 모이게 되었다.

즉, 무조건적인 객체지향이 좋은 것이 아니라

시대에 따라 적절히 부품화, 추상화하는 설계가 어려운 것이다.

 

 

 

- 우리가 배운 메소드가 부품화의 예로 볼 수 있다.

- 그런데 프로그램이 커지면 메소드 자체도 엄청나게 많아지고 메소드와 변수를 관리하기 어려워진다.

- 연관된 메소드와 그 메소드가 사용하는 변수들을 분류하고 그룹핑한다.

 

 

 

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

 

1. 은닉화, 캡슐화

- 제대로된 부품이라면 사용하는 방법만 알면 쓸 수 있어야 한다.

- 즉 내부 동작방법을 케이스 안에 숨기고 사용자에게는 부품의 사용방법

(객체가 가지고 있는 메소드 사용방법)만을 노출한다.

- 이러한 특징을 은닉화(Information Hiding), 캡슐화(Encapsulation)라고 한다.

 

 

2. 인터페이스

- 앞서 말한 것처럼 부품과 부품은 서로 교환 할 수 있어야한다.

비유를 들자면 컴퓨터 모니터를 다른 모니터로 교체 할 수 있는데 모니터의 연결점인 HDMI는 특유의 생김새가 있어 부품간의 약속이 된다.

그 이유는 케이블의 규격이 표준화 되어있기 때문이다.

- 각각의 부품은 미리 정해진 약속에 따라 신호를 입,출력하고 연결점의 모양을 표준에 맞게 만든다.

이런 연결점을 인터페이스(Interface)라고 한다.

 

 

 

 

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

클래스 멤버와 인스턴스 멤버  (0) 2019.10.19
class와 instance  (0) 2019.10.19
compile  (0) 2019.10.18
입력과 출력  (0) 2019.10.17
Method  (0) 2019.10.16
Comments