클래스

객체지향이론 관점에서, '객체를 생성하기 위한 틀' 이자, '해당 객체에 대한 속성과 기능으로 정의 되어있는 것'이라고 설명할 수 있다.

잠깐, 그러면 프로그래밍적인 관점에서 클래스의 정의는 어떻게 될까?

변수 👉 배열 👉 구조체 👉 클래스

  • 변수: 하나의 데이터를 저장할 수 있는 공간
  • 배열: 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
  • 구조체: 서로 관련된 여러 데이터를 자료형의 종류에 관계없이 서로 관계가 깊은 변수들을 하나의 집합으로 저장할 수 있는 공간
  • 클래스: 데이터와 함수의 결합(구조체+함수)
데이터와 함수가 서로 관계가 없는 것 처럼 데이터는 데이터끼리, 함수는 함수끼리 따로 이루어져 왔지만 사실 함수는 주로 데이터를 갖고 작업을 하기 때문에 많은 경우가 있어서 데이터와 함수는 관계가 매-우 깊다🔥

그러므로, 객체지향 언어에서는 변수와 함수를 하나의 클래스에 정의해 서로 관계가 깊은 변수와 함수들을 함께 다룰 수 있게 한 것이다.

사용자 정의 타입에 의한 클래스 정의

  • 프로그래머가 직접 새로운 타입을 정의할 수 있다.
  • 서로 관련된 값을 묶어서 하나의 타입으로 정의한다.

✨ Likewise ✨

시간을 표현하기 위해 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 ~59
public class Time {
  private int hour;
  private int minute;
  private float second; 
public void setHour(int h) {
  if(h<0 || h>23) return;
  hour = h;
}
profile
Welcome to my velog! I love learning something new to build up my ability in development field. I don't think it is shame not to know, but it is shame to pretend to know about something you don't know.

0개의 댓글