Java 파트6-1. 클래스

1. 시작하기 전에


객체

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한것
  • 속성(필드) + 동작(메소드)로 구성

그림1


2. 객체와 객체 간의 상호작용


객체는 단독으로 사용될 수도 있지만, 객체 간의 상호작용이 일어날 수도 있다. 예를 들면, A객체가 B의 객체의 메소드를 이용하여 B의 기능을 이용하는 것이다.

  • 메소드를 통해 객체들이 상호작용
  • 메소드 호출 : 객체가 다른 객체의 기능을 이용하는 것

그림2

int result = Calculator.add(10,20);

그림3

사람이라는 객체가 Calculator라는 객체를 어떻게 이용하느냐? 사람은 Calculator가 가지고 있는 add라는 메소드를 알고 있다. 사람은 Calculator에게 Calulator가 가지고 있는 add메소드를 실행해달라고 호출한다.

3. 객체 간의 관계


그림4

  • 집합 관계 : 부품과 완섬품의 관계
  • 사용 관계 : 객체 간의 상호작용
  • 상속 관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성
  • 객체 지향 프로그래밍 : 집합/사용 관계에 있는 객체를 하나씩 설계한 후 조립하여 프로그램 개발


4. 클래스와 객체


클래스

  • 자바의 설계도
  • 인스턴스(instance = 객체) : 클래스로부터 만들어진 객체
  • 객체 지향 프로그래밍 단계
    • 클래스 설계 -> 설계된 클래스로 사용할 객체 생성 -> 객체 이용

그림5

클래스 선언

객체 구상 후 클래스 이름을 결정

  • 식별자 작성 규칙을 따름
    • 하나 이상의 문자로 이루어질 것
    • 첫 글자에는 숫자 사용 불가
    • $ _ 외의 특수 문자 사용 불가
    • 자바 키워드는 사용 불가
클래스 이름.java로 소스파일 생성
public class 클래스이름{

}

클래스로부터 객체 생성

  • new 클래스();
  • new 연산자로 메모리 힙 영역에 객체 생성
  • 객체 생성 후 객체 번지가 리턴된다. 클래스 변수에 저장하여 변수를 통해 객체 사용 가능
방법 1
클래스 변수;
변수 = new 클래스();

방법 2
클래스 변수 = new 클래스();

그림6

클래스 변수는 스택 영역에 생성되고 new에 의해서 생성된 객체는 힙 영역에 생성된다. 힙 영역에 생성된 객체의 번지가 클래스 변수의 값으로 대입되어 참조하게 된다.

클래스의 두 용도

  • 라이브러리(API : Application Program Interface) 클래스 : 객체 생성 및 메소드 제공 역할
  • 실행 클래스 : main 메소드 제공 역할

클래스 멤버

그림7


5. 정리하기


  • 클래스 : 객체를 만들기 위한 설계도
    • 관례적으로 첫 글자를 대문자로 사용하고, 여러 단어의 경우 단어의 앞글자마다 대문자 사용
  • 객체 : 클래스로부터 생성되며 new 클래스로 생성
  • new 연산자 : 객체 생성 연산자이며 생성자 호출하고 객체 생성 번지를 리턴
  • 클래스 변수 : 클래스로 선언한 변수이며 해당 클래스의 객체 번지가 저장됨
  • 인스턴스 : 어떤 클래스를 기준으로 만들어진 객체 -> 해당 클래스의 인스턴스
  • 클래스 멤버 : 클래스에 선언되는 멤버로 필드, 생성자, 메소드가 있음

© 2021. By Backtony