본문 바로가기
Programming

[Programming] Programming_1 (Object Oriented / Procedural Programming)

by 2__50 2020. 7. 6.

Programming은 크게 다음과 같이 분류된다.

 

출처:  https://subscription.packtpub.com/book/application_development/9781788996648/4/ch04lvl1sec20/functional-programming

 

Declarative(선언형)과 Imperative(명령형)을 간단하게 비교하면 이러하다.

  • 선언형: 무엇인가를 작업하기 위해 어떻게 진행할 것인지를 나열한다. (컵라면을 끓인다.)
  • 명령형: 무엇인가를 작업하기 위한 방법을 정의한다. (뚜껑을 연다 -> 물을 붓는다 -> 면이 익을 때까지 기다린다.)

명령형은 다시 Procedural(절차지향)과 Object Oriented(객체지향)으로 나뉘는데, 

 

 



출처: https://m.blog.naver.com/PostView.nhn?blogId=atalanta16&logNo=220249264429&proxyReferer=https:%2F%2Fwww.google.com%2F

Procedural Programming(절차지향 프로그래밍)

Procedural Programming(절차지향 프로그래밍)은,

 

▶ 물이 위에서 아래로 흐르듯이 순차적으로 처리가 이루어지며, 프로그램 전체가 유기적으로 연결된다.

▶ 데이터를 중심으로 프로그램 구현 

 장점: 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.

▶ 단점: - 실행순서가 정해져 있어, 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

           - 유지보수가 어렵다.

           - 디버깅이 어렵다.

▶ 대표적 언어: C언어

 

Object Oriented Programming(객체지향 프로그래밍)

Object Oriented Programming(객체지향 프로그래밍)은,

 

▶ 실제 세계를 추상화하여 객체 공통의 Property와 method를 추출한다.

ex) 휴대전화의 공통부분 : 통화한다(0), 사진을 찍는다(0) / 삼성에서 만들었다(x) 폴더블이다(x)

▶ 데이터와 절차를 하나의 덩어리로 묶어서 생각한다. (위의 그림 참조)

▶ 기능을 중심으로 프로그램 구현

 

▶ 특징: 

1. Encapsulation (캡슐화)

- 은닉성: 묶은 내용 중, 외부에서 접근하지 못하는 Property와 method를 만들 수 있다. 외부와의 상호작용은 method를 통해 이루어진다.

- 데이터 알고리즘(데이터를 다루는 방식)을 하나의 묶음으로 정리한다. (변수와 함수를 Class로 묶는다.)

 

2. Inheritance (상속)

- 부모 class의 Property와 method를 자식 class에서 사용할 수 있어 코드 재사용이 가능하고, 중복코드를 제거할 수 있으며, 물려 받은 Property와 method와 더불어 필요한 기능을 추가해 확장할 수도 있다.

 

3. Polymorphism (다형성)

출처: https://debugdaldal.tistory.com/152

- 하나의 class나 method가 다양한 방식으로 동작이 가능 한 것을 의미한다.

- Overriding (오버라이딩)

필요에 따라서, 하위 class에서 상속받은 상위 class의 method를 그대로 사용하지 않고 내용을 재정의 하여 사용하는 것.

- Overloading (오버로딩)

같은 method 이름을 사용하지만, 인자의 정보가 다르면 넘겨받은 정보에 맞는 method가 호출되는 것. (다양한 입력에 대해서 처리 할 수 있다.)

객체 지향 언어에서 다형성이란 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능 한 것을 의미합니다. 이러하 다형성에는 오버로딩과 오버라이딩이 존재합니다.

 

▶ 장점: - 코드의 재활용성이 높다

           - 코딩이 절차지향보다 간편하다

           - 디버깅이 쉽다

▶ 단점: - 처리속도가 절차지향에 비해 느리다

           - 설계에 많은 시간이 소요된다.

▶ 대표적 언어: C++, JAVA, Python

 

 

 

 

도움을 준 정보들

 

칼럼:

https://sung-studynote.tistory.com/109

 

선언형(declarative) vs 명령형(imperative)

선언형 무언가를 작업하기 위하여 어떻게 진행할 것인지를 나열하는 것을 뜻한다. 언어 : Haskell, HTML, SQL, 등... 명령형 무언가를 작업하기 위한 방법을 정의하는 것을 뜻한다. 언어 : Java, C, 등...

sung-studynote.tistory.com

https://brownbears.tistory.com/407

 

절차지향 VS 객체지향

절차지향(Procedural Programming)이란? 절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법��

brownbears.tistory.com

https://lktprogrammer.tistory.com/19

 

05 [객체 지향 언어의 이해] 객체 지향의 4대 특성 04 - 다형성과 캡슐화

다형성 객체 지향 언어에서 다형성이란 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능 한 것을 의미합니다. 이러하 다형성에는 오버로딩과 오버라이딩이 존재합니다. 오버라이딩 오��

lktprogrammer.tistory.com

alcohol-dev.tistory.com/1

 

자바스크립트 - 객체지향 프로그래밍 - 캡슐화 (1)

자바스크립트의 캡슐화를 알아보기 전, 객체지향 프로그래밍에서의 캡슐화부터 간단히 짚고 넘어가도록 하겠습니다. - 객체지향 프로그래밍에서의 캡슐화란 ? 비슷한, 관련된 역할을 하는 속성

alcohol-dev.tistory.com

 

댓글