ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체지향 패러다임
    교육 자료 2022. 7. 12. 03:28
    객체지향 패러다임 개념 다지기
      절차지향 방식으로 계산기 프로그램 만들기
      객체지향 패러다임에 맞게 리팩토링
      인사관리 시스템을 객체지향으로 만들기

     

    객체지향 패러다임

    • 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것
    • 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두 (기능 중심 -> 객체와 관계 중심)
    • 개인적으로 생각하는 두 가지 중요 포인트
      • 객체지향에 맞게 클래스가 아닌 객체에 초점을 맞추는 것
      • 객체들에게 얼마나 적절한 역할과 책임을 할당하는지 

     

    절치지향 프로그래밍 vs 객체지향 프로그래밍

    • 책임이 한곳에 집중돼 있는 방식 (getter)
    • 책임이 여러 객체로 적절히 분산돼 있는 방식

     

    객체지향의 4가지 특징 (다른 패러다임과 구분되는 중요한 특징)

    • 추상화 (Abstraction)
    더보기

       - 불필요한 부분을 제거함으로써 필요한 부분(핵심)만 나타낸 것

       - 일반화, 단순화 

       - 복잡성을 낮추기 위한 도구 

    • 다형성 (Polymorphism)
    더보기

    - 다양한 형태(모습)를 가지는 것 
    - 하나의 객체가 여러 타입을 가짐 (One Object - Many Type)
    - 하나의 타입으로 여러 종류의 객체를 참조 (One Type - Many Object)

    • 캡슐화 (Encapsulation)
    더보기

    - 객체 내부의 세부 사항을 외부로부터 감추는 것

    - 캡슐화의 목적은 인터페이스만 공개해서 변경하기 쉬운 코드를 만들기 위함

    • 상속 (Inheritance)
    •  

    객체지향의 5가지 설계 원칙 (SOLID)

    • SRP : Single Responsibility Principle (단일 책임의 원칙)
    • OCP : Open/Closed Principle (개방 폐쇄의 원칙)
    더보기

    - 확장에는 열려있고, 변경에는 닫혀있다. 
    - 기존 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.

    • LSP : Liskov’s Substitution Principle (리스코프 치환의 원칙)
    더보기

    - 상위 타입의 객체를 하위 타입 객체로 치환해도 동작에 문제가 없어야 한다.

    - "하위 클래스 is a kind of 상위 클래스" & "구현 클래스 is able to 인터페이스"를 만족한다면 해당 원칙을 잘 지키고 있는 것이다.

    • ISP : Interface Segregation Principle (인터페이스 분리의 원칙)
    더보기

    - 많은 기능을 가진 인터페이스를 작은 단위로 분리시킴으로써 클라이언트에게 필요한 인터페이스들만 구현하도록 한다.

    - 클라이언트가 사용하지 않는 기능에 의존하게 되면 예상치 못한 문제가 발생할 수 있다.

    • DIP : Dependency Inversion Principle (의존성 역전의 원칙)
    더보기

    - 의존 관계를 맺을 때 자주 변경되는 쪽이 아니라 변경이 거의 일어나지 않는 쪽에 의존하라.

    - 자기 보다 변하기 쉬운 것에 의존하게 되면 변화에 영향을 많이 받기 때문에 추상화된 인터페이스나 상위 클래스를 둬서 변화에 대해 영향을 받지 않게 하기 위함 

     

    객체지향 설계 및 구현 

    high cohesion, loose coupling

    1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
    2. 객체들 간의 관계를 고민 
    3. 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
      • 객체들이 어떤 상태와 행동을 가지는지 결정되면, 공통적인 상태와 행동을 가진 객체들을 타입으로 분류하고 이 타입을 기반으로 클래스를 구현한다.
      • 클래스는 공통적인 상태와 행동을 가지는 객체들을 추상화한 것 
      • 복잡성을 낮추기 위함
    4. 협력을 설계
      • 적절한 객체에게 적절한 책임을 할당
    5. 객체들을 포괄하는 타입에 적절한 책임을 할당 
      • 클라이언트와 협력할 수 있는 public 인터페이스 정의 
    6. 구현하기
      • 구현 도중 얼마든지 객체의 인터페이스는 변경될 수 있음
      • 객체의 책임을 결정한 후에 해당 책임을 수행하는데 필요한 객체 속성을 결정
        • 책임 결정
        • 속성 결정
    • 참고 
      • 객체지향 세계에서는 모든 객체가 능동적인 존재

     

    객체지향 프로그래밍 실습 

     

     

     

     

    '교육 자료' 카테고리의 다른 글

    JDBC 프로그래밍  (0) 2022.08.11
    도커 및 도커 컴포즈 소개  (0) 2022.08.05
    멀티 스레드 환경에서 동시성 이슈  (0) 2022.07.25
    웹 애플리케이션 이해  (0) 2022.07.18
    테스트 코드 실습  (0) 2022.07.11

    댓글

Designed by Tistory.