(2023.2.3) Today_I_Learned_day-112

imRound·2023년 2월 3일
post-thumbnail

절차지향(Procedural Programming)

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

  • 장점

    • 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
      • 초기 프로그래밍 언어로, 컴퓨터 처리구조와 비슷하여 실행 속도가 빠르다.
  • 단점

    • 유지보수가 어렵다.
      • 전체가 유기적으로 연결되어있다면 고장날 때 시스템 전체가 고장난다.
      • 문제를 해결하기 위해서는 시스템 전체를 수리해야 하기에 유지보수가 까다로움
    • 실행 순서가 정해져 있어 코드의 순서가 바뀐다면 동일한 결과를 보장하기 어렵다.
    • 디버깅이 어렵다.
    • 프로그램 이해가 어려워진다.
      • 함수가 많아지면 어떻게 상호 작용을 해야하는지 이해하기 어려워진다.

대표언어

  • FORTRAN
  • COBOL
  • PASCAL
  • C
  • BASIC

객체지향(Object Oriented Programming)

  • 컴퓨터 프로그래밍의 한가지 기법으로 객체를 만들고 객체를 사용하는 프로그래밍 방법

특징

  • 캡슐화

    • 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것
    • 데이터와 코드의 형태를 외부로부터 알 수없게 한다.
    • 보호된 변수는 getter나 setter 등의 메소드를 통해서만 간접적으로 접근이 가능하다.
  • 상속

    • 상위 클래스의 모든 것을 하위 클래스가 모두 이어 받는 것!
    • 부모의 특징을 자식에게 물려준다는 생각
  • 다형성

    • 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다.
    • 다형성은 형태가 같으나 다른 기능을 하는 것을 의미한다.
    • 예) 오버로드(Overload), 오버라이딩(Overriding)
    • 오버로딩(Overloading): 메소드의 이름을 같고 매개변수의 객수나 타입이 다른 함수를 정의하는 것
    • 오버라이딩(Overriding): 상속 받은 하위 클래스가 메소드의 내용만 변경(재정의)하는 것
  • 추상화

    • 객채의 공통적인 속성과 기능을 추출하여 정의하는 것이다.
    • 실제로 존재하는 객체들을 프로그램으로 만들기 한 특성을 파악하여 필요없는 특성을 제거하는 과정
  • 장점

    • 코드의 재활용성이 높다.
      • 상속을 통하여 프로그래밍시 코드의 재사용을 높일 수 있다.
    • 코딩이 절차지향보다는 간편하다.
    • 디버깅이 절차지향보다 쉽다.
    • 생산성이 향상된다.
      • 잘 설계된 class를 만들어서 독립적인 객체를 사용하여 개발의 생산성을 향상할 수 있다.
    • 유지보수의 우수성
      • 프로그램 수정 시 추가, 수정을 하더라도 캡슐화를 통하여 주변 영향이 적기 때문
  • 단점

    • 처리속도가 절차지향보다 느리다.
      • 모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요된다.
    • 설계에 많은 시간소요가 들어간다.
    • 실행속도가 느린 편이다.

대표적인 언어

  • JAVA
  • Swift
  • C++
  • Python
profile
Django 개발자

0개의 댓글