오늘의하루

[자바의 정석] 객체지향 언어 & 클래스와 객체 본문

JAVA

[자바의 정석] 객체지향 언어 & 클래스와 객체

오늘의하루_master 2022. 10. 12. 12:11

객체지향 언어 란?

  • 코드의 재사용성을 높여준다.
  • 코드의 관리가 쉬워진다.
  • 신뢰성이 높은 프로그램의 개발을 가능하게 한다.

클래스와 객체

클래스는 객체를 정의해 놓은 것을 말한다.
객체는 속성과 기능을 가진 개념을 말한다.
  - 객체(Object)는 인스턴스(instance)를 포함하는 일반적인 의미이다.

예를 들어 붕어빵 기계는 클래스이고 붕어빵은 객체가 된다.

객체의 구성요소

객체는 속성(변수)과 기능(메서드)으로 이루어져 있으며 속성과 기능을 합쳐서 멤버라고 한다.

class Tv{
    // 속성(변수)
    String color;
    boolean power;
    int channel;
    
    // 기능(메서드)
    void power(){power = !power;}
    void channelUp(){channel++;}
    void channelDown(){channel--;}
}

인스턴스의 생성과 사용

  • 인스턴스를 생성한다는 것은 클래스로부터 인스턴스를 생성하는 것을 말한다.
Tv t1; // 객체를 다루기 위한 참조변수 선언
t1 = new Tv(); // 객체 생성 후, 생성된 객체의 주소를 참조변수에 저장한다.

Tv t2 = new Tv(); // 위 과정을 한줄로 표현할 수 있다.
  • 인스턴스를 사용한다는 것은 객체의 속성과 기능을 사용하는 것을 말한다.
Tv t = new Tv(); // 객체(Tv) 생성 후 참조변수(t)에 주소를 저장한다.

t.channel = 7; // 속성(변수)에 값을 초기화해준다.
t.channelDown(); // 기능(메서드)를 사용한다.

System.out.println(t.channel); // 6

 

  • 여러 개의 참조 변수가 한 개의 인스턴스 주소를 가지고 있을 수 있다.
  • 한 개의 참조 변수가 여러 개의 인스턴스를 가지고 있을 수는 없다.
// 지금은 각각의 참조변수에 다른 주소가 저장되어 있다.
Tv t1 = new Tv(); 
Tv t2 = new Tv();

// 참조변수 t2에 t1에 저장되어 있는 객체의 주소를 저장한다.
// 이제 t1,t2는 같은 주소 값을 가지게 된다.
t2 = t1;

t1.channel = 7; // t1에 저장되어 있는 객체의 속성(변수) 값을 초기화 해준다.

System.out.println(t1.channel); // 7
System.out.println(t2.channel); // 7

// t2에 저장되어 있는 객체의 주소가 t1과 동일하기 때문에 가능하다.

클래스의 또 다른 정의

클래스는 구조체와 함수가 결합한 형태를 의미한다.

  • 구조체는 타입에 관계없이 서로 관련된 데이터들을 저장할 수 있는 공간을 말한다.
// 클래스 없이 별도로 존재하는 변수
int hour;
int minute;
int second;

// 클래스를 사용해 서로 관련된 값을 묶어서 하나의 타입으로 정의
class Time{
    int hour;
    int minute;
    int second;
}

배열을 통해 여러 개의 객체를 저장할 수 있다.

class Time{
    int hour;
    int minute;
    int second;
}

// 배열을 통해 여러개의 객체를 한개의 참조변수로 접근할 수 있다.
Time[] t = new Time[3];
t[0] = new Time();
t[1] = new Time();
t[2] = new Time();

// 사용하는 방법
t[0].hour = 4;

System.out.println(t[0].hour); // 4
Comments