■ 객체지향 프로그래밍의 이해
객체는 영어로 Object "물건 또는 대상"
즉 Object는 우리 주변에 존재하는 물건(연필,나무, 지갑, 돈 등)이나 대상(철수, 친구, 선생님 등) 전부를 의미한다. 그렇자면 객체를 지향하는 프로그래밍이라는 것은 무엇일까? 예를 들어서 다음 상황을 시뮬레이션하는 프로그램을 작성한다고 가정해 보자.
"나는 과일장수에게서 두 개의 사과를 구매했다."
이문장에 삽입되어 있는 객체의 종류는 다음과 같다.
나, 과일장수, 사과
그렇다면 '나'라는 객체는 '과일장수' 객체로부터 '과일'객체의 구매하는 액션을 취할 수있어야 한다. 그런데 객체지향프로그래밍에서는 '나'그리고 '과일장수'와 같은 객체를 등장시킬 수 있을 뿐만 아니라, '나'라는 객체가 '과일장수'라는 객체로부터 '과일'객체를 구매하는 행위도 그대로 표현할 수 있다.
즉 객체지향 프로그래밍은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그래도 실체화시키는 형태의 프로그래밍이다.
■ 객체를 이루는 것은 데이터와 기능
과일장수는 과일을 팝니다. → 행동(메소드에 의해 표현)
과일장수는 사과 20개, 오렌지 10개를 보유하고 있습니다. → 상태(변수를 통해 표현)
과일장수의 과일판매 수익는 50,000원입니다. → 상태(변수를 통해 표현)
■ 객체가 맞냐? 인스턴스가 맞냐? 이거 고민할 문제인가?
객체 인스턴스 차이
인스턴스(instance)의 사전적인 의미는 다음과 같다.
보기, 사례, 경우, 실제
여기서 '실제'라는 단어에 주목하자. 즉 인스턴스는 클래스라는 틀을 기반으로 실제활 된 대상이이라는 뜻을 담고 있다. 이처럼 클래스라는 틀으 기반으로 실제화되었음을 강조할 때에는 객체를 대신해서 '인스턴스'라는 단어를 사용한다.
객체(Object)는 사물이나 대상을 의미한다. 현실세계의 사물이나 대상을 프로그램상에서 표현되었음을 강좋라 때에는 '객체'라는 단어를 사용한다.
결국 인스턴스와 객체는 동일한 의미로 사용이 된다. 그러나 인스턴스라는 표현이 더 어울일 때가 있고, 객체라는 표현이 더 어울리는 상황도 있다. 예를 들어서 다음의 경우에 객체라는 말이 더 어울린다.
여러분의 혼란을 최소화 하기 위해서 특별한 상황이 아니면 인스턴스라는 표현을 주로 사용하겠다.
더불어 클래스 안에 선언및 정의되어서, 인스턴스가 생성되어야만 접근이 가능한 변수와 메소들르 가리켜 각각 '인스턴스변수', '인스턴스메서드'라 한다는 사실을 기억하자.
자바의 이름규칙(Naming Rule)
■ 클래스의 이름 규칙
객체 지향 프로그래밍 언어에서 가장 보편적으로 선택하는 이름 규칙을 가리켜 'Camel Case' 라 한다.
Camel Case의 기본 규칙은 다음과 같다.
- 첫 문자는 대문자로 시작한다.
- 둘 이상의 단어가 묶어서 하나의 이름을 구성할 때, 새로 시작하는 단어는 대문자로 한다.
■ 메소드와 변수의 이름 규칙
메소드와 변수의 이름은 클래스의 이름과 구분되어야 코드의 가독성을 높일 수 있다.
그래서 변형된 CamelCase를 적용하는 것이 일반적이다.
- 첫 문자는 소문자로 시작한다.
- 둘 이상의 단어가 묶어서 하나의 이름을 구성할 때, 새로 시작하는 단어는 대문자로 한다.
■ 상수의 이름 규칙
상수는 변수와 구분이 되도록 이름을 지어주기 위해서 모든 문자를 대문자로 구성하는 것이 관례이다.
즉 final 을 이용한 상수의 선언은 다음과 같이 하는 것이 좋다.
final int COLOR = 7;
단 둘 이상의 단어가 연결이 되어야 하는 경우헤는 다음과 같이 _(언더바)를 사용한다.
final int COLOR_REINBOW = 7;