본문 바로가기

자바 (Java)/요약

Chpt 6. 객체 지향 프로그래밍 - 주제 1. 클래스와 객체

728x90

1. 객체 지향 언어의 개념과 특징

프로그래밍은 절차적에서 객체 지향적으로 그 흐름이 바뀌었는데 이와 같은 흐름을 반영하는 언어를 객체 지향 언어라고 한다. 어렵게 생각할 필요가 없고 다음과 같다고 생각하면 된다.

 

객체 지향 언어 = 프로그래밍 언어 + 객체 지향 개념 (규칙)

 

객체 지향 개념은 규칙이기 때문에 외워야 한다. 다음 4가지 핵심 규칙을 외우도록 하자.

 

(1) 캡슐화
(2) 상속
(3) 추상화
(4) 다형성 ⭐⭐⭐⭐⭐

 

객체 지향 언어는 다음과 같은 장점이 있다.

 

(1) 코드의 높은 재사용성 = 중복 제거
(2) 유지 보수의 용이

 

2. 클래스와 객체

 

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

 

그렇다면 객체가 무엇인지 알아보기 앞서 클래스와 객체의 정의 그리고 용도를 먼저 알아보자.

 

  클래스 예) 설계도 객체 예) 제품
정의 (1) 설계도
(2) (관련 있는) 변수 + 메서드 모음
(3) 사용자 정의 타입
사물 또는 개념
용도 객체 생성 속성 또는 기능을 사용

 

객체의 속성, 기능을 클래스에서는 각각 멤버 변수, (멤버) 메서드라고 한다. 그렇기 때문에 클래스가 관련있는 변수 + 메서드의 모음이라는 것이다. 정의 (2)에 따르면 배열도 변수만 있는 객체이다. 이 표는 외우도록 하자.

 

[참고] 객체 vs. 인스턴스

같은 의미로 생각하고 사용해도 무방하다. 좀 더 엄밀히 말하면 객체가 인스턴스보다 포괄적인 의미를 갖고 있다. 객체는 모든 인스턴스를 대표하지만 인스턴스는 특정 클래스로부터 생성된 것이라는 의미가 강조된다. 

 

[그림 1]

 

[예 1]

 

객체 인스턴스
책상은 객체다. 책상은 인스턴스이다.
이 책상은 책상 클래스의 객체이다. 이 책상은 책상 클래스의 인스턴스이다.

 

강조된 부분이 좀 더 자연스러운 표현이다.

 

2) 객체의 생성과 사용

 

결국 2.-1)에서 강조하고 싶었던 이야기는 클래스는 객체를 만들고, 만들어진 객체를 사용하기 위해서 쓰일 도구일 뿐이라는 것이다. 배열도 변수를 선언 후 생성, 대입해주어야 하는 것처럼 객체를 사용 시 참조 변수를 선언 후 생성한 객체를 대입해주어야 한다. 정리하자면 다음과 같다.

 

(1) 클래스(설계도) 작성
(2) 참조형 변수(리모콘) 선언
(3) 객체(제품) 생성
(4) (3)을 (2)에 대입 (제품을 리모콘과 연결)
(5) 객체(제품) 사용
      - 변수 사용: 참조형 변수.멤버 변수
      - 메서드 사용: 참조형 변수.메서드 이름

 

배열도 객체이기 때문에 (5)와 같이 사용했었다. 괄호 안의 단어로 바꿔서 생각하면 이해가 쉬울 것이다. 또한 다음의 규칙을 외우자.

 

(1) 객체로 생성한 인스턴스(제품)는 참조형 변수(리모콘)를 통해서만 다룰 수 있다.
(2) 참조형 변수의 타입 = 인스턴스의 타입
(3) 참조형 변수와 인스턴스의 관계
     - 일대일 (가능)
     - 일대다 (불가)
     - 다대일 (가능)

 

3) 객체 배열

 

객체 배열은 참조 변수의 배열이다. 배열을 선언, 생성만 하고 객체를 저장하지 않는 실수를 많이 하니 이 점을 유의하도록 하자. 배열과 마찬가지로 객체 배열도 같은 타입의 객체만 저장이 가능하다.

반응형