2023-12-14 (6일차) - void, return (method)

민짱·2024년 1월 7일
post-thumbnail

📅2023. 12. 14 6일차


🎨 Java


static int(int a, int b) {

		System.out.println(a + b);

		return 10;

static --> 선언부
int --> return type
합 --> 이름
(int a, int b) --> 매개변수
system... --> 구현부 (method body)
return --> return statement
10; --> retrun value
  • return type, return value

return type

  • return type은 메서드가 실행한 후 메서드를 호출한 곳에 반환하는 값의 데이터 타입을 말한다.
  • 메서드의 반환값이 없는 경우에는 void를 작성해줘여한다.
  • 반환값이 있는 메서드를 호출 시에는 해당 반환유형에 맞는 변수에 반환값 저장 필수
  • 메서드가 실행의 결과값을 반환할 때는 return이라는 키워드를 사용한다.
유형매개변수반환 값
유형1매개변수 있고 = 전달인자(O)반환 값 있다. = 반환 값(O)
유형2매개변수 있고 = 전달인자(O)반환 값 없다. = 반환 값(X)
유형3매개변수 없고 = 전달인자(X)반환 값 있다. = 반환 값(O)
유형4매개변수 없고 = 전달인자(X)반환 값 없다. = 반환 값(O)

public class Test {
	public int sum(int a, int b) {
    	return a+b;
    }
    
    public static void main(String[] args) {
    	int a = 3;
        int b = 4;
        
        Test myTest = new Test();
        int c = myTest.sum(a, b);
        
        System.out.println(c);
    }
}
  • sum메소드는 입력값으로 두개의 값(int 자료형 a, b)을 받아 리턴 값은 두 개의 입력 값을 더한 값(int 자료형)이다.

  • 여기서 return은 메소드의 결과 값을 돌려주는 명령어이다.

  • sum 메소드에 3, 4 입력값을 전달하여 7을 리턴받는다.


missing return statement

class GetMax{
  public static void main(String[] args){
    int a = 5;
    int b = 3;
    int result = max(a,b);
    System.out.println(result);
  }
 
  static int max(int a, int b){
    if(a > b){
      return a;
    }
  }
}
  • a 의 값인 5가 나올것으로 기대하고 컴파일을 해보면 아래와 같이 missing return statement 오류가 난다.

  • 문제는 b가 클 경우에 return 문이 선언 되어있지 않음에 있다.

  • a 가 b 보다 크니 a가 큰 경우만 return문을 작성하고 결과값이 나오도록 기대하였지만,
    java 컴파일러는 모든 경우수를 고려해야한다.
    그러므로 모든 경우에 대한 return 값을 가지도록 해야한다.

객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란 ?

  • 컴퓨터 프로그램을 어떤 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 명령어들의 목록으로 보는 시각에서 벗어나 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미한다.

객체 지향 프로그래밍의 장점

  • 객체 지향적 설계를 통해서 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 점이다.
  • 코드의 변경을 최소화하고 유지보수를 하는 데 유리하다.
  • 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.

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

  • 추상화
  • 상속
  • 다형성
  • 캡슐화

1. 추상화(Abstration)

  • 객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 의미한다.

2. 상속(Inheritance)

  • 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미한다.

3. 다형성

  • 다형성(多形性)이란 한자 이름 그대로 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미한다.

4. 캡슐화(Encapsulation)

  • 캡슐화란 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말한다.

📋 문제 풀이

  • 문제 : 매개변수를 사용해서 문제를 풀어주세요.
class Main {
	public static void main(String[] args) {
		계산기.더한결과를_화면에_출력(10, 20);
		// 출력 => 결과 : 30
		계산기.더한결과를_화면에_출력(50, 20);
		// 출력 => 결과 : 70

		계산기.뺀결과를_화면에_출력(50, 20);
		// 출력 => 결과 : 30

		계산기.뺀결과를_화면에_출력(5, 2);
		// 출력 => 결과 : 3

		계산기.곱한결과를_화면에_출력(5, 2);
		// 출력 => 결과 : 10
	}
}

class 계산기 {

	static void 더한결과를_화면에_출력(int a, int b) {
		System.out.printf("결과 : %d\n", a + b);
	}

	static void 뺀결과를_화면에_출력(int a, int b) {
		System.out.printf("결과 : %d\n", a - b);
	}

	static void 곱한결과를_화면에_출력(int a, int b) {
		System.out.printf("결과 : %d\n", a * b);
	}
}
  • 문제 : 함수를 실행하면 값을 돌려주도록 만들어주세요.
class Main {
  public static void main(String[] args) {
    int 결과;
    
    결과 = 계산기.(10, 20);
    System.out.println("결과 : " + 결과);
    // 출력 => 결과 : 30

    결과 = 계산기.(30, 20);
    System.out.println("결과 : " + 결과);
    // 출력 => 결과 : 50

    결과 = 계산기.(30, 70);
    System.out.println("결과 : " + 결과);
    // 출력 => 결과 : 100

    결과 = 계산기.(30, 70);
    System.out.println("결과 : " + 결과);
    // 출력 => 결과 : -40

    결과 = 계산기.(3, 7);
    System.out.println("결과 : " + 결과);
    // 출력 => 결과 : 21
  }
}

class 계산기 {

	static int(int a, int b) {
		return a + b;
	}

	static int(int a, int b) {
		return a - b;
	}

	static int(int a, int b) {

		return a * b;
	}
}
  • 문제 : 아래와 같이 출력 되도록 해주세요.
class Main {
	public static void main(String[] args) {
		// 예시 시작
		int c = 20 + Math.더하기(10, 20);
		System.out.println(c);
		// 예시 끝

		int 결과1 = Math.one_To_n_Sum(3);
		System.out.println("결과1 : " + 결과1);
		// 출력 : 결과1 : 6

		int 결과2 = Math.one_To_n_Sum(10);
		System.out.println("결과2 : " + 결과2);
		// 출력 : 결과2 : 55
	}
}

class Math {
	// static => 본사직원
	// static은 현재 클래스에 지금당장 존재한다.
	static int 더하기(int a, int b) {
		// 메인 메서드의 int c와 아래 int c는 전혀 관계가 없다.
		int c = a + b;

		// return 값의 타입과 함수명의 앞부분이 같아야 한다.
		// return => 변신
		return c;
	}
	static int one_To_n_Sum(int n) {
		int result = 0;
		for(int i = 1 ; i <= n; i++) {
			result += i;
		}
		
		return result;
	}
  • 문제 : 아래와 같이 출력 되도록 해주세요.
class Main {
public static void main(String[] args) {
 int 결과1 = Math.n_To_M_Sum(2, 3);
 System.out.println("결과1 : " + 결과1);
 // 출력 : 결과1 : 5
 
 int 결과2 = Math.n_To_M_Sum(5, 10);
 System.out.println("결과2 : " + 결과2);
 // 출력 : 결과2 : 45
}
}

class Math {
	static int n_To_M_Sum(int n, int m) {
		int result = 0;
		
		for(;n <= m; n++) { 
			result += n;
		}
		
		return result;
	}
}

🔔 TODO

  • 메서드, 인자, 매개변수, 리턴
  • 함수 리턴 해설
  • 함수 문제 풀이

💡느낀점

return 개념 반복 숙달 해야되겠다.. 어렵다... 쉬운 것 같은데 활용이 잘 안되는 것 같다. 계산기 예시 문제로 다시 복습해보고 자야겠다...

0개의 댓글