객체지향

Groot·2022년 10월 10일
0

TIL

목록 보기
63/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 객체지향

  • 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
  • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.

참고


📍 객체지향 프로그래밍에서 객체의 책임, 역할, 협력

  • 책임: 객체가 협력에 참여하기 위해 수행하는 로직 또는 행동
    • 객체의 책임은 ‘무엇을 알고 있는가?’ / ‘무엇을 할 수 있는가’로 구분된다
    • 하는것
      • 객체를 생성하거나 계산을 수행
      • 다른 객체의 행동을 시작시키는 것
      • 다른 객체의 활동을 제어하고 조절
    • 아는것
      • 사적인 정보에 관해 아는것
      • 관련된 객체에 관해 아는것
      • 자신이 유도하거나 계산할 수 있는것에 대해 아는것
  • 역할: 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합
  • 협력: 객체들이 기능 구현을 위해 수행하는 상호작용
    • 메세지 전송은 객체 사이의 협력을 위해 사용하는 유일한 커뮤니케이션 수단
    • 외부의 객체는 오직 메세지만 전송할 수 있다
    • 메세지를 수신한 객체는 어떻게 처리할지 스스로 결정한다
    • ‘객체가 자신의 일을 스스로 처리할 수 있는 자율적인 존재’

참고


📍 객체지향 생활 체조 원칙

  1. 한 메서드에 오직 한 단계의 들여쓰기만 합니다
  2. else 표현을 사용하지 않습니다
  3. 모든 원시 값과 문자열을 포장합니다
  4. 한 줄에 점을 하나만 사용합니다
  5. 이름을 줄여 쓰지 않습니다(축약 금지).
  6. 모든 엔티티를 작게 유지합니다
  7. 3개 이상의 스위프트 기본 데이터타입(Int, String, Double 등) 프로퍼티를 가진 타입을 구현하지 않습니다
  8. 일급 콜렉션을 사용합니다
  9. getter/setter를 구현하지 않습니다

📍 객체지향 5원칙(SOLID)

  1. SRP (단일책임의 원칙: Single Responsibility Principle)

    작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임(변화의 축: axis of change)을 수행하는 데 집중되어 있어야 합니다

  2. OCP (개방폐쇄의 원칙: Open Close Principle)

    소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 합니다.

  3. LSP (리스코브 치환의 원칙: The Liskov Substitution Principle)

    서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다. 즉, 서브 타입은 언제나 기반 타입과 호환될 수 있어야 합니다.

  4. ISP (인터페이스 분리의 원칙: Interface Segregation Principle)

    한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 합니다.

  5. DIP (의존성역전의 원칙: Dependency Inversion Principle)

    구조적 디자인에서 발생하던 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계관계를 끊는 의미의 역전 원칙입니다.

profile
I Am Groot

0개의 댓글