객체지향이론 관점에서, '객체를 생성하기 위한 틀' 이자, '해당 객체에 대한 속성과 기능으로 정의 되어있는 것'이라고 설명할 수 있다.
잠깐, 그러면 프로그래밍적인 관점에서 클래스의 정의는 어떻게 될까?
변수 👉 배열 👉 구조체 👉 클래스
사용자 정의 타입에 의한 클래스 정의
시간을 표현하기 위해 3개의 변수 선언
int hour; int minute; float second;
만일 3개의 시간을 다뤄야 하는 경우
int hour1, hour2, hour3; int minute1, minute2, minute3; float second1, second2, second3;
이렇게 배열로 처리가 가능하더라도, 시간 데이터의 개수가 늘어나면 시/분/초가 서로 분리되어 있기 때문에 프로그램 수행과정에서 따로 뒤섞여 올바르지 않을 데이터가 가능성이 있다.
int[] hour = new int[3]; int[] minute = new minute[3]; float[] second = new second[3];
이런 경우, 시/분/초를 하나로 묶는 사용자 정의 타입, 즉 이렇게 클래스를 정의해 사용하여야 하는 것이다.
class { int hour; int minute; float second; }
하지만, 시간 데이터는 다음과 같이 추가적인 제약조건을 주어야한다.
- 시/분/초는 모두 0보다 크거나 같아야 한다
- 시의 범위는 0 ~ 23, 분과 초의 범위는 0 ~59public class Time { private int hour; private int minute; private float second; public void setHour(int h) { if(h<0 || h>23) return; hour = h; }