[JAVA] 객체 지향 프로그래밍(OOP)

선형채·2022년 6월 11일
0

JAVA

목록 보기
7/13
post-thumbnail

OOP(Object Oriented Programming)

  • 데이터 중심이 아닌 객체 중심의 프로그래밍
  • Software 위기의 대안으로 제시됨
  • 연관되는 속성과 기능을 묶어서 부품화 시킴(캡슐화)
  • 현실세계에 대한 모델링

절차지향 vs 객체지향

  • 절차지향 : 작업의 흐름에 따라 코드를 작성
  • 객체지향 : 객체의 관계에 따라 코드를 작성

    ※ 실제 프로그램이 동작하는 방식이 다른 게 아니라 코드를 어떻게 작성 하느냐 에 대한 개념적인 차이

OOP 장단점

OOP 장점

  • 생산성 향상
    잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.

  • 코드 재사용성 가능
    상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있다.

  • 유지보수의 우수성
    프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할 수 있다.

  • 실세계에 대한 쉬운 모델링
    우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.

OOP 단점

  • 개발속도가 느린점
    객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.

  • 실행속도가 느린점
    객체지향언어는 대체적으로 실행속도가 느리다.

OOP 특징

  • 캡슐화(Encapsulation)
    데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법

  • 상속(Inheritance)
    상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것 즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려줌

  • 다형성(Polymorphism)
    상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것

    자바의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라 할 수있고, 이 것을 구현하는걸 오버로딩(Overloading)과 오버라이딩(Overriding) 이라고 한다.

  • 추상화(abstraction)
    추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것

profile
JAVA BACK-END DEVELOPER 👩‍💻

0개의 댓글