[정처기 필기] 오답노트) 소프트웨어 설계 유형 / 객체 지향 설계 원칙 / 객체 지향 기법 / 디자인 패턴


🤷‍♀️ 정처기 필기 오답노트





✅ 소프트웨어 설계 유형


Q. 다음 ( ) 안에 들어갈 내용으로 옳은 것은?

컴포넌트 설계 시 ‘( )에 의한 설계’를 따를 경우, 해당 명세에서는
(1) 컴포넌트의 오퍼레이션 사용 전에 참이 되어야 할 선행 조건
(2) 사용 후 만족하여야 할 결과조건
(3) 오퍼레이션이 실행되는 동안 항상 만족하여야 할 불변 조건 등이 포함되어야 한다.

① 협약
② 프로토콜
③ 패턴
④ 관계


정답 : ①

🔎 소프트웨어 설계 유형

  • 자료 구조 설계(Data Structure Design)

  • 아키텍처 설계(Architecture Design)

  • 인터페이스 설계(Interface Design)

  • 프로시저 설계(Procedure Design)

  • 협약에 의한 설계(Design by Contract)

    • 클래스에 대한 여러 가정을 공유하도록 명세한 설계

    • 소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여 선행조건, 결과조건, 불변조건을 나타내는 설계 방법

      • 선행조건(Precondition) : 컴포넌트의 오퍼레이션 사용 전에 참이 되어야 할 조건

      • 결과조건(Postcondition) : 사용 후 만족되어야 할 조건

      • 불변조건(Invariant) : 오퍼레이션이 실행되는 동안 항상 만족되어야 할 조건



✅ 객체 지향 설계 원칙


Q. 객체 지향 설계 원칙 중, 서브 타입(상속받은 하위 클래스)은 어디에서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 함을 의미하는 원칙은?

① ISP(Interface Segregation Principle)
② DIP(Dependency Inversion Principle)
③ LSP(Liskov Substitution Principle)
④ SRP(Single Responsibility Principle)


정답 : ③

🔎 객체 지향 설계 원칙(SOLID)

  • 단일 책임의 원칙(Single Responsibility Principle)

    • 하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙

    • 객체 지향 프로그래밍의 5원칙 중 나머지 4원칙의 기초 원칙

  • 개뱡 폐쇄 원칙(Open Close Principle)

    • 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
  • 리스코프 치환의 원칙(Riskov Substitution Principle)

    • 서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙
  • 인터페이스 분리의 원칙(Interface Segregation Principle)

    • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙

    • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다는 원칙

  • 의존성 역전의 원칙(Dependency Inversion Principle)

    • 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙



✅ 객체 지향 기법 - 관계성


Q. 객체 지향 기법에서 클래스들 사이의 ‘부분-전체(part-whole)’ 관계 또는 ‘부분(is-a-part-of)’의 관계로 설명되는 연관성을 나타내는 용어는?

① 일반화
② 추상화
③ 캡슐화
④ 집단화


정답 : ④

🔎 객체 지향 기법 - 관계성

  • 객체 지향 기법

    캡슐화(Encapsulation) / 상속성(Inheritance) / 다형성(Polymorphism) / 추상화(Abstraction) / 정보 은닉(Information Hiding) / 관계성(Relationship)

  • 관계성(Relationship)

    • 두 개 이상의 엔터티 형에서 데이터를 참조하는 관계를 나타내는 기법

    • 종류로는 연관화, 분류화, 집단화, 일반화, 특수화가 있음

      • 연관화

        • is-member-of 관계

        • 클래스와 객체의 참조 및 이용관계

        • 같은 계층에 속하는 클래스들 사이의 상호 의존성을 보여주는 비계층적 관계성을 나타냄

      • 집단화

        • is-part-of 관계, part-whole 관계

        • 서로 관련 있는 여러 개의 객체를 묶어 한 개의 상위 객체를 만드는 특징

        • 일반화와 달리 상위 클래스의 성질들이 하위 클래스로 상속 되지는 않음

      • 분류화

        • is-instance-of 관계

        • 공통된 속성에 의해 정의된 객체 구성원들의 인스턴스

      • 일반화

        • is-a 관계

        • 클래스들 간의 개념적인 포함 관계

        • 상위 클래스의 특성을 하위 클래스가 상속받음

      • 특수화

        • is-a 관계

        • 상위 클래스의 특성들을 상속받으면서 하위 클래스에서 나름대로 수정을 가하고 자기 자신의 고유한 특성을 갖는 관계



✅ 디자인 패턴


Q. GoF(Gang of Four) 디자인 패턴에 대한 설명으로 틀린 것은?

① Factory method pattern은 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식이다.
② Prototype pattern은 prototype을 먼저 생성하고 인서턴스를 복제하여 사용하는 구조이다.
③ Bridge pattern은 기존에 구현되어 있는 클래스에 기능 발생 시 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 한다.
④ Mediator pattern은 객체 간의 통제와 지시의 역할을 하는 중재자를 두어 객체 지향의 목표를 달성하게 해준다.


정답 : ③

🔎 디자인 패턴 - Bridge pattern

  • 구조 패턴의 한 종류

  • 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴

  • 구현뿐 아니라, 추상화된 부분까지 변경해야 하는 경우 활용

🔎 디자인 패턴 - Adaptor pattern

  • 구조 패턴의 한 종류

  • 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴

  • 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 디자인 패턴

Categories:

정보처리기사