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

객체지향 프로그래밍😮?

객체지향 프로그래밍(Object Oriented Programming)은 컴퓨터 프로그래밍 패러다임중 하나로,
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의
유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

절차지향 언어에서는 각 명령어의 실행 순서를 기반으로 바라보는 시선이었지만,
객체지향 프로그래밍은 데이터와 이를 처리하는 루틴들을 하나의 독립된 개체로 바라보는 시선이다.

장단점😁

  • 장점

    - 코드 재사용 가능
    - 유지보수가 쉬움
    - 디버깅 쉬움
    - 대형 프로젝트에 적합
    - 분석과 설계의 전환이 쉽다.
    
  • 단점

    - 처리속도가 절체지향 프로그래밍 보다 다소 느리다.
    - 객체가 많으면 프로그램 용량이 커질 수 있다.
    - 설계에 많은 시간 투자
    

특징😃

추상화(Abstraction)

구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는것을 의미한다.

캡슐화(Encapsulation)

객체의 상세한 내용을 객체 외부에 은닉화하고, 단순히 메시지 만으로 객체와의 상호작용을 하게 하는 것을 캡슐화라고 한다. 정보 은닉(information hiding)이라는 표현으로 설명하기도 하는데 추상화와 동일한 개념이다.

상속(Inheritance)

클래스의 속성과 행위를 하위 클래스에 물려주거나 , 상위 클래스에서 물려받는 것을 지칭한다. 재사용으로 인한 코드가 줄어들고, 상위 클래스에서 정의된 속성들을 상속받기 때문에 좀더 범용적으로 사용할 수 있다.

다형성(Polymorphism)

호출하는 객체에 따라 다른 동작을 할 수 있는 능력을 다형성이라고 한다. 실제 내부 구현은 다르더라도 동일한 동작을 하는 함수를 하나의 인터페이스로 호출할 수 있으므로 객체들을 사용하는 코드를 일관되게 유지할 수 있다. 다형성에서 두가지 키워드가 있다.

  • 오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것
  • 오버로딩 : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것

Thanks to

참고 : AraGrooveit Blog - 객체지향 VS 절차지향

참고 : 기본기를 쌓는 정아마추어 코딩블로그 - 객체지향 프로그래밍이 뭔가요?

참고 : Richong - 객체지향 특징 4가지

참고: OOP의 특징


© 2019. All rights reserved.