[ Java ] 객체지향문법
자바는 객체 지향 언어이다.
객체 지향에 대해 배우기 전에 질문 몇 가지를 던져본다.
몇 가지 질문
서점에서 책을 관리하는 것은 누구일까?
서점에서 단골 고객을 관리하는 것은 누구일까?
서점에서 돈을 관리하는 것은 누구일까?
책을 관리하는 것은 책장이다.
단골 고객을 작성해 놓은 명부가 관리한다.
금고에 돈이 들어있다고 해보자.
이처럼 객체를 중심으로 돌아가는 환경을 얘기한다.
사전적 정의
객체지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
용어정리
클래스(class), 오브젝트(object), 인스턴스(instance), 참조형 변수(reference variable)
설계도면은 클래스와 유사한 개념이라고 생각하면 된다.
설계도면을 통해서 만들어진 형태를 오브젝트 또는 인스턴스와 비슷하다.
즉, 실제 존재하는 형태를 오브젝트 혹은 인스턴스라고 한다.
설계 도면을 보고 실제로 만들었다면, Object 또는 Instance라고 한다.
인스턴스를 특별한 이름으로 불러주고 싶다면?
참조형 변수( Reference Variable )를 선언한다.
참조되지 않은 인스턴스는 Garbage
참조 변수를 선언하지 않으면 생성된 인스턴스를 사용할 수 없다.
Book b = new Book();
new 뒤에 클래스이름(); 은 오브젝트(인스턴스)를 생성하라는 의미이다.
여기서 b를 참조변수라고 부른다.
이러한 과정을 거치면
Heap이라는 메모리영역에 Book 인스턴스가 하나 생성된다.
이 Heap영역의 Book인스턴스를 변수 b로 참조(pointer)한다.
변수 b의 Book을 레퍼런스 type이라고 한다.
객체지향의 의도는 "메시징이다".
훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다
모듈이 어떻게 커뮤니케이션하는가에 달려있다.
Alan Curtis Kay
인프런의 '즐거운 자바' 강의 내용을 토대로 작성하였음.