프로그래밍 : 컴퓨터에게 할 일을 가르치는 것.
예시) 현관에 있는 디지털 도어락 프로그램 : 비밀번호 입력 -> 도어락 프로그램이 저장되어 있는 번호와 동일한지 확인 -> 입력한 번호와 저장되어 있는 번호가 동일하면 문이 열린다.
프로그래밍을 한다는 것은 모두 이러한 작업을 반복적으로 수행하면서 어던 기능들을 만들어 내는 것.
컴퓨터와 의사소통을 하기 위해 사람과 컴퓨터 사이에도 언어가 필요하다. 이러한 언어를 프로그래밍 언어라고 한다.
예시2) 웹 페이지에서 어떤 정보를 얻기 위해서 클릭 -> 서버에 데이터 요청 -> 서버에서 요청을 받으면 필요한 데이터를 가공해서 화면에 보여준다.
앞 절에서 살펴본 도어락의 비밀번호를 확인하는 것을 자바 프로그램으로 작성하면 다음과 같다.
public boolean checkPassword(String password) {
// 중간 내용
}
메소드 : 어떤 값을 받아서 계산을 하고 결과를 리턴하는 것 (하지만 매번 어떤 값을 받는 것도 아니고 매번 결과를 리턴하는 것도 아니다)
메소드는 어딘가에 소속이 되어 있어야만 한다. 따라서 다음과 같은 클래스라는 것 안에 포함되어야 한다.
하나의 클래스 안에는 0개 이상의 여러 메소드가 존재할 수 있다.
public class DoorLockManager {
public boolean checkPassword(String password) {
// 중간 생략
}
public void setPassword(String password) {
// 중간 생략
}
public void resetPassword() {
// 중간 생략
}
}
setPassword()와 resetPassword()는 void라는 리턴 타입이 정의되어 있다. 자바의 리턴 타입 중 void는 "이 메소드는 아무것도 돌려주지 않아요."라는 의미이다.
resetPassword() 메소드는 들어가는 값도 없고, 돌려주는 값도 없다.
자바와 같은 언어를 객체지향 프로그래밍 언어(Object Oriented Programming Language)라고 한다. 객체지향 언어의 등장으로 현실 세계를 프로그램으로 표현할 수 있게 된다.
클래스는 상태(state)와 행동(behavior)이 있어야만 한다. (행동은 행위라는 말로도 대체된다)
"상태"는 1. 클래스 안에, 2. 메소드 밖에 정의한다. 다음과 같이 DoorLockManager 클래스에는 currentPassword라는 상태가 존재한다.
public class DoorLockManager {
String currentPassword;
public boolean checkPassword(String password) {
// 중간 생략
}
// 이하 메소드 생략
}
상태 : 객체의 속성 -> 인스턴스 변수에 해당
행위 : 객체가 수행할 수 있는 동작 -> 메소드에 해당
객체의 상태는 행위를 통해 변경한다.
int a;
a = 1+2;
프로그램에서는 왼쪽에 대입할 변수를, 오른쪽에 게산식을 적어 주어야만 한다. a라는 변수에는 3이라는 값이 들어가게 된다.
public class Calculator {
public int add(int num1, int num2) {
int sum;
sum = num1 + num2;
return sum;
}
}
프로그램의 연산에서는 숫자만 더할 수 있는 것이 아니다. 위와 같이 매개 변수로 넘어온 값도 더할 수가 있다. return이라는 것은 어떤 값을 돌려줄 때 지정한다.
sum = num1 + num2 + num3;
=의 오른쪽에 있는 계산식에는 반드시 두 개의 값만 계산할 수 있는 것이 아니라, 몇십, 몇백 개의 계산이 있어도 상관없다.
모든 자바 코드의 한 줄이 끝날 때에는 ;(세미콜론)을 적어주어야만 한다. 자바에서는 컴파일러라는 것이 세미콜론이 나올 때까지는 한 줄이라고 생각한다. 세미콜론을 적지 않으면 컴파일러가 그 다음 줄도 같은 줄로 생각을 한다.
public class Calculator {
public int add(int num1, int num2) {
int sum;
sum = num1 + num2;
return sum;
}
}
여기에 있는 예약어는 public, class, int, return이다.
public class int {} 에서 int는 예약어라서 클래스 이름으로 지정할 수 없다) public class Calculator {
public int add(int num1, int num2) {
int sum;
sum = num1 + num2;
return sum;
}
public int addAll(int num1, int num2, int num3) {
int sum = 0;
sum = num1 + num2 + num3;
return sum;
}
public int subtract(int num1, int num2) {
int result = num1 - num2;
return result;
}
public int multiply(int num1, int num2) {
int result = num1 * num2;
return result;
}
public int divide(int num1, int num2) {
int result = num1 / num2;
return result;
}
}
나의 답변
1. 자바의 가장 작은 단위입니다.
2. 어떤 값을 받아서 계산을 하고 결과를 리턴하는 것으로 클래스의 행동입니다.
3. 메소드의 소괄호 안
4. 리턴 타입
5. 상태와 행동입니다. 상태는 변수에 해당하고 행동은 메소드에 해당합니다.
6. return
정답
1. 클래스는 각각의 객체들을 나타내는 청사진(blueprint)과 같다. 즉, 하나의 객체를 나타내기 위한 자바에서 가장 작은 단위로 볼 수 있으며, 상태와 행동을 갖고 있는 것을 의미한다.
2. 메소드는 클래스의 "행동"을 제공하는 역할을 수행한다.
3. 메소드의 매개변수는 메소드 선언시 사용하는 소괄호 안에 타입과 변수명 순으로 선언한다. 두 개 이상의 매개변수가 있을 경우에는 콤마로 구분한다.
4. 메소드 이름 앞에는 반드시 리턴 타입을 선언해야만 한다.
5. 상태(state)와 행동(behavior)
6. return 이라는 예약어를 사용하여 결과를 돌려준다는 것을 명시한다.