[2022.07.20] OOP 절차지향과 객체지향 - 객체란?

REASON·2022년 7월 20일
0

JAVA

목록 보기
4/5

객체지향은 캡슐화, 다형성(추상화)로 개발 비용을 낮춰줄 수 있다.

절차지향과 객체지향

1. 절차 지향

절차지향은 데이터를 여러 프로시저가 공유하는 방식이다.
시간이 흐를수록 데이터를 공유하는 방식은 구조를 점점 복잡하게 만들어 수정이 어려워 진다.
동일한 데이터를 사용하는 코드가 한두군데가 아니라면 코드의 조건이 많아져서 점점 복잡해지고 해당 코드를 사용하는 코드를 모두 수정해줘야 하므로 시간도 오래 걸린다.

2. 객체지향

데이터와 프로시저를 객체라는 단위로 묶어서 특정 객체가 가지고 있는 데이터는 그 객체의 프로시저만 접근할 수 있도록 한다. 즉, 다른 객체에서는 해당 객체의 데이터에 바로 접근을 하지 못하게 된다.
예를 들면, A객체가 B객체의 데이터에 접근하지 못한다는 것이다.

그러면 어떻게 객체끼리 데이터를 주고 받나?
사실 데이터를 주고 받는건 아니고 객체는 프로시저를 이용해서 외부에 기능을 제공하게 된다.
다른 객체의 프로시저를 호출하는 방식으로 서로 연결이 된다.
처음에는 데이터 프로시저를 알맞게 객체로 묶어야 해서 묶는 과정 자체가 입문자에겐 어려울 수 있다.
시간이 흐를수록 객체 지향의 장점인 코드 수정이 수월하다는 장점이 있다.

객체

객체는 물리적으로 데이터와 프로시저이지만, 그 객체를 사용하는 입장에서는 기능으로 정의가 된다.
객체의 핵심은 그 객체가 어떤 기능을 제공하느냐로 정의하게 된다. 즉, 내부적으로 가진 필드(데이터)로 정의하지 않는다.

예를 들면, 회원 객체가 있을 때 암호 변경, 차단 여부 확인 등의 기능을 제공 하고 있고, 소리 제어기 객체의 경우 소리 크기 증가, 감소 기능을 제공한다고 정의할 수 있다.

객체는 기능으로 정의를 한다.

기능을 사용하려면 어떻게 사용하는지 알아야 하는데 이것을 기능 명세라 한다.

자바의 경우 메소드를 이용해서 기능 명세를 하고 있다.
이름, 파라미터, 리턴 타입을 통해서 정의를 하는 것이다.

객체와 객체는 기능을 사용해서 서로 연결을 한다.
기능을 사용한다는 것은 메서드 호출 을 의미한다.
특정 객체에서 다른 객체의 메소드를 호출해서 사용한다는 것이다.
기능을 사용한다는 것은 객체와 객체가 서로 연결된다는 것을 의미하기도 한다.

메세지

객체와 객체가 서로 상호 작용 하는 것을 메시지를 주고 받는다고 표현한다. 메서드 호출, 리턴, 익셉션도 메시지라고 표현을 한다.

객체 사이 메시지라는 용어는 메서드를 호출하거나 리턴하거나 하는 것을 의미한다.

객체는 기능으로 정의한다.

모든 class는 객체일까?
단순히 데이터에 접근만 하고 부가적인 기능이 없는 클래스는 객체보다 데이터에 가깝다.
여기에 기능이 붙게 되면 객체라고 볼 수 있다.


참고 자료
객체 지향 프로그래밍 입문

0개의 댓글