본문 바로가기
Spec UP - Backend/나도코딩의 자바기본편

Chap_07. 클래스와 인스턴스 변수

by TIS_Ha 2023. 4. 20.
반응형

객체지향프로그래밍 (OOP : Object-Oriented Programming)

객체는 동물이나 사물 등의 개념(Ex. 컴퓨터, 그래픽카드, 마우스, 키보드 ... )

객체지향프로그래밍은 유지보수가 용이하고, 높은 재사용성을 장점으로 가진다.

 

클래스의 필요성에 대하여 이해해보자.

String[] items = {"CPU","RAM","하드디스크"};

위와 같이 같은 자료형에 대하여 여러 데이터가 필요한 경우 배열을 활용하게 된다.

그런데 아래와 같이 서로 다른 자료형의 데이터의 조합이라고 한다면 배열을 활용하기가 어렵다.

차량용 블랙박스 상품을 만든다고 생각해보자.

각 상품별로 모델명, 해상도, 가격, 색상 정보가 필요하다.

이 때 모델명, 해상도, 색상은 String 자료형이지만 가격(price)정보는 int 자료형을 사용했다.

각 자료형이 다르기 때문에 배열을 사용할 수 없어 별도의 변수명을 선언하였다.(ex: modelName, modelName2 .. )

하지만 이렇게 자료를 관리하게 되면 제품이 새로 출시될 때마다 변수를 별도로 생성해야하므로 비효율 적이다.

 

클래스를 활용한다면 어떻게 될까?  (클래스 이름은 주로 영어대문자로 시작하도록 생성한다.)

BlackBox라는 클래스를 생성하여 아래 예제를 이해해보자.

BlackBox라는 별도의 클래스를 생성하고 인스턴스 변수(인스턴스 필드)를 위와 같이 선언하였다.

BlackBox 클래스는 별도의 메소드 없이 인스턴스 변수만 선언되어 있는 상태이다.

public class BlackBox { //인스턴스변수(필드) 선언
    String modelName; //모델명
    String resolution; //해상도
    int price; //가격
    String color; // 색상
}

 

_02_InstanceVariables 라는 클래스를 생성 후 BlackBox 클래스를 통한 객체를 생성해보자.

(원래 클래스의 이름은 가급적 영어대문자로 시작하도록 생성하는 것을 권장한다)

객체를 선언하는 방법은 아래와 같다.

클래스명 객체이름 = new 클래스명(); 

// BlackBox b1 = new BlackBox();

위 예제와 같이 선언하면 BlackBox 클래스로부터 b1이라는 객체를 생성한 것이다.

b1 객체는 BlackBox 클래스의 인스턴스라고 부른다.

 

클래스는 설명서, 설계도의 역할을 하고 객체는 설명서로부터 만들어진 결과물을 의미한다.

예를들어 종이접기 책이 있고 내가 색종이를 접어 종이학을 만든다고 생각해보자.

종이접기책은 하나만 있어도 여러 색깔의 종이학을 여러개 접을 수 있다.

마찬가지로 클래스는 하나만 있더라도 객체는 여러개 생성하여 활용할 수 있다.( b1 객체 , b2 객체 )

또한 인스턴스변수는 각각 클래스로부터 만들어진 객체들마다 서로 다른 값을 가질 수 있다. 

    BlackBox 클래스의 인스턴스 변수 : modelName

    -> b1.modelName <> b2.modelName 값이 다름.

 

반응형

댓글