본문 바로가기

java

자바강의 5일차

[객체지향 언어(클래스와 객체)]

 

1. 객체지향 언어

   - 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며 발생하는 모든 사건들은 사물간의 상호작용이다'라는 것이다.

   - 실제 사물의 속성과 기능을 분석한 다음 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같다.

   - 객체지향 언어의 특징

  ① 코드의 재 사용성이 높다.

       - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.

   ② 코드의 관리가 용이하다.

        - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.

    ③ 신뢰성이 높은 프로그래밍을 가능하게 한다.

        - 제어자와 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,

          코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.

 

 2. 클래스와 객체

  2-1) 클래스와 객체의 정의와 용도

         - 클래스란 객체를 정의해 놓은 것이며 클래스는 객체를 생성하는데 사용된다.

         - 객체의 사전적인 정의는 실제로 존재하는 것이다.

         - 객체지향이론에서는 사물과 같은 유형적인 것뿐만 아니라 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.

 

클래스 객체
제품설계도 제품
Tv설계도 Tv
붕어빵기계 붕어빵

 

   2-2) 객체와 인스턴스

          - 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며,

            어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.

            Tv는 Tv클래스의 인스턴스이다.

            Tv는 객체이다. (엄격히 구분할 필요는 없다.)

 

   2-3) 객체의 구성요소 - 속성과 기능

          - 객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 속성은 기능의 집합이라고 할 수 있다.

          - 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(member)라고 한다.

          - 클래스는 객체를 정의한 것이므로 클래스로부터 객체를 생성하면 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.

 

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

       * 기능(function), 메소드(method), 함수(function), 행위(behavior)

 

   2-4) 인스턴스의 생성과 사용

         - 클래스로부터 인스턴스를 생성하는 방법은 아래와 같이 여러가지가 있다.

           클래스 변수명;                              // 클래스의 객체를 참조하기 위한 참조변수 선언

           변수명 = new 클래스명();             // 클래스의 객체를 생성한 후, 객체의 주소를 참조변수에 저장

           Tv t;

           t = new Tv();

 

         - 인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.

         - 같은 클래스로부터 생성되었을지라도 각 인스턴스는 서로 독립적이다.

   

 

2-5) 객체배열 (실습)

          - 객체 역시 배열로 다루는 것이 가능하며 이를 '객체 배열'이라고 한다.

   

2-6) 클래스의 또 다른 정의

          ① 클래스 - 데이터와 함수의 결합

                    변수 -> 배열 -> 구조체 -> 클래스

           ② 클래스 - 사용자 정의 타입 (user-defined type)

                - 프로그래밍언어에서 제공하는 자료형 외에 프로그래머가 서로 관련된 변수들을

                  묶어서 하나의 타입으로 새로 추가하는 것을 사용자정의타입이라 한다.

 

[변수와 메소드]

1. 변수와 메소드

        1-1) 선언 위치에 따른 변수의 종류

                - 변수는 클래스 변수, 인스턴스변수, 지역변수 총 세가지가 있다.

                - 변수의 종류를 결정짓는 중요한 요소는 '변수의 선언된 위치'이므로 변수의 종류를 파악하기 위해서는

                  변수가 어느 영역에 선언되었는지를 확인하는 것이 중요하다.

                - 멤버변수를 제외한 나머지 변수들은 모두 지역변수이므로 멤버변수 중 static붙은 것은 클래스변수,

                  붙지 않은 것이 인스턴스 변수이다.

변수의 종류 선언 위치 생성시기
클래스변수 클래스 영역 클래스가 메모리에 올라갔을 떄
인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때
지역변수 클래스 영역 이외의 영역
(메소드,생성자,초기화블록 내부)
변수 선언문이 수행되었을 때

 

① 인스턴스 변수(instance variable)

   - 클래스 영역에 선언되며 클래스의 인스턴스를 생성할 때 만들어진다.

   - 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.

 

② 클래스 변수(class variable)

   - 클래스 변수를 선언하는 방법은 인스턴스 변수 앞에 static을 붙이기만 하면 된다.

   - 클래스 변수는 모든 인스턴스가 공통된 저장공간 (변수)을 공유하게 된다.

   - 클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 언제라도 바로 사용할 수 있는 특징이 있으며

     '클래스이름.클래스변수'와 같은 형식으로 사용된다.

 

③ 지역 변수(local variable)

   - 메소드 내에 선언되어 메소드 내에서만 사용가능하며 메소드가 종료되면 소멸되어 사용할 수 없게 된다.

   - for문 또는 while문의 블록 내에 선언된 지역변수가 선언된 블록{} 내에서만 사용 가능하며

     블록을 벗어나면 소멸되어 사용할 수 없게 된다.

 

  * 인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만,

    클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 가진다.

'java' 카테고리의 다른 글

자바강의 7일차  (0) 2024.01.14
자바강의 6일차  (1) 2024.01.13
자바강의 4일차  (0) 2023.12.30
자바강의 3일차  (1) 2023.12.27
자바강의 2일차  (1) 2023.12.27