자바(JAVA)/미니 프로젝트 & 기초 공부

Java 기초 또 다시 공부하기 8일차 - 객체 지향 프로그래밍(객체의 특징, 객체 간의 관계, 클래스와 인스턴스

개발학생 2025. 6. 4. 16:38
반응형

1. 객체의 특징

  • 객체(Object): 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중, 고유 속성을 가지고 있어 식별 가능한 것
    -> 속성과 동작[필드(Field)와 메서드(Method)]으로 구성되어 있음
  • 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(object modeling)이라 함
  • 객체들은 각각 독립적으로 존재하면서, 메서드 호출을 통해 다른 객체의 기능을 이용하며 동작
  • 객체 지향 프로그래밍은 만들고자 하는 객체를 모델링하고,
    집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 것으로
    아래와 같은 단계로 진행됨 
    1. 클래스 생성
    2. 설계된 클래스로 사용할 객체 생성
    3. 생성된 객체 이용 

2. 객체 간의 관계

객체 간의 관계 도식화 이미지

1) 집합 관계

  • 한 객체는 부품, 다른 객체는 완성품에 해당하는 관계

2) 사용 관계

  • 한 객체가 다른 객체의 메서드를 호출하여 원하는 결과를 얻는 관계

3) 상속 관계

  • 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계
    -> 상위 객체는 종류, 하위 객체는 구체적인 사물 정도로 생각

3. 클래스와 인스턴스

  • 클래스(class): 메모리에서 사용하고 싶은 객체가 있을 때, 해당 객체를 설계하는 설계도에 해당
    -> 객체 생성을 위한 필드와 메서드를 정의함 
  • 인스턴스(instance): 클래스로부터 만들어진 객체
    -> 한 클래스로부터 여러 개의 인스턴스를 만들 수 있음 

1) 클래스 선언

  • 클래스명(식별자, 객체의 대표 이름) 작성 규칙
규칙 예시
하나 이상의 문자로 이루어져야 함 Car, SportsCar
첫 글자에는 숫자가 올 수 없음 3Car(x)
'$', '_' 이외의 특수문자 사용 불가 @Car(x), %Car(x)
자바 키워드 사용 불가 int(x), for(x)
  • 클래스 선언 방법
public class 클래스명 {

}

// 한 소스 파일에 2개 이상의 클래스 선언도 가능
class 클래스명2 {

}

2) 객체 생성과 클래스 변수

  • 클래스로부터 객체를 생성하려면 아래와 같이 new 연산자 사용
    -> 객체는 메모리 힙(heap) 영역에 생성되는 것
new 클래스명();
클래스명 변수명 = new 클래스명();
  • 클래스로부터 객체를 생성하고 리턴된 객체의 번지를 변수에 저장하면, 변수가 객체를 참조하게 되는 것
    -> 한 클래스에서 서로 다른 여러개의 독립된 객체 생성 가능 

3) 클래스의 두 가지 용도(두 용도를 모두 포한한 한 클래스를 만드는 것도 가능)

  • 라이브러리(API: Application Program Interface)용: 다른 클래스에서 이용하는 용도(대부분의 클래스)
  • 실행용: 프로그램의 실행 진입점인 main() 메서드를 제공하는 용도

4) 클래스의 구성 멤버

public class 클래스명 {
  // 필드
  int fieldName;
  
  // 생성자
  클래스명() {...}
  
  // 메서드
  void 메서드명() {...}
}

(1) 필드(Field)

  • 객체의 고유 데이터/부품 객체/상태 정보를 저장하는 곳
  • 선언 형태는 변수와 비슷하지만, 필드 != 변수
    -> 변수와는 다르게, 생성자와 메서드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재

(2) 생성자(Constructor)

  • new 연산자로 호출되는 특별한 중괄호 {} 블록
  • 객체 생성 시 초기화하는 역할
    -> 필드 초기화 혹은 메서드 호출로 객체 사용 준비
  • 클래스 이름으로 되어 있으며, 메서드와 다르게 리턴 타입이 없음

(3) 메서드(Method)

  • 객체의 동작에 해당하는, 이름이 있는 실행 중괄호 {} 블록
    -> 호출 시 중괄호 블록의 모든 코드들이 일괄 실행됨
  • 필드를 읽고 수정함과 동시에, 다른 객체를 생성하여 다양한 기능 수행 
  • 객체 간의 데이터를 전달하는 수단
    -> 호출한 외부로부터 매개 값을 받아 실행에 이용하고, 실행 후 결과 값을 호출한 외부로 리턴

 

 

 

 

 

반응형