본문 바로가기

Computer Science/프로그래밍 공통

Object Oriented Programming (OOP)

객체 지향 프로그래밍(OOP)란?

Object Oriented. 핵심은 현실세계의 사물을 객체로 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것. 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수에 용이하다.

 

OOP의 5가지 설계 원칙

  • SRP(Single Responsibility Principle, 단일 책임 원칙): 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.
  • OCP(Open-Closed Principle, 개방 폐쇠 원칙): 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
  • LSP(Liskov Substitution Principle, 리스코프 치환 원칙): 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
  • ISP(Interface Segregation Principle, 인터페이스 분리 원칙): 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.
  • DIP(Dependency Inversion Principle, 의존 역전 법칙): 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.

참고글

 

객체지향 개발 5대 원칙 (SOLID)

모든 개발이 그렇듯 프로젝트 초반에는 완벽하게 설계가 된것 같고 견고하게 구조를 다듬어 나아가는듯하게 개발이 되지만 개발을 하면 할수록 나의 코드와 구조의 틀이 점점 어긋나기 시작합

velog.io

 

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

절차지향 프로그래밍

  • 물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법이다.
  • 가장 대표적인 언어로 C언어, 파이썬이 있다.
  • 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
  • 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

객체지향 프로그래밍

  • 실제 세계의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법
  • 가장 대표적인 언어로 Java가 있다.
  • 캡슐화, 상속, 다형성 등과 같은 기법을 이용할 수 있다. 다형성은 동일한 키보드의 키가 다른 역할을 하는 것처럼 하나의 메소드나 클래스가 다양한 방법으로 동작하는 것을 의미한다.
  • 절치지향 언어보다 실행속도가 느리다.

객체지향 프로그래밍은 객체 간의 정보 교환이 모두 메세지를 통해 이루어지므로, 시스템에 overhead가 발생한다. (현재는 하드웨어의 발전으로 많이 보완되었다.) 이러한 단점은 절차지향 프로그래밍의 등장 배경이 되었다.