자바프로그래밍 입문#3-2

파핑·2022년 3월 9일
0

JAVA PROGRAMMING

목록 보기
4/12

공부기록 3일차-2
클래스와 객체 파트는 따로 기록하고 싶어 포스트를 나누어 보았다.✌


#클래스와 객체

객체 지향 프로그래밍과 클래스

▷클래스
객체 지향 프로그램은 클래스를 기반으로 프로그래밍한다.클래스는 객체의 속성과 기능을 코드로 구현한 것이다.
객체를 클래스로 구현한 것을 '클래스를 정의한다'라고 한다.

여기 학생개체 즉 Student객체가 있다. 학생개체가 가지는 특성을 생각해 보면 이름, 나이, 학년 등이 있을 것이다. 이런 클래스의 속성을 변수로 선언하면 이것이 '멤버 변수'가 된다.

클래스를 정의하는 문법을 간단히 나타내보자

(접근제어자)class 클래스 이름{
멤버변수;
메서드;
}

멤버 변수를 선언할 때 기본자료형(int,double형)으로 선언할 수도 있고, 클래스형=참조자료형으로도 선언할 수 있다.
참조자료형은 string,Date와 같이 이미 JDK에서 제공하는 것일 수도 있고, 개발자가 직접 만든 Student나 Person같은 클래스가 다른 클래스에서 사용하는 멤버 변수의 자료형이 될 수 도 있다.

변수의 자료형
-기본자료형
int, long, float, double 등
-참조 자료형
String, Date, Student 등

▷메서드

클래스 내부에서 멤버변수를 사용하여 클래스 기능을 구현하는 것을 멤버함수 또는 메서드라고 한다.

메서드는 함수의 한 종류이다. 함수란 무엇인지 알아보자.

▷함수

함수란 하나의 기능을 수행하는 일련의 코드를 말한다. 프로그램을 돌릴 때 하나의 기능을 반복해서 쓸 때가 있다. 예를 들면 두 수를 입력 받아 더하는 경우, 성적 둘을 더하는 경우, 두 거리를 더하는 경우 모두 더하기 기능이 필요한 경우이다.
이런 경우 더하기 기능을 수행하는 코드를 묶어서 '더하기 함수'로 만들 수 있다. 이처럼 함수는 어떠한 기능을 수행하도록 미리 구현해 놓고 필요할 때마다 호출하여 사용할 수 있다.

-함수의 입력과 반환
함수는 이름이 있고 입력과 결과 값을 갖는다.
예로 들었던 더하기 함수를 그림과 코드형식으로 나타내어 보자.

입력(숫자,성적,거리) → 더하기 함수 → 출력(숫자의 합, 성적의 합, 거리의 합)
num1,num2 → add함수(result = num1+num2) → result

함수에 이름을 붙일 때 의미를 알 수 있는 단어를 사용하는 것이 좋다. 두 수를 더하는 함수를 add함수라고 이름을 짓고 더할 두 수는 각각 num1,num2 정하였다. 이와 같이 함수의 입력으로 받는 변수를 '매개변수'라고 한다. 그리고 두 수를 더한 결과 값을 result변수에 저장하고 돌려준다. 이를 '결과를 반환한다.'고 하며 말 그대로 '반환 값'이라고 부른다.

-함수 정의하기
더하기 함수를 실제 코드로 작성해 보자.

intadd(②int num1, int num2){
ㅤint result;
ㅤresult = num1+num2;
ㅤ③return result;
}

①함수이름 ②매개변수 ③return예약어 ④함수 반환형

4개의 조건이 모두 필요하지 않은 경우도 있다.
아래 예제를 살펴보자

int getTenTotal( ㅤㅤ ) {
ㅤint i;
ㅤint total = 0;
ㅤfor(i = 1; i <= 10; i++) {
ㅤtotal += i;
}
ㅤreturn total; //1부터 10까지 더한 값을 반환
}

getTenTotal(ㅤ)처럼 매개변수가 필요없는 함수도 있다. 이 함수의 기능은 1부터10까지 더한 값을 반환한다. 따라서 함수에 전달할 값이 굳이 필요하지 않다.

-return예약어와 반환형

