객체지향 프로그래밍 VS 절차적 프로그래밍

Patrick·2021년 4월 21일
0

CS

목록 보기
1/4
post-thumbnail

처음에는 코딩만 계속해서 공부했지만, 점점 단순히 코딩만 공부를 할 것이 아니라 CS를 '필요로' 해지는 것 같다.

'내가 CS를 잘 알고 있다면 조금 더 구현하기가 쉬울까?'
'얘는 도대체 어떤 원리로 작동하는 것일까?'

여러가지로 궁금해지는데, 어디서부터 CS를 봐야하나 싶었는데 Javascript를 공부하다보면 객체지향 이라는 말을 하도 많이 들어서 이것에 대해서 먼저 간단하게 정리를 해야겠다!


프로그래밍은 크게 두 가지로 구분 될 수 있다.
1. 절차적 프로그래밍 (Imperative and Procedural Programming)
2. 객체지향 프로그래밍 (Object-Oriented Programming)

절차적 프로그래밍

  • OOP
  • 프로그래밍이 순차적으로 수행하도록 만든 언어이다.
  • 순차적으로 수행하므로 이해하기가 쉽지만 다양한 비즈니스 케이스를 구현하는데 한계를 보인다.
  • 대표적인 예) 포트란(Fortran), 알골(Algol) 등 1960~1970년대 만들어진 언어

객체지향 프로그래밍

  • IPP
  • 객체의 이벤트에 따라서 동작하도록 만든 언어
  • 프로그램 순서대로가 아니라 객체에게 발생하는 이벤트에 따라 이에대한 메소드를 호출하면서 실행되므로 비절차적인 언어
  • 대표적인 예) Java, Javascript, C++, C#, Swift 등

그럼 이 둘은 각각 어떤 차이가 있을까?

절차적 프로그래밍

  • 프로그램 전체가 유기적인 연결이 되어있다
  • 컴퓨터 처리구조와 유사해 속도가 빠르다
  • C(시스템 프로그래밍), ALGOL, FORTRAN(과학기술계산용), COBAL(사무처리용)
  • but, 프로그램 분석이 어렵고 유지보수나 수정 등이 어렵다

객체지향 프로그래밍

  • 코드의 재활용성이 높다
  • 사용자와 개발자 사이의 이해를 쉽게 만들어준다.
  • 대형 프로그램 작성에 용이
  • 관리가 비교적 쉽다
  • 개발 및 유지보수가 용이 그러나, 구현 시 처리시간이 지연된다.

마지막으로 이 객체지향(OOP)의 특징에 대해서 살펴보자!

  1. 캡슐화
  • Encapsulation
  • 데이터(속성)와 함수를 하나로 묶음으로써 재사용에 용이
  • 객체 내에 존재하는 메소드를 하나로 묶고 실제 내용을 감춤으로써 객체를 보호하는 것
    (외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해서 제공하는 메소드만 이용가능)
  1. 정보 은닉
  • Information Hiding
  • 가장 중요한 개념 / 다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용
  1. 추상화
  • Abstraction
  • 불필요한 부분은 생략하고 중요한 것만 중점을 두어 개략화, 모델화
  1. 상속성
  • Inheritance
  • 부모/상위 클래스의 속성과 연산을 하위/자식 클래스가 물려받는다
  1. 다형성
  • Polymorphism
  • 하나의 요청에 고유한 방법으로 응답한다
profile
예술을 사랑하는 개발자

0개의 댓글