객체 지향 프로그래밍(Object-oriented programming, OOP)이란?

 

  • 객체 지향 프로그래밍(Object-oriented programming, OOP)은 프로퍼티와 메서드를 가진 객체를 만들고, 이렇게 만들어진 객체들 간의 상호작용을 통해 로직을 구현하는 프로그래밍 패러다임을 말합니다.




객체 지향 프로그래밍의 특징

 

  • 객체 지향 프로그래밍은 크게 캡슐화, 상속성, 추상화, 다형성의 네 가지 특징을 가졌습니다.

 

캡슐화

 

  • 동일한 목적으로 사용될 속성과 메서드를 하나의 객체로 묶음으로써 사용성, 관리적인 측면, 정보 은닉성에 대한 이점을 얻을 수 있습니다.




상속성

 

  • 상위 클래스에 있는 프로퍼티와 메서드를 상속 받음으로써 상위 클래스의 코드를 재사용하며 클래스를 확장할 수 있다는 이점이 있습니다.




추상화

 

  • 객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 선언하는 것을 의미합니다. 즉, 객체의 공통된 프로퍼티와 메서드를 선언하여 이를 상속받는 객체에서 정의함으로써 객체의 복잡성을 줄여 코드의 가독성을 높일 수 있습니다.




다형성

 

  • 다형성은 공통된 인터페이스를 기반으로 오버로딩 및 오버라이딩을 통해 각기 다른 기능을 구현하는 것을 말합니다.




객체 지향 프로그래밍의 장.단점

 

장점

 

  • 객체 단위로 모듈화하여 로직을 구현하기 때문에 재사용성이 높고 유지보수가 편리합니다.

 

  • 각 객체를 독립적으로 개발하고 통합하기 때문에 대형 프로젝트의 개발이 쉬워집니다.

 

  • 객체는 자신의 역할을 명확하게 정의하고 있기 때문에 객체의 역할을 파악하고 이용하기 쉽습니다.


  • 하위 객체는 공통된 속성과 기능을 상속 받고, 자신만의 고유한 기능에만 집중할 수 있기 때문에 생산성이 높아집니다.




단점

 

  • 객체들간의 상호작용을 기반으로하여 로직을 구현하기 때문에 설계가 어렵습니다.

 

  • 로직에 필요한 객체를 생성하고 관리하고 가상 함수 테이블을 통한 함수 호출 방식에 의해서 절차 지향에 비해 상대적으로 성능이 낮습니다.

 

  • 객체는 메모리 공간을 차지하므로, 객체를 많이 사용하는 경우에는 메모리 공간이 낭비될 수 있습니다.




+ Recent posts