정보처리기사

20. 객체지향 설계

nayeonee__ 2023. 4. 4. 14:12

https://www.njobler.net/product/lecture/show/prod/10810

 

1억뷰 N잡

[연장 미포함] 흥나게 합격달성! 정보처리기사 실기

www.njobler.net

본 강의를 듣고 내용을 정리하며 적은 게시글 입니다. 

 

 

 

 

  • 객체지향(OOP, Object Oriented Programming)
    • 개념
      • 현실 세계의 유형, 무형의 모든 대상을 객체로 나누고, 객체의 행동과 고유한 값을 정의하여 설계하는 방법
    • 구성요소
      • 클래스
        • 유사한 종류의 유형/무형의 존재를 속성과 연산을 정의해서 만든 틀
        • 데이터를 추상화하는 단위
      • 객체
        • 클래스의 인스턴스
        • 객체는 자신의 고유의 속성을 가지며, 클래스에서 정의한 연산을 수행
        • 객체의 연산은 클래스에 정의된 연산에 대한 정의를 공유함으로써 메모리를 경제적으로 사용
      • 속성
        • 객체들이 가지고 있는 고유한 데이터를 단위별로 정의한것
      • 메서드
        • 어떤 특정한 작업을 수행하기 위한 명령문의 집합
      • 메시지
        • 객체에게 어떤 행위를 하도록 지시
        • 객체의 메서드를 호출함으로써 객체간의 상호작용을 할 수 있도록 한다.
    • 특징
      • 캡슐화
        • 데이터와 데이터를 처리하는 행동을 하나로 묶은 것
        • 캠슐화된 객체의 세부내용은 외부에 은폐(정보은닉)되어 오류의 파급효과가 적다
        • 캡슐화된 객체들을 재사용이 용이
        • 객체들간의 메시지를 주고 받을 때, 해당 객체의 세부 내용을 알 필요가 없으므로 인터페이스가 단순해지고, 결합도가 낮아진다.
      • 정보 은닉
        • 다른 객체에게 자신의 데이터를 숨기고, 자신이 정의한 행동만을 통하여 접근 허용
      • 상속
        • 상위클래스의 모든 데이터와 행동을 하위 클래스가 물려받는것
      • 다형성
        • 하나의 메시지에 대해 각 객체가 가지고 있는 여러 가지 방법으로 응답할 수 있는 개념
        • 객체에서 동일한 메서드명을 인자값의 유형이나 개수만 틀리게 하는 오버로딩이 존재
        • 객체 에서 상속받은 메서드를 재정의하는 오버라이딩이 존재
      • 추상화
        • 어떤 실체로부터 공통적인 부분들만 모아놓은 것
        • 객체의 성질을 분해하고, 공통의 성질을 추출하여 슈퍼 클래스를 설정함
    • 객체지향 설계 원칙
      • 단일 책임원칙 SRP, Single Responsibility Principle
      • 개방 폐쇄 원칙 OCP, Open Closed Principle
      • 리스코프 치환 원칙, LSP - Liskov Substitution Principle
      • 인터페이스 분리 원칙 - ISP, Inteterface Segregation Principle
      • 의존성 역전 원칙 - DIP, Dependency Inversion Principle
  • 디자인 패턴
    • 개념
      • 객체 지향 프로그래밍 설계를 할때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어 놓은 패턴들의 모음
    • 디자인 패턴 구조
      • 등등
    • GoF 디자인 패턴
      • 23가지의 디자인 패턴을 정리
      • 각각의 디자인 패턴을 생성, 구조, 행위 3가지로 분류
      • 패턴 종류 - 책 참고
        • 생성 패턴
          • 추상 팩토리 패턴
          • 빌더
          • 팩토리 메소드 - 객체 생성을 서브클래스로 위임
          • 프로토타입 - 원본 객체를 복사해서 객체를 생성
          • 싱글톤 - 오직 하나의 인스턴스
        • 구조 패턴
          • 어댑터 - 변환
          • 브리지 - 구현부에서 추상층 분리
          • 컴포지트 - 트리구조
          • 데코레이터 - 다른 객체 덧붙임
          • 퍼사드 - 앞단에서 서브시스템에 있는 객체들을 사용할 수 있게 함
          • 플라이웨이트 - 공유해서 메모리를 절약
          • 프록시 - 객체의 대리나 대체글을 제공
        • 행위 패턴
          • 책임 연쇄 - 연쇄적으로 묶음
          • 커맨드 - 요청을 객체의 형태로 캡슐화
          • 인터프리터 - 특정언어의 문법 표현을 정의
          • 반복자
          • 중재자
          • 메멘토 - 객체가 특정 상태로 다시 되돌아 올 수 있도록 내부 상태를 실체화
          • 옵저버 - 객체들이 변화를 통지받고 자동으로 갱신 될 수 있게 함
          • 상태
          • 전략 - 동일계열의 알고리즘을 정의하고 캡슐화하여 상호작용 가능하게 함
          • 템플릿 메소드 - 상위 클래스는 알고리즘의 골격만들 작성하고 구체적인 처리는 서브클래스로 위임
          • 방문자 - 개방폐쇄원칙을 적용하는 방법