객체지향언어

강준우·2023년 2월 4일
0

객체


객체 지향 프로그래밍(OOP)이나 설계에서, 데이터(실체)와 그 데이터에 관련되는 동작(절차, 방법, 기능)을 모두 포함한 개념.

즉, 프로그래밍에서의객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹이다.

객체지향언어


컴퓨터 프로그래밍의 기법중 하나로 객체를 만들고 객체를 사용하는 프로그래밍 방법이다. 프로그램을 데이터와 데이터의 처리방법으로 나누는 것이 아니라, 그로그램을 다수의 객체를 만들어 이들이 서로 상호작용하도록 구성하는 방식이다.

객체지향언어의 특징


  • 캡슐화
    캡슐화는 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는게 핵심이다. 객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직접접근하거나 변경할 수 없고, 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하게 하여 데이터를 보호한다.

  • 상속
    상위 클래스의 모든걸 하위 클래스가 이어 받는 것이다. 코드 중복을 줄일 수 있고 코드의 재사용성을 높인다.

  • 추상화
    객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다. 불필요한 부분을 숨기고 인터페이스와 구현을 분리하여 코드의 핵심적인 부분만을 보여줄 수 있다.

  • 다형성
    하나의 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 형태의 객체로 재구성되는 것을 말한다. 따라서 서로 다른 클래스의 객체의 메소드, 변수가 상황에 따라 다른 결과를 낼 수 있다. 오버로드와 오버라이드를 통해 다형성을 가능하게 한다.

객체지향언어의 장단점


장점

  • 재사용성이 높다.
  • 생산성이 향상된다.
  • 자연적인 모델링을 할 수 있다.
  • 유지보수가 우수하다.

단점

  • 개발속도가 느리다.
  • 실행속도가 느리다.
  • 코딩 난이도가 상승한다.

객체지향 설계원칙(SOLID)


SRP(Single Responsibility) 단일 책임 원칙

  • 하나의 클래스는 하나의 책임(기능)만을 가져야 한다.
  • 변경이 있을 때, 그 파급효과가 적어야 한다.

OCP(Open-closed) 개방 폐쇄 원칙

  • 확장에는 열려있어야 하고, 변경에는 닫혀있어야 한다.
  • 기존 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계해야 한다.
  • 추상화(인터페이스) 와 상속(다형성) 등을 통해 구현할 수 있다.

LSP(Liskov Substitution) 리스코프 치환 원칙

  • 하위타입 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야 한다.
    즉, 상위 타입 객체를 하위 타입 객체로 치환해도 정상적인 동작을 해야 한다.
  • 하위 클래스는 인터페이스 규약을 모두 지켜야 한다.
  • 다형성을 지원하기 위한 원칙으로, 인터페이스 구현체의 신뢰성과 관려있다.
  • ex) 자동차 인터페이스의 엑셀은 앞으로 가기 위한 기능인데, 느리더라도 무조건 앞으로는 가야한다. 만약 뒤로 가게 구현한다면 LSP 위반이다.

ISP(Interface Segregation) 인터페이스 분리 원칙

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 인터페이스는 인터페이스를 사용하는 클라이언트를 기준으로 잘게 분리되어야 한다.
  • ex) 자동차 인터페이스 -> 운전 인터페이스, 정비 인터페이스로 분리
  • ex) 사용자 클라이언트 -> 운전자 클라이언트, 정비사 클라이언트로 분리
    -> 정비 인터페이스가 변해도 운전자 클라이언트는 영향을 받지 않는다.
  • 클라이언트는 자신이 사용하는 메소드에만 의존해야 한다는 원칙
  • 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 함

DIP(Dependency Inversion) 의존 역전 원칙

  • 의존 관계를 맺을 때, 구체화된 클래스보다 추상적인 인터페이스에 의존해야 한다.
profile
강준우

0개의 댓글

관련 채용 정보