웹개발/JAVA

[JAVA] 객체지향 언어, 클래스와 객체

ss__jae2 2022. 1. 16. 17:06
반응형

1. 객체지향 언어

  • 기본 개념은 '실제 세계는 사물( 객체 )로 이루어져 있으며 발생하는 모든 사건들은 사물 간의 상호작용이다.'라는 것이다.
  • 실제 사물의 속성과 기능을 분석한 다음 데이터( 변수 )와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같다.
  • 객체지향 언어의 주요 특징
    • 코드의 재사용성이 높다.
      새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
    • 코드의 관리가 용이하다.
      코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
    • 신뢰성이 높은 프로그래밍을 가능하게 한다.
      제어자의 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.

2. 클래스와 객체

  • 클래스와 객체의 정의와 용도
    • 클래스란 객체를 정의해 놓은 것이며 클래스는 객체를 생성하는 데 사용된다.
    • 객체의 사전적인 정의는 실제로 존재하는 것이다.
    • 객체지향 이론에서는 사물과 같은 유형적인 것뿐만 아니라 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.
    • Ex)
      클래스 객체
      제품 설계도 제품
      TV설계도 TV
      붕어빵 기계 붕어빵
  • 객체와 인스턴스
    • 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스( instance )라고 한다.
    • TV는 TV 클래스의 인스턴스이다.
      TV는 객체이다.( 엄격히 구분할 필요는 없다. )
  • 객체의 구성요소 - 속성과 기능
    • 객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 속성은 기능의 집합이라고 할 수 있다.
    • 객체가 가지고 있는 속성과 기능을 그 객체의 멤버( member )라고 한다.
    • 클래스는 객체를 정의한 것이므로 클래스로부터 객체를 생성하면 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.

      * 속성 ( property ), 멤버 변수 ( member variable ), 특성 ( attribute ), 필드 ( field ),
         상태 ( state )

      * 기능 ( function ), 메소드 ( method ), 함수 ( function ), 행위 ( behavior )
      Tv클래스 정의, Tv클래스의 속성과 기능
  • 인스턴스의 생성과 사용
    • 클래스로부터 인스턴스를 생성하는 방법은 아래와 같이 여러 가지가 있다.

      클래스 변수명; 클래스의 객체를 참조하기 위해 참조 변수 선언
      변수명 = new 클래스명(); 클래스의 객체를 생성한 후, 객체의 주소를 참조 변수에 저장
    • 인스턴스는 참조 변수를 통해서만 다룰 수 있으며, 참조 변수의 타입은 인스턴스의 타입과 일치해야 한다.
      Tv클래스로부터의 객체 생성
    • 같은 클래스로부터 생성되었을지라도 각 인스턴스는 서로 독립적이다.
      같은 클래스이더라도 객체는 독립적으로 사용
    • 참조 변수는 STACK에 생기고 뒤에 new 클래스명();은 HEAP에 들어간다.
  • 객체 배열
    • 객체 역시 배열로 다루는 것이 가능하며 이를 '객체 배열'이라고 한다.
      객체 배열
      * 각 배열에 해당하는 인스턴스는 독립적으로 이루어져 있다.
  • 클래스의 또 다른 정의
    • 클래스 - 데이터와 함수의 결합
      변수 -> 배열 -> 구조체 -> 클래스
    • 클래스 - 사용자 정의 타입( user- defined type )
      프로그래밍 언어에서 제공하는 자료형 외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입이라고 한다.
반응형