안녕하세요.
오늘은 저번 글부터 계속해서 언급이 되었던 '객체(Object)' 에 대해 알아보도록 하겠습니다.
객체는 클래스(Class)처럼 개발을 하다 보면 자주 쓰이게 될 개념 중 하나입니다.
클래스의 개념
* 위 글이 객체를 이해하는 데에 도움이 될 것 같습니다.
객체의 정의
컴퓨터 과학에서 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다.
절차적 프로그래밍에서 하나의 객체는 자료나 명령을 포함할 수 있지만 두 가지를 동시에 포함하지는 않는다. (명령은 프로시저나 함수의 형태를 가진다).
객체지향 프로그래밍에서 객체는 클래스의 인스턴스이다. 클래스 객체는 자료와 그 자료를 다루는 명령의 조합을 포함하여 객체가 메시지를 받고 자료를 처리하며 메시지를 다른 객체로 보낼 수 있도록 한다. 실세계의 비유로 설명하자면, 가령 어떤 사람이 집에서 살기를 원할 때, 그 집의 청사진(집의 설계도)이나 축소 모형 따위는 전혀 필요가 없다. 필요한 것은 설계에 맞는 실제 집이다. 이 비유에서 청사진은 클래스를, 실제 집은 객체를 나타낸다.
출처 - 위키백과
객체는 클래스를 바탕으로 만들어집니다. 설계도(=클래스)를 보고 컴퓨터(=객체)를 만들 듯이
메모리에서 사용하고 싶은 객체가 있다면, 우선적으로 클래스로 그에 해당하는 객체를 만드는 작업이 필요합니다.
클래스에는 객체를 생성하기 위해 필요한 필드(Field)와 메서드(Method)가 정의되어 있습니다.
클래스로부터 만들어진 객체는 해당 클래스의 인스턴스(instance)라고 합니다.
클래스로부터 객체를 만드는 과정을 인스턴스화라고 합니다.
설계도만 있다면 당연히 컴퓨터를 여러 대 생산이 가능합니다.
이는 곧, 하나의 클래스로부터 여러 개의 인스턴스(객체)를 만들 수 있다는 것을 의미합니다.
객체 지향 프로그래밍의 3가지 단계
- 클래스 설계
- 설계된 클래스를 이용하여 사용할 객체 생성
- 생성된 객체를 사용
클래스는 어떻게 설계하는가?
사용하고자 하는 객체를 구상하였다면 그 객체의 대표가 되는 이름을 결정하여 클래스 이름으로 지정하여야 합니다.
작성 규칙 | 예시 |
첫 번째 글자는 숫자가 올 수 없음. | 0Computer ( X ), Computer0 ( O ) |
하나 이상의 문자로 이루어져야 함. | Computer, MyCom |
'$', '_' 외의 특수 문자는 사용할 수 없음. | $Computer, _MyCom |
자바 키워드는 사용할 수 없음. | int, for, while ( X ) |
클래스 이름은 다른 클래스와 식별할 목적을 사용되므로 자바의 식별자 작성 규칙을 준수하여 선언하여야 합니다.
* 자바에서는 영어 대소문자를 다른 문자로 취급하기 때문에 클래스 이름도 영어 대소문자를 구분해야 합니다.
클래스 이름을 지정하였다면 '클래스 이름.java'로 소스 파일을 생성합니다.
// 소스 파일 ( Computer.java )
public class 클래스 이름 {
. . .
}
소스 파일을 열고 위와 같이 클래스를 선언합니다.
* 단 public class 키워드는 클래스를 선언할 때 사용하며, 반드시 소문자로 작성하여야 합니다.
// 소스 파일 ( Computer.java )
public class Computer { // 소스 파일과 동일한 이름을 가진 클래스만 public 선언 가능
. . .
}
class MyCom {
. . .
}
* 일반적으로는 소스 파일 하나에 클래스도 하나만 선언하지만, 두 개 이상의 클래스 선언도 가능은 합니다.
* 단, 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있습니다.
클래스가 선언된 소스 파일을 컴파일하면 바이트 코드 파일이 선언한 클래스의 개수만큼 생성됩니다.
* 소스 파일은 클래스 선언을 담고있는 저장 단위일 뿐
객체는 어떻게 생성하는가?
클래스를 선언하고, 컴파일을 했다면 객체를 생성할 설계도가 만들어진 것 입니다.
클래스 클래스변수명 = new 클래스(); // 객체 생성
클래스로부터 객체를 생성하는 방법은 new 연산자를 사용하는 것 입니다.
new 연산자로 생성된 객체는 메모리의 힙 영역에 생성 됩니다.
메모리 내에서 객체의 위치를 알 수 있도록 new 연산자는 힙 영역에 객체를 생성한 뒤,
객체의 주소를 반환합니다.
생성한 객체는 어떻게 사용하는가?
new 연산자가 반환한 주소를 참조 타입인 클래스 변수에 저장하면, 변수를 통해 객체를 사용할 수 있습니다.
new 연산자로 객체를 생성하고 반환된 객체의 주소를 변수에 저장하면,
위와 같이 변수가 객체를 참조하게 됩니다.
이상으로 자바에서 중요한 개념인 객체에 대해 알아보았습니다.
자바는 객체 지향 프로그래밍 언어로써, 객체는 중요한 개념입니다.
객체를 올바르게 활용하면 코드의 가독성, 재사용성, 유지보수성 등을 향상시킬 수 있습니다.
'Java' 카테고리의 다른 글
[ JAVA ] 10. 추상화(Abstraction)란 무엇인가? (0) | 2023.07.15 |
---|---|
[ JAVA ] 09. 객체(Object)와 인스턴스(Instance)는 같은 개념인가? (0) | 2023.07.09 |
[ JAVA ] 07. 자료형을 사용할 때 고려해야 할 부분은 무엇이 있을까? (0) | 2023.07.07 |
[ JAVA ] 06. 자료형에 대해 알아보자. (0) | 2023.07.06 |
[ JAVA ] 05. 클래스(Class)의 구성 요소인 생성자(Constructor)는 무엇인가? (0) | 2023.07.04 |