ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체 지향 프로그래밍
    블로깅 과제 2022. 11. 18. 15:38

    객체지향 프로그래밍(OOP : object oriented programming)

    • 객체지향 프로그래밍이 있기 전까지는 모든 것을 절차적으로 프로그래밍하는 절차지향 프로그래밍이 있었다.
    • 객체지향 프로그래밍이 생기면서 변수와 함수를 순차적으로 작동하는 것을 넘어 데이터의 접근과 데이터의 처리과정의 모형을 만드는 방식을 고안하게 되었다.
    • 데이터(속성)와 기능(메소드)이 객체로 그룹화된다.
    • 4가지의 주요 기능을 통해 재사용성을 얻는다.(캡슐화, 추상화, 상속화, 다형성)

     

    클래스와 인스턴스

    클래스와 인스턴스에 대해선 아래에 잘 설명 해놓았다.

    https://mylearningcoding.tistory.com/23

     

    클래스(class)와 인스터스 객체(instance object)

    1. 객체지향프로그래밍 기본 골격이 되는 뼈대를 만들고 여러 부품을 붙여 각기 다른 객체를 만드는 프로그래밍 패턴 기본 골격이 되는 뼈대를 클래스(class)라고하며 만든 객체를 인스턴스 객체(

    mylearningcoding.tistory.com

     

     

    객체지향 프로그래밍의 주요 기능(OOP basic concepts)

    1) 캡슐화(Encapsulation)

    • 데이터(속성)와 기능(메소드)을 하나의 단위로 묶는 것
    • 내부 데이터나 내부 기능 구현이 외부로 노출되지 않도록 하는 것(은닉화 : hiding) => 절차지향 코드일 경우 데이터의 형태가 바뀔때 코드의 흐름에 큰 영향을 미칠 수 있다. 반면 은닉화를 사용하여 코드를 작성하면 객체 내의 매소드의 구현만 수정하고 노출된 메소드의 사용의 코드의 흐름에 관여하지 않을 수 있다.
    • 언제든 구현을 수정할 수 있다.(느슨한 결합에 유리 : loose coupling) => 코드를 절차적으로 작성하는 것이 아니라 코드를 실체의 모습과 닮게 모아 결합하는 것을 말한다.

     

    2) 추상화(Abstraction)

    • 내부 구현은 복잡하지만 노출되는 부분은 단순하게 만든다는 개념.
    • 추상화를 통해 유저들이보는 인터페이스가 단순해진다.
    • 많은 기능이 노출되지 않아 예기지 못한 사용상의 변화가 일어나지 않도록 할 수 있다.
    • 캡슐화는 은닉화에 초점이 맞춰져 있고 추상화는 사용자들이 단순한 인터페이스를 사용하게하는것에 초점이 맞춰져 있다.

     

    3) 상속(Inheritance)

    • 부모 클래스의 특징을 자식 클래스가 물려받는 것을 의미
    • 부모/자식이라고 주로 이야기하지만 적합한 용어는 기본클래스(base class)와 파생클래스(derived class)이다.
    • 기존에 있던 class의 특징이 중복되는 다른 class를 만들 경우 기존에 있던 class의 특징을 상속받을 수 있다. 상속받을 경우 코드의 중복을 줄일 수 있다. 상속받은 후에 다른 특징들을 추가할 수 있다.

     

    4) 다형성(Polymorphism)

    • polymorphism은 poly : 많은, morph : 형태라는 뜻을 가지고 있다.
    • 동일한 메소드를 객체의 특성에 맞게 작성하는 것이 가능하다.

     

    • 정리!

    - 캡슐화는 코드를 복잡하지 않게 만들고, 재사용성을 높인다.

    - 추상화는 코드를 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.

    - 상속은 중복된 코드를 줄여 재사용성을 높인다.

    - 다형성은 동일한 메소드를 객체의 특성에 맞게 작성하는 것이 가능하다.

Designed by Tistory.