위에 말했듯이 add(ㅤ)함수를 수행한 후 결과 값은 변수result에 저장한다. 저장된 결과 값은 함수를 호출했을 때 반환되는 값이므로 '반환 값'이라고 부른다. '이 함수의 결과 값을 반환합니다.'를 뜻하는 예약어가 바로 return이다.
즉 return예약어를 사용하여 result값을 반환하는 것이다.
반환 값의 자료형을 반환형이라고 하는데 반환영은 ④번 위치에 써주면 된다.

반환 값이 없는 함수도 있다. 밑에 예제를 살펴보자.

void printGreeting(String name) {
ㅤsystem.out.println(name + "님 안녕하세요.");
ㅤreturn; ㅤㅤ //반환 값 없음
전달 받은 매개변수 name을 사용하여 인삿말 출력

반환 값이 없다고 반환형을 쓰는 위치를 비워두면 오류가 발생하니 '반환할 값이 없다'는 뜻의 예약어 void를 써 준다.

return예약어는 함수 수행을 끝내고 프로그램 흐름 중에서 호출한 곳으로 다시 되돌아갈 때도 사용할 수 있다.

다음 예제를 살펴보자.

void devide(int num1, int num2) {
ㅤㅤ if(num2 == 0) {
ㅤㅤ system.out.println("나누는 수는 0이 될 수 없습니다");
ㅤㅤ return; ㅤㅤ //함수 수행 종료
}
else {
ㅤㅤ int result = num1 / num2;
ㅤㅤ system.out.println(num1 + "/" + num2 + "=" + result + "입니다.");
ㅤㅤ}
}

위 devide()함수는 두 수를 매개변수로 전달받아서 나눗셈을 한 후 몫을 출력하는 함수이다. 그런데 나눈는 수가 만약 0이라면 수행이 되지 않을 것이다.
이런 경우 함수 수행을 종료하는 예약어 return을 사용한다. 함수 수행을 종료하는 목적이므로 return 뒤에 반환 값을 적지 않는다.

-함수 호출하고 값 반환하기

이제 함수를 만들고 사용해 보도록 하자. 함수를 사용하는 것을 '함수를 호출한다,'라고 한다.
다음 예제는 객체 지향을 반영한 예제라기보다 일반적인 함수를 어떻게 사용하는지 중점을 두고 살펴보자.

...
ㅤㅤ int num1 = 10;
ㅤㅤ int num2 = 20;

ㅤㅤ int sum =add(num1,num2);
ㅤㅤ system.out.println(num1 + "+" + num2 + "=" + "입니다.");
}

public static int add(int n1, int n2) {
ㅤㅤ int result = n1 + n2;
ㅤㅤ return result; ㅤㅤ //결과 값 반환
ㅤㅤ }
}

위 코드는 add(ㅤ )함수를 구현했다. add(ㅤ)함수는 두 개의 매개변수에 int형 값을 전달 받아 두 수의 합을 돌려준다. 결과 값이 정수이기 때문에 반환형도 int형으로 써준다.
add(ㅤ)함수를 호출하는 코드를 살펴보자.
반환 값이 int형이기 때문에 결과 값이 저장되는 sum변수 앞에 int라고 써준다.

-매개변수 살펴보기
add(ㅤ)함수를 호출할 때 num1,num2 두 개의 변수를 넘겼다. 그리고 함수를 구현하는 부분에서는 add(int n1, int n2)와 같이 n1,n2를 사용했다.
함수를 호출할 때 넘겨주는 변수 이름과 함수를 구현할 때 사용한 매개변수 이름이 같아야 한다고 생각할 수 있다. 하지만 이 둘은 상관없다.

num1, num2는 main(ㅤ)함수의 변수이다. add(num1, num2)로 사용하면 add(ㅤ)함수에 두 값을 넘겨준다.
매개변수 n1, n2는 실제 함수로 넘어온 두 값을 받아주는 역할이다. 즉 n1,n2는 add(ㅤ)함수에서 선언한 새로운 변수인 것이다. 따라서 함수를 호출할 때 사용하는 변수 이름과 호출되는 함수에서 사용하는 변수서로 다른 변수이으로 이름이 같아도 되고 달라도 상관없다.


profile
html/css공부 중(JAVA잠시 접어두는 중)

0개의 댓글