# CPP_SOLID
DIP
Dependency Inversion Principle 구체화가 아닌 추상화에 의존해야한다. Se fier à des abstractions, pas à des concrétisations. 즉, 구현클래스(구현체)가 아니라 인터페이스(역활)에 의존해야한다. Autrement dit, cela devrait dépendre de l'interface (rôle) et non de la classe d'implémentation (concrétisations). pourquoi "DIP"? 연극을 예로들면, Par exemple, "Théâtre", 배역 (인터페이스) - 고수준 role (Interface) - high level 배우(구현체) - 저수준 Acteur (implementation) - low level 이때, 연극은 배우보다는 배역에 초점을 두고 기획되어야한다. (la pièce do
ISP
Interface Segragation Principle 범용 인터페이스 하나보다는 특정 클라이언트를 위한 여러 개의 인터페이스 분리가 더 좋다. Plusieurs interfaces pour des clients spécifiques plutôt qu'une interface universelle la séparation est meilleure. 예 (example): > 운전자가 자동차를 운전한다. (Le conducteur conduit la voiture.)-> "운전자"가 "자동차"를 운전한다. ("Le conducteur" conduit "la voiture".)-> 운전자 : 택시기사, 우버드라이버... (conducteur : Chauffeur de taxi, chauffeur d'Uber...) 자동차: 버스, 택시... (voiture : bus, taxi...) 확장성이 커진다. (l'ex
LSP
Liskov Substitution Principle 객체는 프로그램의 정확성을 깨지 않으면서, 하위 타입의 인스턴스로 바꿀수있어야한다. 즉, 서브타입은 언제나 기반타입으로 교체할수 있어야한다. Objets sans casser l'exactitude du programme, peut le convertir en une instance d'un sous-type. Autrement dit, un sous-type peut toujours être remplacé par un type de base. 서브타입은 언제나 기반 타입과 호환 될수 있어야한다. Un sous-type doit toujours être compatible avec son type de base. 상속이란, 재사용 또는 확장을 뜻한다. 상속을 통한 재사용은 기반클래스와 서브클래스 사이에 IS-A관계가 있을 경우로만 제한 되어야한다. 그 외의 경우
OCP
Open-Closed Principle 높은 응집도와 낮은 결합도. Cohésivité élevée et faible adhérence. c'est quoi "OCP"? - 높은 응집도 (Cohésivité élevée) 하나의 모듈, 클래스가 하나의 책임에 집중되어있다는 듯이다. 같은 책임을 기반으로 하나의 객체를 설계하여, 객체의 변경이 발생하더라도 다른곳에 미치는 영향이 제한적이다. Un module et une classe se concentrent sur une responsabilité. En concevant un objet basé sur la même responsabilité, même si un objet doit etre modifié, l'effet sur d'autres objets est limité. 즉, 새로운 변경사항이 발생했을때, 유연하게 코드를
SRP
Single Responsibility Principle 하나의 클래스는 하나의 책임만 가져야한다. Une classe ne devrait avoir qu'une seule responsabilité. --- problematique : pourquoi "SRP" ? 클래스는 기능 또는 목적에 의해서 만들어진다. 하나의 클래스에 다기능 또는 다목적을 포함시키면, 단일 책임원칙을 위반할 가능성이 높아진다. Une classe sont créée par fonction ou objectif. Inclurer multifonctionnel ou polyvalent dans une classe, augmente probabilité de violer "Single Responsibility Principle". 그렇다면, 하나의 클래스에 얼마만큼의 기능과 목적을 포함시켜야할까? alors, combien de fonctions ou d'object
SOLID
객체지향의 5원칙 (5 principes de OPP) : SOLID SOLID는 디자인패턴을 말한다. SOLID est un design pattern. 여기서 디자인이란 설계를 말하는것이며, 패턴이란 예를 뜻한다. Ici, design signifie design, et pattern signifie exemple. 즉, 여러 프로그래머들의 경험으로부터, 패턴들을 도출한것이다. Autrement dit, les modèles sont dérivés des expériences de plusieurs programmeurs. Srp (Single Responsibility Principle) : 단일 책임 원칙 Ocp (Open-Closed Principle) : 개방 폐쇄 원칙 Lsp (Liskov Substitution Principle) : 리스코프 치환 원칙 Isp (Interface Segragation