[C++] 객체지향

2024. 4. 17. 22:49언어 및 엔진

객체지향에 대해 설명하시오


독립적인 각각의 객체로 프로그램이나 시스템을 구성

장점 : 코드 재사용 용이
유지보수 쉬움
대형 프로젝트에 적합

단점 : 처리속도 상대적으로 느림
객체 많으면 -> 용량 큼
설계 시 시간, 노력 필요

객체지향의 4대 특징

추상화 : 객체들의 공통적인 특징을 뽑아냄
캡슐화 : 데이터 구조와 데이터를 다루는 방법을 결합
상속성 : 상위개념의 특징을 하위개념이 물려받음
다형성 : 같은 메소드 호출 시 내용은 객체가 무엇이냐에 따라 달라짐. 수행이 다 다르다.
다른 방법으로 일을 하는 함수를 동일한 방법으로 호출한다

 

객체지향의 5대 원칙(SOLID)

단일 책임 원칙(Single Responsibility Principle)
-응집력
하나의 클래스는 하나의 책임만을 가진다
객체는 오직 하나의 변경의 이유만을 가진다

개방 폐쇄 원칙(Open Closed Principle)
-객체는 확장에는 개방적, 수정에는 폐쇄적이어야 한다

리스코프 치환 원칙(Liscov Substitution Principle)
-자식클래스는 언제든지 부모클래스를 대체할 수 있다

인터페이스 분리 원칙(Interface Segregation Principle)
-클라이언트에서 사용하지 않는 메소드는 사용해선 안 된다
인터페이스를 작게 나누어 만든다(너무 잘게 나누지 않기)

의존관계 역전 원칙(Dependency Inversion Principle)
-저차원 모듈(고차원 모듈의 기능을 구현하기 위해 실제로 구현한 하위 기능)은 
고차원 모듈(단일 기능을 제공하는 모듈, 클래스, 변화하기 어려운 것, 거의 변화가 없는 것)에 의존하면 안 된다
이 두 모듈은 추상화 된 것(인터페이스, 추상클래스)에 의존해야 한다
-추상화 된 것은 구체적인 것에 의존하면 안 된다
구체적인 것이 추상적인 것에 의존해야 한다
-자주 변경되는 클래스에 의존하지 마라
-불안정한 저수준의 클래스에 의존해선 안 된다