- 자바 언어 기초(com.eomcs.lang)
- ex07 : 메서드를 활용하여 명령을 기능 단위로 분리하는 방법(계속)
- 실습 프로젝트 : mini-pms(프로젝트 관리 시스템)
-
6 단계: 메서드의 존재 이유(계속)
-
7 단계: 클래스로 메서드를 분류하기
- 학습 목표 달성 확인 목록
- [] 메서드를 정의하고 사용할 수 있는가?
public static 리턴타입(자료형 또는 void) 메소드명(){
...
return;//리턴 타입이 void일 경우 return이 없다.
}
- [] 파라미터와 아규먼트에 대해 설명할 수 있는가?
매개변수는 실제 값이 존재하지 않고 형태를 나타내는 것을 말한다.
즉,매개변수는 실제로 메모리에 할당되어 있지 않은 변수,텅빈 하나의 박스(공간)
아규먼트는 매개변수에 대입하는 값
즉,실제로 메모리에 할당된 변수라는 것이다.
- [] call by value 와 call by reference에 대해 예제를 들어 설명할 수 있는가?
예제로 설명하겠다.
public class Exam {
static void swap(int a) {
System.out.println(a);
}
public static void main(String[] args) {
int a = 100;
swap(a);
}
}
아큐먼트가 int a 처럼 원시타입인 경우
메서드를 호출할 때 값 자체를 넘긴다.(주소x)
public class Exam {
static void swap(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int[] arr = {100, 200};
swap(arr);
}
}
배열같은 레퍼런스 타입의 경우엔 값이 아닌 해당 주소값을 전달받아
메서드를 호출한다.
- [] 클래스 문법의 용도를 설명할 수 있는가?
사물 하나 하나를 기능별로 묶어서 사용하는 것,
각 클래스 안에서 역할에 따라 각 클래스의 기능을 서술해 나간다.
사람에 따라 같은 프로그램을 만들더라도 여러가지 관점으로 만들 수 있다.
- [] 역할에 따라 메서드를 분류하여 클래스로 정의할 수 있는가?
현재 필자가 만들고 있는 배달메뉴 서비스이다.
%[https://gist.github.com/osk2090/aa48085f8ea0dd1ce4f9856c49c3ab0f]
- [] 클래스에 등록된 메서드를 호출할 수 있는가?
위의 코드에서 가져와보면
if (choice == 1) {//한식
Korea.koreaF(choice);
} else if (choice == 2) {//일식
Japan.japanF(choice);
} else if (choice == 3) {//중식
China.chinaF(choice);
} else if (choice == 4) {//양식
West.westF(choice);
} else if (choice == 5) {//디저트
Dessert.dessertF(choice);
} else if (choice == 0) {
Basket.basket();
} else {
System.out.println("없는 메뉴입니다.");
}
예를 들어
Korea.koreaF(choice);를 참조하자면
Korea는 클래스
koreaF는 해당 클래스에 속한 메서드
choice는 해당 메서드의 아규먼트이다.