객체(Object)
란?
- 상태가 있고 행동을 하는 실체
(ex. 자동차 -> 모델명, 속도, 구동 방식, 크기 등 여러 가지 상태에 대한 정보가 있고 직진, 후진, 좌회전, 브레이크 등 여러 가지 행동도 할 수 있음. 이렇게 상태를 가지고 있고 어떤 행동을 하는 '실체'를 객체라고 한다.)
클래스(Class)
란?
- 어떠한 속성이 있고 어떻게 행동하는지를 기술한 설계도
(ex. 차를 만들기 위해서는 반드시 설계도가 필요하다. 그 설계도를 보면 어떠한 속성이 있고 어떻게 동작하는 지를 자세히 설명하고 있지만 설계도는 차가 아니다. 하지만 설계도를 보고 차를 만들 수 있듯이 클래스도 객체는 아니지만, 객체는 클래스로부터 만들어 지는 것이다.)
/* 클래스는 속성을 가지고 어떠한 행동들을 하는 지를 구체적으로 기술하는 설명서 같은 것이다. */
class Car {
private String name; // 속성 : 모델명
private double speed; // 속성 : 속도
private Size size; // 속성 : 크기
...
public void start() {...} // 동작 : 출발
public void stop() {...} // 동작 : 멈춤
/* Class를 바탕으로 실제 객체를 만듦 */
Car myCar = new Car("니로"); // 실체(car라는 class의 타입)
Car yourCar = new Car("소나타");
Car ourCar = new Car("스포티지");
주목해야할 점은 name(모델명)에 실제로 대응하는 값이 객체마다 다르다는 점이다. 속성은 name으로 하나지만 그 name에 대응되는 상태 정보는 객체마다 다 다를 수 있다는 점. 속성
과 상태
의 차이가 무엇인지를 이해해야한다.
class Counter {
// 어떤 것을 count하는 것을 정의한 class
private int count = 0;
// 속성 : 1,2,3... 차례차례 셈
public void increment() {
count++;
}
// 동작 : count를 증가시킴
public int get() {
return count;
}
// 동작 : 숫자를 다 세고 count를 가져옴
}
Counter appleCounter = new Counter();
Counter orangeCounter = new Counter();
instantiate
: 예를 들어서 설명하다. 예시하다.
개발에서는 new라는 키워드를 통해서 객체화시켜서 만들다 = instantiate
instance
: instantiate 시켜서 만들어진 객체
이 상황에서는 Counter라는 class를 instantiate하여서 appleCounter라는 instance를 만들었다. 라고 할 수 있다!
object
와 instance
는 혼용해서 사용하기도 한다.
(엄격하게 따져보면 object는 좀 더 일반적인 개념으로, 어떤 클래스나 데이터 타입에 대한 인스턴스를 지칭하는 용어이다, 클래스에 정의된 속성과 메서드를 가지는 실체를 의미함. 반면에 instance는 object를 구체화한 구체적인 사례를 가리키는 용어, 클래스로부터 생성된 실제 객체를 의미)
미묘할 수 있지만, 혼용해서 사용해도 큰 문제가 되지 않는다고 한다!
class Switch {
private int state = 0;
// 속성 : 켜졌는지 꺼졌는지의 정보를 담을 용도
public void on() {
this.state = 1;
}
// 행동 : 켠다
public void off() {
this.state = 0;
}
// 행동 : 끈다
public boolean isOn() {
return this.state == 1;
}
// 행동 : 현재 상태
}
Switch tvSwitch = new Switch();
클래스
객체
이다.🐷 유투브 '쉬운 코드'의 객체와 클래스 영상을 보면서 필기한 내용입니다.
---