1 분 소요

객체 지향 설계

OOP의 4가지 특징

추상화(Abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)

  • 추상화 : 객체의 공통적인 속성과 기능을 추출하여 정의하는것
  • 캡슐화 : 속성과 기능의 모음을 “클래스”라는 “캡슐”에 넣어서 분류해서 넣는 이 캡슐화다.
  • 상속 : 상속이란 부모 클래스의 속성과 기능을 그대로 이어 받는 것입니다. 상속 받은 자식 클래스는 해당 기능중 원하는 기능을 재정의 할 수 있습니다.
  • 다형성 : 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질.즉, 오버라이딩(Overriding), 오버로딩(Overloading)이 가능하다는 얘기다.
    • 오버라이딩 : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용
    • 오버로딩 : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.

OOP의 5대 원칙 (SOLID)

  • SRP(Single Responsibility Principle) :단일 책임 원칙으로 하나의 클래스는 하나의 책임만 가져야 한다.
    • Ex) 변경이 있을 시에 파급효과가 적으면 단일 책임 원칙을 잘 따른 것 —> 예를 들어 ui 를 변경했는데 서비스 로직까지 들어가면 안된다.
  • OCP(Open-Closed Principle) : 개방-폐쇄 원칙으로 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 다형성을 활용하여 역할과 구현을 분리하면
  • LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  • ISP(Interface Segregation Principle) : 인터페이스 분리 원칙

    인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.

  • DIP(Dependency Inversion Prinsiple) : 의존 역전 원칙

    추상화에 의존하고 구체화에는 의존하면 안된다.

객체지향 프로그래밍과 절차지향 프로그래밍의 차이

  • 절차지향이란 프로그램의 순서와 흐름을 먼저 세우고 그에 맞는 자료구조와 함수들을 설계하는 방식입니다. 대표적인 예로는 C 언어가 있습니다.

    객체지향언어란 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.

절차지향의 장점

  • 컴퓨터의 처리구조와 유사합니다. 따라서 실행 속도가 빠르다는 것이 장점입니다.

절차지향의 단점

  • 모든 구성요소가 유기적으로 연결되어 있어서 유지보수가 어렵습니다.
  • 실행 순서가 정해져 있기 때문에 코드의 순서가 바뀌면 결과가 달라질 가능성이 높습니다.

객체지향의 장점

  • OOP 의 4가지 특성 상 코드 재사용이 용이 합니다.
  • 다형성 이라는 개념을 사용하여 역할과 구현을 명확히 분리할 수 있습니다.
    • 여기서 역할이란 인터페이스를 말하고 구현은 인터페이스를 구현한 클래스를 얘기합니다.

객체지향의 단점

  • 절차지향언어에 비해 실행 속도가 느리고 설계에 많은 시간이 소요 됩니다.

태그:

카테고리:

업데이트: