Java(4) - 메소드와 객체지향

JeJune Lee·2021년 8월 9일
0

Java

목록 보기
4/18

솔직히 지금까지는 객체지향이라는 프로그래밍보다는 절차지향에 가까운 프로그래밍이였다. 그냥 순서대로 실행되는..! 하지만 Java의 진가는 객체지향에서 나온다. 객체지향을 알아보자~

메소드

절차지향 방식을 이용하면서 개발자들은 몇 가지 비효율적인 면을 느끼게 된다.

첫째, 기존의 1부터 10까지의 합을 구하는 것을 5부터 100까지로 변경하게 되면 동일한 작업이지만 다시 코드를 수정해야 된다.
둘째, 기존의 로직을 다시 사용하게 될 때, 다시 코딩을 하는 방법과, 기존 코드를 카피해서 재사용 하는 방식이 있으나, 두 방법 모두 비효율적이다.
셋째, 두번째 방식으로 코딩을 하면 동일한 로직의 코드가 문서 내에 넘쳐나, 코드의 양이 너무 길어 진다. 추후에 유지보수가 어렵다.

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

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

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

예를 들어 구구단 프로그램을 코딩한다 생각해보자. 2~9단 중 원하는 단을 짜고 싶다면 이중포문으로 짜게 될 것이다. 그럴 때 마다 단에 해당하는 i 곱하는 값에 해당하는 j를 수시로 입력해줘야 한다는 번거러움이 존재한다. 이것을 메소드로 나눠 코딩하면 이런 수고를 덜을 수 있다!! 코드를 통해 알아보자.

import java.util.Scanner;

public class GuGuDan {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		int input = scanner.nextInt();
		
		GuGuDan guGuDan = new GuGuDan();
		guGuDan.gugudan(input);
		
	}
	
	public void gugudan(int i) {
		// TODO Auto-generated method stub
		for(int j=1; j<10; j++){
			System.out.println(i + " * " + j + " = " + (i * j));
		}
		
	}

먼저 메소드를 선언하는 방법이다.

Class 메소드이름 = new Class();

gugudan이라는 메소드를 만들고 구구단을 출력하는 코드를 작성했다. 이를 이용하여 scanner로 입력 받은 값이 메소드 gugudan의 i로 전달되어 구구단이 출력되게 되는 것이다!!

객체지향

메소드를 이용하면 로직의 재사용이 가능하여 개발을 효율적으로 할 수 있다. 하지만, 메소드만 가지고는 많은 양의 로직을 처리하기에는 한계가 있다. 한 문서 내에 메소드의 수가 많아질 경우 추후 유지 보수에 많은 어려움이 발생된다!

그럼 객체지향이란? 객체의 개념부터 알아보자. 객체는 같은 종류의 데이터와 로직이 함께 있는 구성체이다. 그리고 현실세계와 비교해 보면 세상의 모든 것이 객체이다.예를 들어 자동차 라는 객체가 있다. 자동차에는 운전대라는 메소드와 브레이크, 기어라는 메소드가 있다. 그리고 색상, 배기량 등의 데이터가 있다. 자동차를 운전하는 사람은 운전대를 오른쪽, 왼쪽으로 돌려가며 운전하고, 브레이크를 밟아 정지하고, 기어를 작동하여 앞,뒤로 운전한다. 또한 색상과 배기량을 가지고 다른 자동차와 구분하기도 한다. 이처럼 객체는 메소드와 비슷하지만 그 상위개념이라고 할 수 있습니다. 즉 완전한 독립체라고 할 수 있다.

객체는 클래스로부터 생산(복사본)된다. 예를 들어 그랜저 자동차가 공장에서 생산된다. 이때 색상이 정해지지 않은 자동차를 만들어 놓고, 소비자의 요구에 따라서 색상을 칠한다. 즉 색을 칠하기 전의 자동차가 클래스이며, 소비자(개발자)의 요구에 따라서 색을 칠해서 완전한 자동차(객체)가 만들어 진다.

색상이 결정 되지 않은 자동차를 클래스라고 한다고 했다. 그리고 구매자가 색상을 결정하여 계약을 하면, 그때 클래스로 부터 객체가 생성 된다. 그리고 생성된 객체는 계약을 한 소비자의 것 이다. 또 다른 소비자가 다른 색상으로 계약을 하면 또 하나의 객체가 생성된다. 그림으로 살펴보면 쉽게 이해 될 수 있다.

객체는 클래스로 부터 생성된다. 그리고, 생성된 객체는 동일한 클래스에서 생성되었다 하더라고 이제는 완전한 독립체이다. 따라서 객체 안에 종속되어 있는 데이터는 완전히 별개의 데이터이다! 객체 변수 또한 배열과 비슷하게 메모리에 주소값이 저장되는 것이다.

오늘은 여기까지..

오늘은 메소드와 객체의 개념에대해 정리해보았다. 확실히 이제부터 Java스러워지기 시작했다. 이것이 객체지향이지! 라는 느낌이 팍 온다.

profile
Being Server developer

0개의 댓글