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