본문 바로가기

정보처리기사/필기

1과목 - 객체지향 설계와 디자인 패턴

  • 객체지향 설계
    • 객체 
      • 데이터와 행위 또는 속성과 메소드의 집합이다.
    • 객체지향 방법론의 용어
      • 객체 - 등급
      • 클래스 - 공통속성과 행위를 가진 객체이며, 여러개의 객체가 존재한다.(밑에 예제) 그리고 객체를 인스턴스라고도함
      • User user = new User(); user객체 생성, user.name으로 메모리에 할당하여 인스턴스화함
        • 에메랄드, 골드, 다이아몬드 등급이 클래스이며,
          • 등급안에 속성은 연봉, 점수 등의 데이터를 말한다.
          • 등급안에 메소드는 사다, 팔다, 먹다 등에 행위를 말한다.
      • 속성 - 객체들의 값/데이터
        • 연봉, 점수, 이름
          • Int Salary = 5000
          • Int Score = 2000
          • String Name = 이충현
      • 메소드 - 행위
        • 점수를 얻다.
          • public void setScore() {}
        • 돈을 벌다.
          • public void setEarn() {}
      • 상속 = Inheritance : 그대로 이어 받아서 사용
        • extends
        • 하나의 부모 클래스로부터 상속 받을 수 있음
      • 다형성
        • 오버로딩
          • 같은 이름의 메소드
          • 매겨변수의 타입과 갯수를 다르게함
        • 오버라이딩
          • extends하여 부모의 것을 재정의함
      • 캡슐화
        • 자료구조(속성)와 연산을 클래스안에 묶어 놓은 것 또는 하나로. 취급, 불법적인 사용으로부터 자료를 보호
        • 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈을 Object(객체)
        • {} 경계선을 둠
        • 예제 
          • public void withdrawal () {
            • 위에서 선언한 변수(money)로 즉, 데이터와 위에 withdrawal 함친 것
            • score = money + score;
          • }
      • 추상화
        • 복잡한 현실 세계를 모델링하는 과정
          • 컵, 차 와 같이 객체를 추상화하는 것 즉, 차라고하면, 차는 여러종류를 의미하며, 어느 특정에 대한 의미는 아니기에 모호하다.
        • 추상기법의 종류
          • 제어 추상화
          • 저장 추상화
          • 과정 추상화
      • 정보은닉
        • 자료를 숨기고, 연산을 통해서 접근이 가능하다.
        • 속성과 오퍼레이션을 일부 감추어 객체의 외부에서 접근 불가능하도록
    • 객체 지향의 방법론
      • 럼바우(Rumbaugh)
        • 객동기
        • 객상자
          • 객체지향프로그램
          • 상태다이어그램
          • 자료흐름도
        • 객체모델링 또는 정보모델링
      • 부치법
        • UML프로그램 사용
        • 거시적 관점과 미시적 관점
      • 코드와 요던
        • E-R다이어그램
      • 야콥슨
        • 유스케이스
    • 객체지향의 설계 원칙
      • S - SRP
        • 단일 책임의 원칙 - 한 클래스에 하나의 책임(기능)만 가진다.
      • O-OCP
        • 개방과 패쇄의 원칙 - 새로운 변경사항이 있을 때 확장에는 쉽고, 객체를 직접 수정에는 닫혀있어야 한다.
      • L-LSP
        • 리스코프워 치완 원칙 - 정확성을 깨뜨리지 않으면서 부모 타입으로 바꿀 수 있어야 한다.(다형성)
          • 더 자세한 의미 : 부모 클래스는 차(Car)에 관련된 부분인데, 그외 상반되는 보험에 상속을 받아서 연관없이 사용되면 안된다.
      • I-ISP
        • 인터페이스의 원칙 - 인터페이스를 용도에 맞게 적합하게 분리되어야 한다.
          • admin - 관리 권한에 대한 인터페이스
          • Join- 가입에 대한 인터페이스
      • D-DIP
        • 의존의역전원칙 : 구체화에 의존하는 것이 아니라 추상화에 의존해야한다.
          • 직접 클래스에 의존하지 말고, 그 상위 추상 클래스나 인터페이스에 상속받아야 한다.
            • Impl(구현)와 service(역할)
              • 구현에 의존하는 것이 아니라 역할에 의존해야함
    • 디자인 패턴
      • GoF(Gang of Four)
        • 생성
          • 추상 팩토리 - 객체를 그룹화 할때 주로 사용 / 연관성 있는 객체끼리 모아서 추상화하는 단계
          • 팩토리 메서드 - 상위 생성은 아니고, 정의만 내리고 서브(자식) 클래스에서 생성한다. / 가성 생성자(Vitual Contructor) 패턴
          • 빌드 - 객체 생성코드와 객체의 사용코드를 분리하여 생성
          • 프로트타입 - 기존의 인스턴스 그대로 복제
          • 싱글톤 - 한 클래스에 하나의 인스턴스를 생성해서 여러번 호출 되도록함
        • 구조
          • 브릿지 - 구현부와 추상부를 분리하는 방법
          • 어댑터 - 두개 클래스를 중간에서 (호환을 시켜주는 구조 /  맞추어 주는 구조 / 서로 다른 클래스들을 일치시켜주는 구조)
          • 데커레이터 - 새로운 장식을 통해 새로운 느낌을 부여하는 구조
          • 프록시 - 직접 접근하는 것이 아니라, 프록시 객체를 통해서 상호작용함 특정 객체에 접근을 제한 할 수 있는 구조
          • 컴퍼지트 - 트리구조로 전체와 부분을 서로 관계를 나타내며, 계층 구조로 개별적을 다루는 설계 패턴
        • 행위
          • 옵서버 - 1대다관계로 하나의 객체가 변함으로써 다른 객체도 상태가 변한다.
            • React참고
          • 스테이트 - 객체 상태에 따라 객체 행위 내용이 변경할 수 있다.
            • 자리에 있는 주문 키오스크
          • 스트래터지 - 전략을 의미하며, 미리미리 약속된 캡슐화로 객체에 따라 상태를 전달함
            • 길찾기
          • 방문자 - 객체의 구조는 변경되지 않는다. 하지만, 방문자에 요구에 따라 주도하여 이끌어감
            • 박물관
          • 책임 연쇄 - 객체들을 체인 형태로 연결해놓고 요청이 해결되도록 체인에 따라 넘어가도록
          • 템플릿 메서드 - 템플릿화 하여 상위 클래스에서 정의하되, 하위 클래스는 자유롭게 재정의 할 수 있는 것
            • 요리 레시피
          • 커맨드 - 명령(실행될 기능)을 캡슐화 해 놓고, 약속된 되로 처리하도록함