[개발자_객체지향_디자인패턴] 추상 타입과 유연함 개요

박상준·2024년 8월 15일
0
post-custom-banner

추상화?

  • 데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의하는 과정

로그 수집 기능 추상화

  1. FTP 파일 다운로드
  2. 소켓에서 데이터 읽기
  3. DB 테이블의 데이터 조회

  • 로그 수집이라는 추상적 개념으로 정의가 가능함.

타입의 추상화

  • CS 에서 추상화는 광범위하게 사용되고, 타입도 추상화의 대상이 됨.

로그 수집 클래스 추상화

// 구체적인 구현 클래스들
class FtpLogFileDownloader { /* ... */ }
class SocketLogReader { /* ... */ }
class DbTableLogGateway { /* ... */ }

// 추상화된 인터페이스
interface LogCollector {
    public void collect();
}

추상 타입 특징

  1. 오퍼레이션 시그니처만 정의함
  2. 실제 구현 제공 X
  3. 상세 구현을 알 수 없음
  4. 주로 인터페이스나 추상 클래스로 구현됨

코드 레벨의 추상

sum += mark;
  • CPU 가 수행하는 복잡한 과정을 mark
    • 컴퓨터는 해당 코드 수행시 메모리로부터 값을 읽어오고, 해당 값을 변경하여 다시 메모리에 값을 할당함
    • 우리는 코드상에서는 이런 상세 구현을 알 수 없음.
    • 컴퓨터가 수행하는 일련의 처리과정마저 이미 추상화 가 되어 있는 것이다.

모델링을 통한 추상

public class Employee {
    public void pay() {
        // 급여 지급 로직
    }
}
  • Employee 클래스는 개별 직원들을 추상화한 결과물임.

근데 Employee 가 Pay 한다는 의미는 추상화가 잘못되지 않았나 싶음..

직원이 왜 급여를 줘

추상화 이점

  1. 구체적인 구현에 의존하지 않기에 변경이 용이함
  2. 추상화된 인터페이스를 통해 다양한 구현체 사용가능
  3. 상세 구현을 숨기고 핵심 개념에 집중가능
profile
이전 블로그 : https://oth3410.tistory.com/
post-custom-banner

0개의 댓글