객체 지향 프로그래밍 입문(최범균) 1 - 객체지향, 캡슐화

좋은 코드란, 낮은 비용으로 변화할 수 있는 코드이다

이것은 1. 캡슐화 2. 추상화(다형성 지향)로 이루어낼 수 있다.

 

절차지향적 코드는 진행될수록 여러 조건문으로 복잡해질 수 있다.

객체지향적 코드객체가 제공하는 기능(메서드)이 중심이 되어 설계하는 것이다. 

- 호출, 리턴, 익셉션 등의 메세지의 교환

- 데이터 클래스(VO, DTO)는 객체가 아니다. 객체의 기능이 없이 값에만 접근하기 때문이다.

 

캡슐화는 데이터와 관련된 기능을 묶는 것이다.

데이터의 상세 내용을 외부에 감추고, 외부와 무관하게 객체 내부의 구현 변경이 가능하다.

객체의 기능을 비즈니스 로직이 아닌 객체 내부의 메서드로 구현하면,
기능에 변화가 요구될 때 해당하는 내부 기능을 변경하면 캡슐화를 사용한 곳에 별도의 수정이 필요하지 않다.

 

캡슐화의 규칙

1. 데이터를 요구하는 것이 아닌 데이터의 처리를 요구할 것
if(member.getAge() > 19) X
if(member.isAdult()) O

2. 메서드에서 생성한 객체의 메서드만 호출할 것
파라미터로 받은 객체의 메서드만 호출할 것
필드로 참조하는 객체의 메서드만 호출할 것

>> 연속적인 메서드 호출이 아닌 객체에 있는 하나의 메서드로 처리
member.isAdult() + member.isVIP() + member.addCoupon()으로 하나씩 처리하는 것보다
member.receiveBenefits()로 위 세 개 기능 묶기

 

 

객체는 속성과 기능으로 구성되어있다.
객체의 여러 기능을 참조하고 묶어서 새로운 기능에 사용하는 것은 객체 지향적인 방식이다.

 

 

 

 

댓글을 작성해보세요.