객체지향

SGIYLEVOELR·2021년 11월 17일
0

기본 개념

목록 보기
2/6

객체지향 프로그래밍

  • 프로그램을 설계하는 개념이자 방법론
  • 프로그램을 객체라는 기본단위로 나누고, 객체들간의 상호작용을 통해서 프로그램을 설계 및 개발하는 것.
  • 대표적으로 java가 가장 완벽하게 객체지향 프로그래밍을 구현한 언어이다.
  • 상속, extends(확장)

객체 지향 설계 과정

  • 제공해야 할 기능을 찾고 세분화, 그 기능을 알맞은 객체에 할당
  • 기능을 구현하는 데 필요한 데이터를 객체에 추가
  • 그 데이터를 이용하는 기능 넣기
  • 기능은 최대한 캡슐화하여 구현
  • 객체 간에 어떻게 메소드 요청을 주고받을 지 결정

객체지향 언어의 특징

  1. 캡슐화
    • 낮은 결합도를 유지할 수 있도록 설계하는 것
    • 한 곳에서 변화가 일어나더라도 다른 곳에는 최소한의 영향을 미치게 하는 것
    • 결합도: 어떤 기능을 실행할 때 다른 클래스나 모듈에 얼마나 의존적인가
  2. 정보은닉
    • 다른 객체에 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
    • 외부에서 접근할 필요가 없는 것들은 private를 사용하여 접근하지 못하도록 제한을 하는 것
    • 캡슐화에서 높은 응집도와 낮은 결합도를 갖기 위해 사용하는 방법
  3. 추상화
    • 필요로 하는 속성이나 행동을 추출하는 작업
    • 추상적인 개념에 의존하여 설계했을 때 유연함을 갖출 수 있다.
    • 세부적인 사물들의 공통적인 특징을 파악한 후 하나의 집합으로 만들어내는 것
  4. 상속성
    • 일반화 관계(Generalization)
    • 여러 개체들이 지닌 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 과정
  5. 다형성
    • 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력
    • 부모 클래스의 메소드를 자식 클래스가 overriding해서 자신의 역할에 맞게 활용하는 것

Override, Overloading

  • Override: 상속
  • Overloading: 다형성

SOLID - 객체 지향 설계 원칙

  1. SRP(단일 책임 원칙)
  • 클래스는 오직 하나의 이유로 수정이 되어야 한다
  1. OCP(개방-폐쇄 원칙)
  • 자신의 확장에는 열려있고 주변의 변화에는 닫혀있어야 한다.
  1. LSP(리스코프 치환 원칙)
  • 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  1. ISP(인터페이스 분리 원칙)
  • 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
  1. DIP(의존 역전 원칙)
  • 자신보다 변하기 쉬운 모듈에 의존해서는 안 된다.

0개의 댓글