객체지향(OOP) vs 절차지향(PP)

Lys·2023년 9월 6일

개발상식

목록 보기
5/15
post-thumbnail

객체지향(OOP) 이란

object-oriented programming(OOP)란 ?
대표적인 예로는 java, c++,python 등이 있으며
명령형 프로그래밍의 기법으로 프로그램을 '객체(Object)'라는 단위로 나누고 그 객체들의 상호 작용을 통해 만들어지는 방식을 말한다. 즉 여러 독립적인 부품들의 조합을 말한다.
사람이 자전거를 타고 앞으로 간다고 예를 들어보면
자전거, 사람은 객체가 되고 타고 앞으로 간다는 메서드가 된다. 자전거의 종류, 사람의 나이 등은 변수가 된다.
이러한 상호작용을 통해 나타내는 것을 객체 지향이라고 한다.

  • 객체란?
    -- 속성과 가능을 가지는 프로그램 단위
    ex) 핸드폰
    - 객체 : 핸드폰
    - 속성 : 핸드폰의 색상
    - 기능: 전화, 문자

    절차지향이란(PP)

    Procedural Programming(PP)란 대표적인 예로는 C,Basic,Visual이 있으며
    전체적인 기능을 고려하고 그 기능이 중심이 되어 어떤 기능을 어떠한 순서로 해결 할 것인지의 관점의 프로그래밍 방식이다.순차적인 처리가 중요시 된다.Top-Down으로 위에서 아래로 흐르는 물 처럼 설계 된다.

객체지향과 절차지향 비교

객체지향절자치향
접근 제어public,protected,privtepublic
보안성높다낮다
오버로딩, 다형성가능불가능

객체지향과 절차지향의 장단점

객체지향 장점

 - 상속이 가능하기 때문에 코드의 재활용성이 높다.
 - 디버깅이 쉽다.
 - 유지보수가 편하다.(캡술화를 통해 주변 영향이 적다.)

객체지향 단점

- 실행속도가 절차지향 보다 느리다.
- 설계단계부터 많은 시간이 소모 된다 

절차지향 장점

 - 설계하기 쉽다.
 - 실행 속도가 빠르다.(컴퓨터의 처리 구조화 비슷하다.)

절차지향 단점

- 중복 코드가 작성 될 수 있다.
- 유지보수가 어렵다.
- 디버깅이 어렵다.
- 정해진 순서대로 코드를 작성하기 때문에 순서가 바뀌게 되면 원하는 결과를 얻기 어렵다.

객체지향의 특징

  • 캡슐화
    --실제로 구현 부분을 외부에 드러나지 않도록 하는 것이다.
    --데이터를 외부에서 직접 접근하지 않고 함수를 통해서만 접근한다.

  • 상속
    --자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것을 말한다.
    --상속은 캡슐화를 유지, 클래스의 재사용이 용이하도록 해 준다.

  • 추상화
    -- 클래스들의 공통적인 특성(변수, 메서드)들을 묶어서 표현하는 것을 말한다.

  • 다형성
    -- 대표적인 예로는 오버라이딩과 오버로딩이 있다.
    -- 상속을 통해 기능을 확장하거나 변경하는 것이 가능하다.
    -- 어떠한 변수, 메소드가 상황에 따라 다른 결과를 내는 것을 말한다.

  • 오버로딩 : 메소드의 이름은 같지만 매개변수 개수, 타입등을 다르게 함으로써 같은 메서드의 이름을 다른 기능으로 재정의 하여 사용 하는 것

  • 오버 라이딩 :하위 클래스에서 상위 클래스의 메서드를 재정의하여 사용하는 것

🙇‍ 참고 사이트 🙇‍

https://radait.tistory.com/4</br>
https://namu.wiki/w/%EA%B0%9D%EC%B2%B4%20%EC%A7%80%ED%96%A5%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</br>
https://upcake.tistory.com/418
https://usefultoknow.tistory.com/entry/%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5Procedural-Programming-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5Object-Oriented-Programming-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90

0개의 댓글