본문 바로가기
Backend/Java

자바의정석 ch6. 클래스의 정의

by 파피 2020. 12. 12.

클래스의 정의

1. 설계도

2. 데이터와 함수의 결합

3. 사용자 정의 타입

 

데이터와 함수의 결합 관점

변수 -> 배열 -> 구조체 -> 클래스

1. 변수는 하나의 데이터를 저장할 수 있는 공간

2. 배열은 같은 타입의 여러 데이터를 하나로 저장할 수 있는 공간

3. 구조체는 서로 관련된 여러 데이터 (다른 타입도 ok) 하나로 저장할 수 있는 공간

-> 서로 관련있는 것들을 하나로 묶어서 다루면 편리한 일이 많음

 

4. 클래스는 데이터와 함수의 결합 (구조체 + 함수)

-> 함수가 작업하는 데이터를 같이 묶어놓는 것이 편리하다~

 

사용자 정의 타입 관점

사용자 정의 타입으로 우리가 원하는 타입을 직접 만들 수 있다.

 

시간을 다루고싶은데 시간을 저장하는 타입이 없다고 가정해보자.

int hour;

int minute;

int second;

 

더 많은 시간을 다루고 싶을 때

int[] hour = new int[3];

int[] minute = new int[3];

int[] second = new int[3];

 

하지만 이것은 비객체지향적인 코드로

시, 분, 초가 하나로 묶이지 않는다는 문제가 존재한다.

 

따라서 세개의 변수를 하나로 묶어서 Time이라는 클래스를 만들면,

하나의 객체를 생성해서 시간을 표현할 수 있으며, 객체배열로도 묶을 수 있다.

 

class Time {

    int hour;

    int minute;

    int second;

}

 

Time t = new Time();

 

Time[] t = new Time[3];

t[0] = new Time();

t[1] = new Time();

t[2] = new Time();

 

이와같이 객체지향적인 코드로 만들면

서로 관련된 값들을 강하게 묶을 수 있는 장점도 있고,

코드가 간결해지고 유지보수하기도 편해진다 !

 

 

댓글