상세 컨텐츠

본문 제목

[정보처리기사 실기 공부] 소프트웨어 객체지향 설계

정보처리기사 공부지식

by 소란한소란 2024. 2. 23. 09:59

본문

728x90
  • 객체지향(OOP, Object Oriented Programming) (★)
    • 개념
      • 현실 세계의 유형, 무형의 모든 대상을 객체(Obejct)로 나누고, 객체의 행동(Method)과 고유한 값(Attribute)을 정의하여 설계하는 방법
  • 객체지향 구성요소 (★)
    • 클래스(Class)
      • 유사한 종류의 유형/ 무형의 존재를 속성과 연산을 정의해서 만든 틀
      • 다른 클래스와 독립적으로 디자인한다.
      • 데이터를 추상화하는 단위
    • 객체(Object)
      • 클래스의 인스턴스
      • 객체는 자신 고유의 속성을 가지며, 클래스에서 정의한 연산을 수행
      • 객체의 연산은 클래스에 정의된 연산을 공유함으로써 메모리를 경제적으로 사용
    • 속성(Attribute)
      • 객체들이 가지고 있는 고유한 데이터를 단위별로 정의한 것
      • 성질, 분류, 수량, 현재 상태 등에 대해 표현한 값
    • 메서드(Method)
      • 특정한 작업을 수행하기 위한 명령문의 집합
      • 객체가 가지고 있는 속성들을 변경할 수 있는 하나의 연산
    • 메시지(Message)
      • 객체에게 어떤 행위를 하도록 지시
      • 객체의 메서드를 호출함으로써 객체 간의 상호작용을 할 수 있도록 한다.

  • 객체지향언어의 특징 (★)
    • 캡슐화(Encapsulation)
      • 데이터(Attribute)와 데이터를 처리하는 행동(Method)을 하나로 묶은 것
      • 캡슐화된 객체의 세부내용은 외부에 은폐(정보은닉)되어 오류의 파급 효과가 적다.
      • 캡슐화된 객체들은 재사용이 용이
      • 객체들 간의 메시지를 주고받을 때, 해당 객체의 세부 내용을 알 필요가 없으므로 인터페이스가 단순해지고, 결합도가 낮아진다.
    • 정보은닉(Information Hiding)
      • 캡슐화의 가장 중요한 개념
      • 다른 객체에게 자신의 데이터를 숨기고, 자신이 정의한 행동만을 통하여 접근을 허용
    • 상속(Inheritance)
      • 상위클래스(부모클래스)의 모든 데이터와 행동을 하위 클래스가 물려받는 것
      • 상속을 이용하면 하위 클래스는 상위 클래스의 데이터와 행동을 자신의 클래스에 다시 정의하지 않아도 된다.
      • 하위 클래스는 상위 클래스에서 상속받은 요소 외에 새로운 데이터와 행동을 추가하여 사용할 수 있다.
      • 상위클래스의 요소들을 사용할 수 있기 때문에, 소프트웨어 재사용을 증대시키는 중요한 개념
    • 다형성(Polymorphism)
      • 하나의 메시지에 대해 각 객체가 가지고 있는 여러 가지 방법으로 응답할 수 있는개념
      • 객체에서 동일한 메서드명을 인자값의 유형이나 개수만 다르게 하는 오버로딩이 존재
      • 객체에서 상속받은 메서드를 재정의하는 오버라이딩이 존재
    • 추상화(Abstraction)
      • 어떤 실체로부터 공통적인 부분들만 모아놓은 것
      • 객체의 성질을 분해하고, 공통된 성질을 추출하여 슈퍼 클래스를 설정한다.

  • 객체지향 설계원칙(SOLID) (★)
    • 단일 책임 원칙 (SRP, Single Responsibility Principle)
      • 한 클래스는 하나의 책임만을 가져야한다.
    • 개방 폐쇄 원칙(OCP, Open-Closed Principle)
      • 확장에는 열려 있고, 수정에는 닫혀 있어야 한다.
      • 기존의 코드를 변경하지 않으면서(Closed) 기능을 추가할 수 있도록(Open) 설계
    • 리스코프 치환 원칙(LSP, Liskov Substitution Principle)
      • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다.
      • 부모 클랙스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 작동해야 한다.
    • 인터페이스 분리 원칙(ISP, Interface Segregation Principle)
      • 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
      • 자신이 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.
    • 의존성 역전 원칙(DIP, Dependency Inversion Principle)
      • 의존 관계를 맺을 때 자주 변화하는 것보다, 변화가 거의 없는 것에 의존해야 한다.
      • 구체적인 클래스보다 인터페이스나 추상 클래스와 의존 관계를 맺어야 한다.

  • 디자인패턴(Design Pattern) 개념
    • 객체지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어놓은 패턴들의 모음
    • 이미 만들어져서 잘 되는 것을 활용하여 재사용함으로써 프로그램 최적화에 도움을 준다.
    • 효율적인 코드를 만들기 위한 방법론
  • 디자인 패턴 구조
    • 패턴의 이름과 유형
      • 패턴을 부를 때 사용하는 이름과 패턴의 유형
    • 문제 및 배경
      • 패턴이 사용되는 분야 또는 배경, 해결하는 문제
    • 솔루션
      • 패턴을 이루는 요소들, 관계, 협동 과정
    • 결과
      • 패턴을 사용하면 얻게 되는 이점과 영향
    • 사례
      • 간단한 적용사례
    • 샘플 코드
      • 패턴이 적용된 원시코드
  • GoF 디자인 패턴
    • 각각의 디자인 패턴을 생성(Creational), 구조(Structural), 행위(Behavioral) 3가지로
    • 분류
    • 23가지의 디자인 패턴을 정리

 

 GoF 디자인 패턴 분류 (★)

  • 생성 패턴
    • 객체의 생성과 관련된 패턴
    • 객체의 인스턴스 생성을 추상화하는 방법
    • 객체의 생성과 참조 과정을 캡슐화하여 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 받지 않도록 한다.
  • 생성 패턴 종류

 

생성 패턴 5가지

  • 구조 패턴
    • 클래스나 객체들을 조합해 더 큰 구조로 만들 수 있게 해주는 패턴
    • 상속을 통해 클래스나 인터페이스를 합성하는 방법을 정의
  • 구조 패턴 종류

구조 패턴 7가지

  • 행위 패턴
    • 클래스나 객체들이 상호작용하는 방법을 정의한 패턴
    • 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하여 결합도를 최소화할 수 있도록 도와준다.
  • 행위 패턴 종류

행위패턴 11가지

 

이러한 설명은 객체지향 프로그래밍과 디자인 패턴에 대한 포괄적이고 구체적인 이해를 제공합니다.

2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!

 

728x90

관련글 더보기