[정보처리기사실기] 객체지향 / 디자인 패턴

    반응형

    1과목. 소프트웨어 구축

    📒 16. 객체지향 설계

     

    계획 - 요구사항 분석 - 소프트웨어 - 구현 - 테스트 - 유지보수


    1. 객체지향(OOP, Object Oriented Programming)

    (1) 객체지향의 개념

    • 유형, 무형의 모든 대상을 객체(Object)로 나누고, 객체의 행동(Method)과 고유한 값(Attribute)을 정의하여 설계하는 방법

    (2) 객체지향 구성요소

    • a) 클래스(Class)
      - 데이터를 추상화하는 단위로, 속성과 연산을 정의해서 만든 틀(구조)
    • b) 객체(Object)
      - 클래스의 인스턴스
      - 자신 고유의 속성을 가지며, 클래스에서 정의한 연산을 수행
    • c) 속성(Attribute)
      - 객체들이 가지고 있는 고유한 데이터를 단위별로 정의한 것
    • d) 메서드(Method)
      - 어떤 특정한 작업을 수행하기 위한 하나의 연산
    • e) 메시지(Message)
      - 객체에게 어떤 행위를 하도록 지시

       

       정리 📌

      클래스의 구조 안에는 고유한 값인 속성과 안에서 행해지는 연산인 메서드가 존재하는데,

      구조를 통해서 만들어진 것이 객체, 메서드를 호출할 때 메시지를 보냄

       

    (3) 객체지향 언어의 특징

    • a) 캡슐화
      - 속성과 속성을 조작하는 메서드를 하나로 묶은 것, 정보은닉되어 오류의 파급 효과가 적음
    • b) 정보은닉
      - 공개된 메서드를 통해서만 내부 상태에 접근할 수 있게 함
    • c) 상속
      - 상위 클래스의 모든 속성과 메서드를 하위 클래스가 물려받는 것
    • d) 다형성
      - 오버로딩 : 객체에서 동일한 메서드명을 인자값의 유형이나 개수만 틀리게 하는 것
      - 오버라이딩 : 상속받은 메서드를 재정의하는 것 (상속 관계에서만 존재)
    • e) 추상화
      - 공통의 성질을 묶어놓은 것
      - 실체의 핵심적인 개념만을 추출하여 간결한 형태로 표현하는 것

    (4) 객체지향 설계 원칙(SOLID) ⭐

    • a) 단일 책임 원칙(Single)
      - 한 클래스는 하나의 기능만 수행해야 함
    • b) 개방 폐쇄 원칙(Open-Closed)
      - 확장에 대해서는 열려있고, 수정에 대해서는 닫혀있어야 함
      - 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계해야 함
    • c) 리스코프 치환 원칙(Liskov)
      - 상속 관계에서 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 함
    • d) 인터페이스 분리 원칙(Interface)
      - 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함
    • e) 의존성 역전 원칙(Dependency)
      - 자주 변화하는 것보다 변화가 거의 없는 것에 의존해야 함

     

    2. 디자인 패턴

    (1) 디자인 패턴의 개념

    • 미리 만들어져 잘 되는 것을 활용하여 재사용할 수 있도록 만들어놓은 패턴들의 모음

    (2) GoF 디자인 패턴

    • 23가지의 디자인 패턴을 정리하여 생성, 구조, 행위 3가지로 분류한 패턴

    (3) 디자인 패턴의 종류

    • a) 생성 패턴 : 객체 생성에 관련한 패턴
      종류 설명
      추상 팩토리 구체적인 클래스에 의존하지 않음
      빌더 복합 객체의 생성과 표현을 분리
      팩토리 메서드 객체 생성을 서브클래스로 위임하여 캡슐화함
      프로토타입 원본 객체를 복사함으로써 객체를 생성함
      싱글톤 인스턴스가 오직 하나임을 보장하고 어디서든 참조할 수 있음
    • b) 구조 패턴 : 클래스나 객체를 조합해서 더 큰 구조를 만드는 패턴
      종류 설명
      어댑터 클래스의 인터페이스를 다른 인터페이스로 변환하여 다른 클래스가 이용할 수 있음
      브리지 구현부에서 추상층을 분리
      컴포지트 객체들의 관계를 트리 구조로 구성
      데코레이터 어떤 객체에 다른 객체를 덧붙이는 방식
      퍼사드 서브시스템에 있는 인터페이스 집합을 하나의 통합된 인터페이스를 제공
      플라이웨이트 크기가 작은 여러 개의 객체를 공유할 수 있도록 메모리 절약함
      프락시 접근이 어려운 객체로의 접근을 제어하기 위해 객체의 대리나 대체글을 제공
    • c) 행위 패턴 : 객체나 클래스들이 상호작용하는 방법 및 책임을 정의하는 패턴
      종류 설명
      책임 연쇄 한 객체가 처리할 수 없는 요청을 다음 객체로 전달하는 방식
      커맨드 실행될 기능을 캡슐화함
      인터프리터 주어진 언어에 대해 해석
      반복자 데이터들이 연결되어 컬렉션에 대한 반복 작업 수행
      중재자 객체 간 캡슐화, 서로 직접 참조하지 않도록 중재자 객체를 통해 통신
      메멘토 객체의 상태 정보를 저장 및 복원
      옵서버 객체의 상태 변화를 관찰하여, 상태 변화가 있을 때마다 메서드를 통해 통지
      상태 객체의 내부 상태에 따라 동일한 작업이 상태에 따라 다르게 작동하도록 상태를 객체로 표현
      전략 알고리즘을 사용
      템플릿 메서드 상위클래스는 골격, 서브클래스는 구체적인 처리
      방문자 객체 구조를 이루는 원소에 대한 연산을 정의하는 데 사용

     

    참고자료

    흥달쌤,  '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
     

    1억뷰 N잡

    [1회 연장 포함] 흥!나게 합격 달성! 2024 정보처리기사 실기 클래스

    www.njobler.net

    반응형

    댓글