본문 바로가기
JAVA/Java 기초

15. 절차지향 , 객체지향

by zakarsu 2020. 3. 13.

절차지향

package com.zakarsu.proceEx;

public class ProceEx {
    public static void main(String[] args) {
        
        int sum = 0;
        int result = 0;
        
        for (int i = 0; i <= 10; i++) {
            sum = sum + i;
        }
        System.out.println("1부터 10까지의 정수의 합은 " + sum + "입니다");
        
        result = sum % 2;
        if(result == 0){
            System.out.println("짝수 입니다");
        } else {
            System.out.println("홀수 입니다");
        }
        
    }
}

// 지금까지 코딩 한 방식 위에서 부터 쭈욱 내려오면서 실행
절차 지향 방식을 이용하면서 개발자들은 몇 가지 비효율적인 면을 느끼게 됩니다.
첫째, 기존의 1부터 10까지의 합을 구하는 것을 5부터 100까지로 변경하게 되면 동일한 작업이지만 다시 코드를 수정해야 됩니다. 둘째, 기존의 로직을 다시 사용하게 될 때, 다시 코딩을 하는 방법과, 기존 코드를 카피해서 재사용 하는 방식이 있으나, 두 방법 모두 비효율적 입니다. 셋째, 두번째 방식으로 코딩을 하면 동일한 로직의 코드가 문서 내에 넘쳐나, 코드의 양이 너무 길어 집니다. 추후에 유지보수가 어렵습니다.

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

위의 코드를 수정 해보겠습니다.

public int sum(int iint j) {
        // TODO Auto-generated method stub
        
        int r = 0;
        
        for (int h = i; h <= j; h++) {
            r = r + h;
        }
        
        return r;
    }
    
    public String evenOdd(int sum) {
        // TODO Auto-generated method stub
        String r = new String();
        
        if((sum % 2) == 0){
            r = "짝수 입니다";
        } else {
            r = "홀수 입니다";
        }
        
        return r;
    }
    
}

객체지향

메소드를 이용한 방식으로 개발자들은 아주 많은 효율성을 느끼게 되어 있습니다. 하지만, 메소드를 이용한 방식에도 한계는 있었습니다. 데이터가 많아 지고, 메소드가 많아짐에 따라 코드의 양이 많이 지고, 유지보수가 어려워 지기 시작 했습니다. 하여, 등장한 방식이 객체지향 프로그래밍 입니다. 객체란 동일한 성질의 데이터와 메소드를 한곳에 모아두고 필요한 곳에서 언제든지 이용할 수 있게 만들어 놓은 덩어리 입니다. 쉽게 생각해서 세상에 존재하는 모든 것을 객체라고 생각할 수 있으며, 이러한 객체를 이용한 프로그래밍 방식이 객체지향 방식 입니다. 예) 자동차, 자전거, 주방장,프린터기, 자판기, 휴대폰 등등…..

int 자리에는 char boolean void를 사용 할수 있다
void를 사용하면 반환값을 안줘도된다 return을 안써도됨

public int sum(int i, int j) {

    int r = 0;

    for (int h = i; h <= j; h++) {
        r = r + h;
    }

    return r;
}



댓글