관리 메뉴

자바(JAVA) 절차지향 객체지향 본문

Java/Java 기본 개념

자바(JAVA) 절차지향 객체지향

ª_ª 2016. 11. 22. 09:30
728x90
반응형

절차지향이란?

절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 


예를 들어서 1부터 10까지의 합을 구하는 프로그램을 만든다고 했을때,

int sum = 0;

for(int i=0; i<=10; i++)

{

sum += i;

}

이렇게 위에서 부터 차례대로 내려오면서 프로그램이 실행됩니다.


절차지향 방식을 이용하던 많은 개발자들은 몇 가지 비효율적인 면을 느끼게 되었습니다.

첫째, 기존의 1부터 10까지의 합을 구하는 것을 10부터 100까지로 변경하게 되면 동일한 작업이지만 다시 코드를 수정해야 됩니다.

int sum = 0;

for(int i=10; i<=100; i++)

{

sum += i;

}


둘째, 기존의 로직을 다시 사용하게 될 때, 다시 코딩을 하는 방법과 기존 코드를 복사해서 재사용 하는 방식이 있으나, 두가지 방법 모두 비효율적 입니다.


셋째,  만약 두번째 방식으로 코딩을 하면, 동일한 로직의 코드가 문서 내에 넘쳐나, 코드의 양이 너무 길어 지게 되어서 추후에 유지보수가 어렵습니다.


그래서 등장한 방식이 메소드입니다. 로직만 만들어 놓고, 그때 그때 데이터를 주면 메소드가 알아서 결과값을 반환하는 방식 입니다.

위의 로직을 메소드로 수정하게 되면 아래와 같이 변경할 수 있습니다.

public int sum(int i, int j)

{

int sum = 0;

for( int k=i; k<=j; k++)

{

sum += k;

}

return sum;

}


객체지향이란?

메소드를 이용한 방식으로 인해 많은 개발자들은 로직의 재사용을 효율적으로 사용하게 되었습니다. 하지만, 메소드를 이용한 방식에도 한계가 있었습니다. 데이터가 증가 하고, 메소드가 많아짐에 따라 코드의 양이 증가 하고, 유지보수가 어려워 지기 시작 했습니다. 그래서, 등장한 방식이 객체지향 프로그래밍 입니다.


객체(Object)란 비슷한(동일한) 특징이 있는 데이터와 메소드를 한곳에 모아두고 필요한 곳에서 언제든지 이용(사용)할 수 있게 만들어 놓은 집합체 입니다.  예를 들어서, 핸드폰, 자동차, 밥통 등등 세상에 존재하는 모든 부분을 객체라고 생각할 수 있고 이런 객체를 이용한 프로그래밍 방식이 객체지향 방식 입니다.


객체의 개념

객체는 같은 종류의 데이터와 로직이 함께 있는 집합체 입니다. 그리고 현실세계와 비교해 보면 세상의 모든 것이 객체 입니다예를 들어 핸드폰이라는 객체가 있습니다. 핸드폰에는 통화라는 메소드와 메시지라는 메소드와 인터넷이라는 메소드와 등등 여러가지 메소드가 존재합니다. 핸드폰을 사용하는 사람은 전화아이콘을 눌러 전화를 하고 메시지 아이콘을 눌러 메시지를 전송하고 인터넷 아이콘을 눌러 인터넷을 사용합니다. 이처럼 객체는 메소드를 닮았지만 그 상위개념이라고 할 수 있습니다. 즉 완전한 독립체라고 할 수 있습니다객체는 클래스로부터 생산(복사본)됩니다.


예를 들어 핸드폰이 공장에서 생산되는데, 이때 색상이 정해지지 않은 핸드폰을 만들어 놓고, 소비자의 요구에 따라서 색상을 칠하게 되면, 색을 칠하기 전의 핸드폰이 클래스이며, 소비자의 요구에 따라서 색을 칠해서 완전한 핸드폰(객체)이 만들어 집니다


객체지향의 장점

- 신뢰성 있는 소프트웨어를 쉽게 작성할 수 있다.

- 코드를 재사용하기 쉬어 집니다.

- 업그레이드가 쉬어 집니다.

- 디버깅이 쉬어 집니다.

- 유지보수가 좋아 집니다.

728x90
반응형

'Java > Java 기본 개념' 카테고리의 다른 글

자바(JAVA) static 키워드  (0) 2016.12.08
자바(JAVA) 클래스  (0) 2016.11.23
자바(JAVA) 메소드(Method)  (0) 2016.11.14
자바(JAVA) 랜덤(Random)값 사용 하기  (0) 2016.11.09
자바(JAVA) 배열  (0) 2016.11.07
Comments