ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 객체 지향 프로그래밍(OOP)이란?
    Java/Java 개념 2022. 7. 5. 17:22

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

     

    OOP(객체 지향 프로그래밍)이란, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진

    객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

     

    ex) Java, C#


    객체 지향 프로그래밍(OOP)의 4가지 특징

    • 추상화 
    • 캡슐화
    • 상속
    • 다형성

    1. 추상화(Abstraction)

     

    객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.

       

    abstract = 메모리를 직접 올리지는 못한다.


    2. 캡슐화(Encapsulation)

     

    데이터와 코드의 형태를 외부에선 알 수 없게 하고, 데이터의 역할과 기능, 구조를 하나의 캡슐로 만드는 것을 말한다.

     

    변수를 private으로 선언하여 데이터를 보호하고, getter와 setter등의 메소드를 통해 간접적으로 접근을 허용하게 한다.


    3. 상속(Inheritance)

     

    기존 상위 클래스(super class)에 있는 기능을 가져와 재사용하면서, 새로운 하위 클래스(sub class)에 확장하여

    기능 추가가 가능한 것을 말한다.

     

    OOP에서는 상위 클래스를 부모 클래스, 하위 클래스를 자식 클래스라고 표현한다.

     

    상속을 하는 가장 큰 이유는 코드의 중복을 없애기 위함이다.

     

    코드의 중복이 늘어나면 코드 줄 수가 늘어날 뿐만 아니라, 개발과 유지 보수 단계에서 많은 비용이 들게 된다.

     

    또한 부모 클래스의 속성을 자식 클래스가 상속 받기 때문에 자식 클래스에서 따로 정의할 필요가 없어진다.


    4. 다형성(Polymorphism)

     

    상속과 연관이 있으며, 한 객체가 상속을 통해 기능을 확장하거나 변경해서 다른 여러 객체로 구성되는 것을 말한다.

     

    오버로딩(Overloading)과 오버라이딩(Overriding)은 다형성의 대표적인 예시이다.

     

    오버로딩(Overloading)은 하나의 클래스 안에 같은 이름의 메서드를 사용하지만, 다른 용도로 사용되는 것을 말한다.

    오버로딩(Overloading)을 사용하려면, 메서드끼리의 이름은 같게 하고, 매개변수의 개수나 데이터 타입이 달라야 한다.

     

    오버라이딩(Overriding)은 하위 클래스가 상위 클래스의 메서드를 상속 받은 후, 바꾸거나 확장해서 사용하는 것을 말한다.


    객체 지향 프로그래밍(OOP)의 장점

     

    • 코드 재사용성 증가

           -> 상속을 통해 프로그래밍 시 코드의 재사용을 높일 수 있다.

     

    • 유지보수의 우수성

           -> 프로그램을 수정하거나 추가하더라도 캡슐화를 통해 주변 영향을 줄여 유지보수가 쉽다.


    객체 지향 프로그래밍(OOP)의 단점

     

    • 개발 속도가 느리다.

           -> 객체가 처리하는데에 있어 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.

     

    • 실행 속도가 느리다.

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

     


    참고 블로그 : https://velog.io/@gillog/OOP%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
    사진 출처 : https://velog.velcdn.com/images/gparkkii/post/a9465931-e5d2-42ce-b0ea-9afe98247e86/maxresdefault%20(1)%20(1).jpg
Designed by Tistory.