주녘공부일지

객체지향 프로그래밍 (OOP : Object Oriented Programming) 본문

Programming

객체지향 프로그래밍 (OOP : Object Oriented Programming)

주녘 2024. 2. 13. 17:03

객체지향 프로그래밍 (OOP : Object Oriented Programming)

필요한 데이터를 추상화해 상태와 행위를 가진 객체로 만들고 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

1. 특징

1) 상속 (Inheritance)

- 부모 클래스에게 정의된 클래스의 모든 필드와 메서드를 상속받은 자식 클래스가 물려받음

 

2) 다형성 (Inheritance)

- 하나의 메시지에 대해 각각의 객체가 가진 고유한 방법으로 응답할 수 있음

 ex) 오버라이딩(overriding), 오버로딩(overloading)

 

3) 캡슐화 (Encapsulation)

- 외부에서의 접근을 제한하기 위해 세부 내용을 은닉함

 ex) 데이터를 단일 단위로 숨겨 외부로부터 데이터를 보호

 

4) 추상화 (Abstraction)

- 불필요한 세부 사항을 숨겨 복잡성을 줄이는 프로세스

 

5) 동적 바인딩 (Dynamic Binding)

- 가상 함수를 호출하는 코드를 컴파일 할 때, 자식 클래스에 오버라이딩 된 함수가 실행됨 (다형 실현)

2. 5대 설계 원칙 ( SOLID 원칙 )

1) 단일 책임 원칙 (SRP : Single Responsibility Principle)

- 객체는 단 하나의 책임만 가져야 함

 

2) 개방 패쇄 원칙 (OCP : Open Closed Principle)

- 확장에는 열려있고, 수정에는 닫혀있어야 함

-> 기존 코드 변경없이 기능을 추가할 수 있어야 함

 

3) 리스코프 치환 원칙 (LSP : Liskov Substitution Principle)

- 자식 클래스는 부모 클래스를 대체할 수 있어야 함

-> 자식 클래스는 최소한 부모 클래스의 역할을 할 수 있어야 함

 

4) 인터페이스 분리 원칙 (ISP : Interface Segregation Principle)

- 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 함

-> 범용적인 인터페이스보다는 세부적인 인터페이스를 활용해 다른 기능이 영향받지 않도록 해야 함

 

5) 의존 역전 원칙 (DIP : Dependency Inversion Principle)

- 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 함

-> 객체에서 어떤 Class를 참조하게 된다면, 가능한 대상의 상위 요소를 참조