개발 초보를 위한 용어 정리(클래스)

sung eon·2022년 6월 13일
1

개념정리

목록 보기
3/3

클래스란?
Class (classification)
필요한 기능을 조합해서 '하나'로 묶고 이름을 붙여서 언제든 다시 불러와 편하게 사용할 수 있도록 만드는 기능
어떤 공통된 특징에 따라 분류하여 만든다.
작게 구분하는 단위인 클래스를 사용하여 코딩하는 것이 바로 객체지향형 프로그래밍 이다.

클래스 만들기
클래스를 만들 땐 클래스 이름과 파일 이름이 같아야한다
참치 종류: 일반/야채/고추
참치 01호, 참치 02호, 참치 03호 등 참치선물세트에 들어가는 참치 종류의 개수가 다름

class 참치선물세트 {
	int 일반;
    int 야채;
    int 고추;
}

인스턴스란?
클래스를 사용하여 선물세트인 참치 01, 02, 03 호를 만들 수 있는데 이 세트 각각을 인스턴스 (intance) 라고 부른다.
인스턴스는 만들 때 값을 변경해서 그때그때 다른 값을 가지게 할 수 있다.

인스턴스 만들기

참치선물세트 참치01= new 참치선물세트();
.
참치01.일반 = 20;
참치01.야채 = 0;
참치01.고추 = 0;
참치선물세트 참치03= new 참치선물세트();
.
참치03.일반 = 12;
참치03.야채 = 3;
참치03.고추 = 3;

클래스를 선언하는 파일과 그 클래스를 사용한 인스턴스를 선언하는 파일이 다르다.


생성자란?
클래스와 인스턴스 이름을 매번 쓰는 게 상당히 번거롭다. 그래서 이 반복되는 과정을 최대한 짧게 표현하는 방법으로 고안된 것이 바로 생성자 (Constructor)이다.

참치선물세트 참치03= new 참치선물세트();
참치03.일반 = 12;
참치03.야채 = 3;
참치03.고추 = 3;

참치선물세트 참치03= new 참치선물세트(12, 3, 3);

이렇게 인스턴스를 선언하고 값을 바로 넣음으로써 코드 4줄을 1줄로 표현 할 수 있다.
그런데 이때, 괄호 안의 첫 번째 값이 일반참치, 두 번째 값이 야채참치, 세 번째 값이 고추참치의 값이라는 것을 컴퓨터가 어떻게 알 수 있을까? 당연히 모른다! 그래서, 각각의 값이 어느 변수에 저장되어야 하는지 알려주어야 하는데 이 역할을 하는 것이 바로 생성자다.

생성자 만들기 / 단축키 cmd+n

  • 참치선물세트.java
class 참치선물세트 {
	int 일반;
    int 야채;
    int 고추;
	.
    참치선물세트(int x, int y, int z){  //여기서부터 생성자!!!
    	일반 = x;
        야채 = y;
        고추 = z;
    }
 }
  • 메인.java
    생성자 추가 전
참치선물세트 참치03= new 참치선물세트();
.
참치03.일반 = 12;
참치03.야채 = 3;
참치03.고추 = 3;

생성자 추가 후 ⇩

참치선물세트 참치03= new 참치선물세트(12, 3, 3);

생성자 덕분에 인스턴스 선언이 간단해졌다.

생성자는,

  • 필요에 따라 클래스당 하나 이상을 만들 수 있다.
    예) 참치01호는 야채참치, 고추참치가 없는 참치선물세트다. int는 기본값이 0
    • 참치선물세트.java
      class 참치선물세트 {
      	int 일반;
       int 야채;
       int 고추;
      	.
       참치선물세트(int x, int y, int z){ //생성자#1 - 참치03호에 대한 생성자
       	일반 = x;
          야채 = y;
          고추 = z;
       }
          .
       참치선물세트(int x){ //생성자 #2 - 참치01호에 대한 생성자
       	일반 = x;
          야채 = 0;
          고추 = 0;
       }
      }
    • 메인.java
      참치선물세트 참치03= new 참치선물세트(12, 3, 3);
      참치선물세트 참치01= new 참치선물세트(20);
  • method와 같이 생성자의 이름을 말하고, 외부에서 변수를 입력받고 그 안에서 무언가 행동이 일어 난다.

    그러나, method와 다른점은

    • 이름을 클래스 이름과 동일하게 지어야 한다.
    • 이름 앞에 return 값의 변수형이나 void를 입력하지 않는다.

초기화
클래스의 인스턴스를 처음 생성할 때, 각 메모리 그릇을 만들어주고 동시에 값을 넣는 작업을 초기화라고 한다.
그래서OOO 클래스를 초기화 한다는 말은, OOO 클래스 형태로 된 인스턴스 메모리 그릇 묶음을 만들고, 각 메모리 그릇에 초깃값을 넣어준다 라는 의미이다.


클래스 이름과 인스턴스 이름, 어떻게 구분?

  • 클래스 이름 첫 글자는 대문자
  • 인스턴스 이름 첫 글자는 소문자로!
profile
코베베

0개의 댓글