본문 바로가기
두고두고 볼 것

객체지향

by 문자메일 2022. 9. 20.

객체지향 4가지 특징

 

1. 추상화 : 공통의 속성이나 기능을 추출하는 과정

2. 다형성 : 하나의 타입으로 여러 종류의 객체를 참조할 수 있는 것

3. 캡슐화 : 관련있는 데이터와 기능을 묶고, 외부에는 메서드로 기능만 제공한다.

                  Tell, Don't ask 원칙. 객체에 원하는 기능을 요청해야한다. 값을 직접 가져와서 판단하면 안 된다.

                  캡슐화를 수행하여 외부에는 메서드로 기능만 제곰함으로써 객체가 어떤 data를 사용하여 어떻게 기능을 구현했는지는 감출 수 있다. (정보은닉 information hiding)

                  캡슐화를 수행함으로써 객체 내부에서만 로직 변경하면 되고, 해당 기능을 사용하는 외부에서의 변경사항은 적어진다.

4. 상속 : 부모 클래스의 필드나 메소드를 그대로 받아서 사용할 수 있게 된다.

 

객체지향의 5가지 원칙

1. 단일 책임의 원칙

2. 개방 폐쇄의 원칙

3. 리스코프 치환의 원칙

4. 인터페이스 분리의 원칙

5. 의존성 역전의 원칙

 

 

객체지향 패러다임

적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것

점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두 -> 결국 객체지향이란걸 하는 이유는 변경 필요(유지보수) 할 때 변경필요부분 최소화 위해서로 보임. => 변경에 유연해지기 위하여 == high cohesion, loose coupling

포인트

 클래스가 아닌 객체에 초점을 맞추는 것

 객체들에게 얼마나 적절한 역할과 책임을 할당하는지

 

 

설계 고민 순서

1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민

2. 객체들 간의 관계를 고민

3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기

(클래스는 공통적인 행동과 상태를 가지는 객체들을 추상화 한 것)

4. 협력을 설계

(적절한 객체에게 적절한 책임을 할당하여 협력을 설계)

5. 객체들을 포괄하는 타입에 적절한 책임을 할당

(클라이언트와 협력할 수 있는 퍼블릭 인터페이스를 정의)

6. 구현하기

 

※ 객체지향에서는 모든 객체들은 능동적인 존재이다.

 

 

 

TDD 개발 방법 순서.

일단 실패하는 테스트 코드 먼저 작성 -> 테스트 코드 동작하게 하는 간단한 코드 작성 -> 테스트 통과 -> 리팩토링 -> 테스트 통과 -> 리팩토링... 의 반복인듯 하다.

현재까지 생각하기에 TDD의 장점은 테스트 코드가 있어서 코드 변경에 대한 심리적&기능적 안정감을 받는다는 것이 큰 것 같다. 

 

'두고두고 볼 것' 카테고리의 다른 글

객체지향 설계 및 구현 예시  (0) 2022.11.02
일급 콜렉션  (0) 2022.09.22
트렌젝션  (0) 2022.07.02
JPA 변경 감지와 병합(merge)  (0) 2022.04.03
Java Collections, Iterator, Enumeration 인터페이스 간략 정리  (0) 2022.03.31

댓글