블로그

OOP 객체지향 프로그래밍

게시 1분

OOP :
현실세계의 사물을 객체로 인식해 그 객체로부터 원하는 특징, 기능을 추출해서 현실세계를 프로그래밍으로 옮기는 프로그래밍 방식.

OOP 장점 :

  1. 코드의 재사용성이 높아진다.
  2. 유지보수가 쉽다.
  3. 코드가 간결해진다.

OOP 단점 :

  1. 처리시간이 오래걸린다.
  2. 많은 고민과 시간을 투자해서 설계해야한다.

OOP 5원칙 S.O.L.I.D :

SRP :
클래스는 단 하나의 목적을 가져야 하며, 단 한가지의 이유로만 바뀌어야 한다.

OCP :
확장에는 열려있으나, 변경에는 닫혀있어야한다.
(확장 : 새로운 동작을 추가해서 기능 확장, 변경 : 기존의 코드를 변경하면 안됨, 동작을 추가해야함)

LSP :
상위 타입의 객체를 하위 타입으로 바꾸어도 정상적으로 작동해야한다.
(정상적으로 컴파일 되어야 한다는게 아니라, 프로그래밍의 설계 논리대로 작동해야 한다는 뜻)

ISP :
범용 인터페이스보다 다양한 목적을 위한 여러개의 인터페이스가 낫다.

DIP :
저수준 모듈이 고수준 모듈에 의존해야한다.
(저수준 모듈: IO로부터 먼, 비스니스와 관련된 추상화된 모듈)
(고수준 모듈: IO로부터 가까운, HTTP DB 캐시 등과 관련된 구체화된 모듈)

절차지향 프로그래밍 vs 객체지향 프로그래밍 :

절차지향 프로그래밍 :

  1. 물이 아래로 흐르듯이, 순차적인 처리를 중요시하는 프로그래밍
  2. 컴퓨터의 처리구조와 유사해 처리속도가 빠르다.
  3. 코드의 순서가 바뀌면 결과도 바뀌기 쉽다.
  4. C언어가 대표적이다.

객체지향 프로그래밍 :

  1. 실제 사물을 객체로 인식하고 실제세계를 옮기는 프로그래밍
  2. 절차지향보다 처리속도가 느리다.
  3. 다형성, 캡슐화, 상속과같은 기법을 사용할 수 있다.
  4. JAVA가 대표적이다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub