1. 몇 가지 질문
- 서점에서 책을 관리하는 것은 누구일까요?
- 서점에서 단골 고객을 관리하는 것은 누구일까요?
- 서점에서 돈을 관리하는 것은 누구일까요?
=> (미녀와 야수) 야수가 사는 성이라면?
2. 객체 지향 프로그래밍
- 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고 받고, 데이터를 처리할 수 있다.
3. 클래스(Class), 오브젝트(Object), 인스턴스(Instance), 참조형 변수(Reference Variable)
- 설계 도면은 실제 객체는 아니다. (여기서 설계 도면은 클래스(class)와 흡사한 의미)
설계 도면을 보고 실제 책상을 만들게 된다.
- 실제 만들어진 책상을 오브젝트(object)라고 한다.
- 오브젝트는 다른 말로 인스턴스(instance)라고도 한다.
- 실제 존재하는 책상은 오브젝트 혹은 인스턴스라고 한다.
4. 설계 도면을 보고 실제로 만들었다면?
- Object 또는 Instance
- Class를 가지고 동작하는게 아니라 실제로 만들어진 Object를 이용하는 것
- 현실에 존재할 인스턴스가 어떻게 동작할까? 라는 것을 고민하고 그걸 프로그래밍 하는 것이 객체 지향 프로그래밍
- 클래스를 어떻게 만들까?를 고민하는 게 아닌 메모리 상에 존재하는 오브젝트(인스턴스)를 어떻게 만들까? 이 인스턴스를 어떻게 이용할까?를 고민하는 것!
5. 인스턴스를 특별한 이름으로 불러주고 싶다면?
- 참조형 변수(Reference Variable)를 선언한다.
- 참조되지 않은 인스턴스는? 쓰레기 (Garbage)
6. Book b = new Book();
- 메모리(Heap)에 Book이라는 Instance가 생성되고, 이 인스턴스를 참조하는 변수가 b인 것임
- 참조한다는 건 가리킨다는 의미
- 변수 b앞의 Book을 레퍼런스 타입이라고 한다.
- Book()은 생성자라고 한다.
- 인스턴스를 만들고 사용하려면, 인스턴스를 참조하는 변수가 반드시 필요하다. (Heap 메모리에는 있지만, 사용할 수 없는 인스턴스 즉, 사용되지 않는 인스턴스는 쓰레기(Garbage)가 됨)
*기본형 타입은 값을 참조하는 것이 아니고 값을 메모리 크기만큼 가질 수 있는 타입이다.
참조형 타입은 값을 가지는 것이 아닌 객체를 참조한다. (가리킨다.)