Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

객체 지향 프로그래밍/절차 지향 프로그래밍 본문

IT/Computer Science

객체 지향 프로그래밍/절차 지향 프로그래밍

빌드이너프 2022. 12. 27. 00:36

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

  • 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

절차지향 프로그래밍 장점

  • 컴퓨터의 처리구조와 유사함 -> 실행속도 빠름

절차지향 프로그래밍 단점

  • 유지보수 어려움
  • 실행 순서가 정해져 있기 떄문에 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움
  • 디버깅 어려움

 

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

  • 데이터와 절차를 하나의 덩어리로 묶어서 생각함
  • 하드웨어가 소프트웨어의 발달을 따라오지 못하는 상황이 발생 -> 객체지향 언어가 등장하는 계기
  • 개발하려는 것을 기능별로 묶어 모듈화 함으로써 하드웨어가 같은 기능을 중복으로 연산하지 않도록 함
  • 모듈 재활용 -> 하드웨어의 처리양을 획기적으로 줄여줌

객체지향 프로그래밍 장점

  • 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

객체지향 프로그래밍 특성

  • 캡슐화(Encapulation)
    • 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것, 객체의 기본적인 특징
  • 상속(Inheritance)
    • 상위 개체의 속성이 하위 개체에 물려져, 하위 개체가 상위 개체의 속성을 모두 가지는 관계
    • 코드의 중복 작성을 방지, 코드 재사용 -> 코드 작성에 드는 시간과 비용 감소
  • 다형성(Polymorphism)
    • 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현되는 것
  • 추상화(Abstraction)
    • 객체에서 공통된 속성과 행위를 추출 하는 것
    • 공통의 속성과 행위를 찾아서 타입을 정의하는 과정
    • 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것

객체지향 프로그래밍 장점

  • 코드의 재활용성이 높음
  • 절차지향보다 코딩이 간편함
  • 디버깅이 쉬움

객체지향 프로그래밍 단점

  • 처리속도가 절차지향보다 느림
  • 설계에 많은 시간소요가 들어감

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

  • 객제지향 언어는 어떤 모듈에 있는 하나의 기능만 필요하더라도 모듈 전체를 가져와야하기 때문에 절차지향 프로그래밍보다 프로그램 사이즈가 더 커질 수 있음
  • 데이터에 대한 접근도 상대적으로 절차지향보다 느려질 가능성이 있음
  • 메소드를 통해서만 접근이 가능하기 때문에 절차지향식처럼 특정 함수에 접근할 수 없고, 식으로만 접근이 가능해 속도적인 측면에서 불이익이 있다

정리

  절차지향 객체지향
접근방식 Top-Down
(시스템 동작 방식을 먼저 생각,
그 다음 세부 모델 디자인)
Bottom-Up
(세부 모델 디자인 후 조립)
구현 관점 전체적인 기능 동작을 고려 -> 각 단계별로 기능을 구현 필요한 속성의 객체를 설계(보안성, 데이터, 함수 등) ->
각 객체의 상호작용(절차)을 설계
구성 요소 함수  객체
접근 제어 없음(public) Public, Protected, Private
오버로딩, 다형성 불가능 함수, 생성자, 연산자 등을 오버로딩 가능
상속 불가능 가능(Public, Protected, Private)
보안성 낮음 높음
데이터 공유 모든 함수가 공유 가능 객체 간 멤버함수로만 공ㅇ유
Friend 함수 없음 C+에 있음
가상클래스
가상 함수
없음 상속 개념 아래 존재
예시 언어 C, Visual Basic, Fortran, Pascal C++, Java, VB.NET, C#, Python
장점 컴퓨터 눈높이로 구성된 문법 프로그래머 관점 구조를 파악 좋음
객체 기능을 제공 -> 코드를 절약
단점 프로젝트가 커짐 -> 구조 복잡, 중복 코드 작성할 수 있음 제공된 객체 기능에서 오버헤드를 최적화 할 수 없다면 상대적으로 느려짐
용도 자원이 한정되어 있거나 바닥부터 설계할 필요가 있는 프로젝트에서 사용됨 규모가 크고 협업이 잦으며, 생산성이 중시되는 프로젝트에서 사용됨

'IT > Computer Science' 카테고리의 다른 글

동기(Synchronous) / 비동기(Asynchronous)  (0) 2022.12.30
OSI (Open System Interconnection) 7계층  (1) 2022.12.30
프로토콜(Protocol) / OSI 7계층  (1) 2022.12.29
MSA(MicroService Architecture)  (0) 2022.12.29
HTTP와 HTTPS  (0) 2022.12.27