java - 메서드

imjingu·2023년 8월 9일
0

개발공부

목록 보기
341/481

메서드
객체네에 있는 함수, 자바는 개체로만 이루어져 있어서 공식적으로 함수는 없음
메서드는 어떤 입력을 받아 특정 연산을 수행한 뒤 결과를 반환하는 기능

메서드의 용어 정리
메서드 정의 : 메서드를 새로 만드는 것을 의미
인수 : 메서드에 전달할 입력(input)을 의미. argument
매개변수 : 인수를 받아서 저장하는 변수를 의미. parameter
반환값 : 메서드의 출력(output)을 의미. return
메서드 호출 : 메서드를 실제로 사용하는 것을 의미

접근 제어자를 별도로 설정하지 않는다면 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 되어 해당 패키지 내에서만 접근이 가능

메서드는 왜 필요한가?

메서드 사용의 장점
코드 반복을 줄일 수 있음, 대부분의 프로그램은 어떤 코드를 반복해서 사용
반복되는 코드를 방치하면 유지보수하는 사람은 반복되는 코드로 불편을 느끼게 되고
코드가 반복되면 기억하기에 불편을 느끼게 됨
또 코드를 개선하거나 유지보수할 때 여러 부분을 수정해야 하는 문제가 발생
Don't repeat yourself (DRY, 반복하지 마라) 원칙을 지키는 대표적인 방법이 바로 '메서드를 활용하라는 것'

더 높은 추상화를 할 수 있다
내가 만들거나 남이 만든 프로그램을 읽을 경우 내부에 있는 코드를 하나하나 읽을 경우 프로그램을 빨리 제대로 파악하기 어려움
메서드를 활용하면 세부 코드를 하나하나 신경 쓰지 않아도 '메서드 이름' 만으로 해당 부분의 기능을 파악할 수 있음

package chapter20230809;
import java.util.*;
public class test01 {
	static Scanner sc = new Scanner(System.in); // 밖에서도 Scanner를 사용하기 위해 밖으로 빼면서 앞에 static을 붙여줌
	// 메인문 밖에다 작성 해야함
	// javascript에서는 function 을 적어줬는데 java는 반환형이 있기 때문에 리턴되는 타입을 적어줌 int 리턴타입이 없으면 void
	
	static int getMax(int a, int b, int c) { // a b c 의 최대값을 반환, 신장 체중 나이 를 각각 넣어서 최대값을 반환
		int max = a;
		if (b > max) max = b;
		if (c > max) max = c;
		return max;
	}
	
	static void inputData(int[] height, int[] weight, int[] age) {
		for (int i = 0; i < 3; i++) {
			System.out.print("[" + (i + 1) + "]");
			System.out.print("신장 : ");    height[i] = sc.nextInt();
			System.out.print("    체중: "); weight[i] = sc.nextInt();
			System.out.print("    나이: "); age[i] = sc.nextInt();
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* 
		 
		  */
		/*
		 
		 */
		
		//3명의 신장, 체중, 나이의 최대값을 구해서 표시
		
		
		int[] height = new int[3]; // 신장
		int[] weight = new int[3]; // 체중
		int[] age = new int[3];    // 나이
		
		
		
//		for (int i = 0; i < 3; i++) { // 입력
//			System.out.print("[" + (i + 1) + "]");
//			System.out.print("신장 : ");
//			height[i] = sc.nextInt();
//			System.out.print("    체중: ");
//			weight[i] = sc.nextInt();
//			System.out.print("    나이: ");
//			age[i] = sc.nextInt();
//		}
		
		// 코드의 반복을 줄이기위해 메서드 사용
		inputData(height, weight, age); 
		
//		// 신장의 최대값을 구한다
//		int maxHeight = height[0];
//		if (height[1] > maxHeight) maxHeight = height[1];
//		if (height[2] > maxHeight) maxHeight = height[2];
//		
//		// 체중의 최대값을 구한다
//		int maxWeight = weight[0];
//		if (weight[1] > maxWeight) maxWeight = weight[1];
//		if (weight[2] > maxWeight) maxWeight = weight[2];
//		
//		// 나이의 최대값을 구한다
//		int maxAge = age[0];
//		if (age[1] > maxAge) maxAge = age[1];
//		if (age[2] > maxAge) maxAge = age[2];
		
		// 코드의 반복을 줄이기 위해 메서드 사용
		int maxHeight = getMax(height[0], height[1], height[2]); // 신장의 최대값
		int maxWeight = getMax(weight[0], weight[1], weight[2]); // 체중의 최대값
		int maxAge = getMax(age[0], age[1], age[2]); // 나이의 최대값
		
		System.out.println("신장의 최대값은 " + maxHeight + " 입니다.");
		System.out.println("체중의 최대값은 " + maxWeight + " 입니다.");
		System.out.println("나이의 최대값은 " + maxAge + " 입니다.");
	}

}

0개의 댓글