Hyunebee

객체 지향 프로그래밍 - 클래스와 객체, 변수와 메소드 본문

카테고리 없음

객체 지향 프로그래밍 - 클래스와 객체, 변수와 메소드

Hyunebee 2022. 2. 27. 16:34

객체 지향 언어

 객체 지향 언어의 특징

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

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

 3. 신회성이 높은 프로그래밍을 가능하게 만든다. 

 

 앞으로 어떻게 위 3가지를 가능하게 하는지 알아보자.

 

클래스와 객체 

클래스의 정의 : 객체를 정의해 놓은 것이다.

클래스의 용도 : 객체를 생성하는데 사용한다.

 

객체 : 실제로 존재하는 것, 사물 또는 개념 

 

ex) TV 설계도와 TV

    우리가 TV설계도(클래스)는 TV(객체)를 만들기 위해서 사용된다. 

 

위의 예처럼 클래스를 객체로 만드는것을 인스턴스화 라고 하고 그 클래스로 인해 만들어진 객체를 인스턴스라고 한다. 

 

객체 : 속성과 기능으로 이루어져 있다. 

속성 : 멤버변수, 특성, 필드, 상태

기능 : 메서드, 함수, 행위

 

ex) TV의 속성은 크기 or 너비 or 제조사 등등 이고 TV의 기능은 채널변경 or 볼륨 조정 등등이 있다. 

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

 

이런 경우는 어떨까?

tv1과 tv2는 참조 변수로써 객체에 대한 주소값을 가지고 있다. tv1는 tv2의 객체의 주소값을 참조하게 된다. 

이렇게 된다면 tv1이 원래 참조하고있던 주소값을 참조하는 변수가 없기 때문에 해당 인스턴스는 자바의 가비지 컬렉터에 의해 자동으로 삭제된다.

 

 

 

클래스의 또다른 정의

위에서는 객체 지향 관점에서 클래스의 정의를 보았다. 이번엔 프로그래밍 관점에서 클래스의 정의를 보자.

 

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

우리는 하나의 데이터를 저장하기 위해서 변수를 사용했고 이 변수를 더욱 효율적으로 저장하기 위해서 같은 종류의 데이터배열로 저장하기 시작했다. 그리고 같은 종류의 데이터뿐만 아니라 여러 종류의 데이터를 한번에 사용하기 위해 구조체라는 저장공간을 만들었다. 마지막인 클래스는 이러한 데이터와 함수를 결합한 것이다.

 

변수와 메서드 

변수의 종류 선언위치 생성시기
클래스 변수 클래스 영역 클래스가 메모리에 올라갔을떄
인스턴스 변수 인스턴스가 생성될때
지역 변수 클래스 영역 이외 (메서드, 생성자) 변수 선언문이 시작될때 

 

클래스 변수 : 독립적인 저장공간을 가지는 인스턴스 변수와는 다르게 static을 붙혀줌으로써 공통된 저장 공간을 공유하게 된다. 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성일 경우 클래스 변수로 사용해야 한다.  그리고 클래스가 메모리에 올라갔을때 생성됨으로 인스턴스를 생성하지 않고 참조할 수 있다. 

 

메소드 : 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것

메소드는 크게 선언부구현부로 나눌 수 있다.

 

메소드의 선언부 : 반환타입 메서드이름 매개변수 선언(입력)으로 구성 이때 매개변수는 메소드안에서 선언된 것이기 때문에 지역변수이다.