객체 지향 프로그래밍 입문 - 객체

REASON·2022년 11월 22일
0

OOP

목록 보기
1/1

절차지향으로 만들면 코드를 복사하게되고, 복잡해지고, 수정이 어려워지는 문제가 발생한다.

그렇다면 객체지향은 어떨까?

데이터프로시저를 객체로 묶는다.
특정 객체가 가지고 있는 데이터는 객체의 프로시저만 접근할 수 있게 된다.
이렇게 되면, 다른 객체에서는 해당 객체의 데이터로 바로 접근할 수 없게 된다.

객체

객체의 핵심은 기능 제공이다.
객체가 어떤 기능을 제공하는지가 핵심이 된다.
내부적으로 가진 필드(데이터)로는 정의하지 않는다.

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

기능 명세

기능을 어떻게 사용할 수 있는지 알 수 있어야 한다.
이것을 기능 명세라하는데 자바의 경우 메서드를 통해 기능을 명세하고 있다.

메서드는 이름, 파라미터, 리턴 타입이 있다.

public class VolumeController {
	public void increase(int inc){
    	...
    }
    
    public void decrease(int dec){
    	...
    }
    
    public int volume(){
    	...
    }
}

위 코드에서 increase라는 메서드 이름, inc라는 int 타입 파라미터 하나, 반환 타입은 없는 것을 알 수 있다.

기능 명세를 보통 메서드로 정의하게 된다.

객체와 객체

객체는 기능을 사용해서 서로 연결된다.
기능을 사용한다는 것은 메서드를 호출함을 의미한다.

VolumnController volCont = new VolumnController();

volCont.increase(4);

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

객체와 객체 상호 작용

객체 지향에서는 메시지라는 말을 종종 사용한다.
객체와 객체가 서로 상호작용하는 것을 메시지를 주고 받는다고 표현하곤 한다.

메시지는 메소드를 호출하는 것도 메시지, 리턴하는 것도 메시지, 익셉션도 메시지라고 표현한다.

이것은 객체일까?

public class Member {
	private String name;
    private Stirng id;
    
    public void setName(String name){
    	this.name = name;
    }
    
    public String getName(){
    	return name;
    }
}

실질적으로 이 필드는 필드에 접근하는 것과 차이가 없다.
특별한 기능이 없고 단순히 데이터에 바로 접근하는 것처럼 부가적인 기능이 없는 클래스는
객체보다는 데이터에 더 가깝다. 데이터 클래스라고도 많이 표현된다. (C에서는 구조체)
기능이 붙게되면 그때부터 객체라고 볼 수 있다.

핵심내용 : 객체는 기능으로 정의한다.


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

0개의 댓글