[C++] 객체 지향 프로그래밍(OOP, Object Oriented Programming)

    객체 지향 프로그래밍이란

    객체들 간의 상호작용을 통해 프로그램을 설계하는 프로그래밍 패러다임이다. 

     

     

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

    장점

    1. 코드 재사용이 용이하다.

    다른 사용자가 작성한 클래스를 가져와 사용할 수 있고 기존의 클래스를 상속받아 확장하여 쓸 수 있다.

     

    2. 유지보수가 쉽다.

    객체로 코드를 분리하기 때문에 수정, 보완이 필요한 부분만 작업하면 된다.

     

    3. 대형 프로젝트에 적합하다.

    클래스 단위로 모듈화되어 있기 때문에 여러 명이서 작업하기 좋다.

     

    4. 직관적인 코드 분석이 가능하다.

    객체의 속성과 메서드가 클래스에 명시되어 있어 객체 간의 관계를 파악하기 쉽다.

     

    단점

    1. 처리 속도가 느리다.

    2. 객체가 많을수록 용량이 커진다.

    3. 설계하는 데 시간과 노력이 많이 든다.

     

     

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

    1. 추상화

    객체가 가진 공통된 속성, 기능을 모아 이름을 붙여 작성하는 것이다.

     

    2. 캡슐화

    객체의 공통된 속성이나 기능을 한 데 묶어 내부의 변수 또는 구현 상세를 사용자로부터 은폐하는 것이다.

     

    3. 상속성

    기존 클래스를 재활용하여 새로운 클래스를 작성하는 것이다.

     

    4. 다형성

    동일한 함수명을 상황에 따라 다른 의미를 지니도록 작성하는 것이다.

     

     

    객체 지향 프로그래밍의 5대 원칙

    1. 단일 책임 원칙

    클래스는 하나의 책임만 있어야 한다.

     

    2. 개방/폐쇄 원칙

    클래스는 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 한다.

    기존 코드를 수정하지 않고 새로운 코드를 작성하도록 확장할 수 있어야 한다.

     

    3. 리스코프 치환 원칙

    하위 클래스는 상위 클래스를 대체할 수 있어야 한다.

     

    4. 인터페이스 분리 원칙

    클래스가 사용하지 않는 인터페이스를 구현하도록 하면 안 된다.

     

    5. 의존 관계 역전 원칙

    고차원 모듈이 저차원 모듈에 의존하면 안 된다.

    댓글