자바는 객체지향 프로그래밍 언어다.
너무 많이 들어본 말인데, 너무 많은 의미를 숨기고 있다는 느낌이 든다.
객체가 뭐지?
- 객체는 현실에 있는 사물(자동차, 스마트폰, 책 등) 또는 추상적 개념(강의, 회원 등)들 모두 '객체(Object)'이다.
객체지향 프로그래밍?
컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
- 위키백과, 객체 지향 프로그래밍
다시 말해, 자바는 프로그램을 '객체'들의 상호작용으로 본다. 그러면, 자바는 현실세계의 객체를 어떻게 프로그램으로 가져올까?
클래스?
클래스(class)는 자바의 가장 작은 단위이다. 자바는 현실세계의 객체들을 클래스로 표현할 수 있다. 직접해보자.
여기 '자전거'가 있다. 자전거는 아래와 같이 Bicycle클래스로 표현할 수 있다.
public class Bicycle {
// ...
}
심심하니까, 한번 더 해볼까? 이번에는 '회원'을 Member클래스로 표현했다.
public class Member {
// ...
}
사람에 따라서는 회원을 User라고 쓸수도 있고, Hoewon(?)으로 쓸수도 있겠지.. 이름이야 짓기 나름이다.
상태(State)와 행위(Behaivor)?
Bicycle 클래스와 Member 클래스를 다시한번 보자. 너무 허전하다.
현실세계의 객체는 상태(State)와 행위(Behaivor)를 가지고 있다.
예를 들어, 자전거의 상태는
- 자전거의 색상이 파란 상태
- 자전거 그립이 1자인 상태
- 자전거의 속도가 10km/h인 상태
- 자전거가 총 10km를 달린 상태
- 자전거의 무게가 총 5kg인 상태
자전거의 행위는
- 자전거에 올라타는 행위
- 자전거에서 내리는 행위
- 자전거 페달을 밟는 행위
- 자전거의 브레이크를 잡는 행위
- 자전거의 기어를 바꾸는 행위
클래스는 현실세계의 객체를 표현하기 때문에, 클래스도 상태와 행위를 가진다. 어떻게 표현할까?
변수(Variable)? 메소드(Method)?
클래스의 상태는 변수로, 행위는 메소드로 표현할 수 있다.
먼저, 클래스의 상태를 나타내는 변수는 위치가 중요하다.
- 클래스의 상태를 나타내는 변수는 클래스 안에 있어야 한다.
- 클래스의 상태를 나타내는 변수는 메소드 밖에 있어야 한다.
메소드는 반드시 클래스 안에 포함되어 있어야 한다.
아래 코드는 자전거 클래스의 변수(상태)와 행위(메소드)를 간략하게 작성한것이다.
public class Bicycle {
// 변수(상태) 시작
private String color; // 색상
private String grip; // 손잡이모양
private int speed; // 속도
private int distance; // 거리
private int weight; // 무게
// 변수(상태) 끝
// 메소드(행위) 시작
public void rideOn(){
// 올라탐
}
public void rideOff(){
// 내림
}
public void speedUp(){
// 페달밟음
}
public void speedDown(){
// 브레이크 잡음
}
public void changeGear(){
// 기어 바꿈
}
// 메소드(행위) 끝
}
'Java' 카테고리의 다른 글
[자바의 신] 자료형이 뭐죠? (0) | 2020.09.10 |
---|---|
[자바의 신] 변수에도 이름이 있다? (0) | 2020.09.10 |
[자바의 신] 클래스와 객체는 같은건가? (0) | 2020.09.09 |
[java] OracleJDK 11 설치 (0) | 2020.09.03 |
[자바의 신] 프로그래밍이 뭐죠? (0) | 2020.09.03 |