객체 지향 4대 특징
- 캡슐화(Encapsultation)
- 상속(Inheritance)
- 추상화(Abstraction)
- 다형성(Polymorphism)
1. 캡슐화(Encapsultation)
- 연관된 데이터(변수)와 기능(메소드)을 하나로 묶고, 불필요한 요소를 외부에 노출되지 않도록 설계하는 방식을 뜻한다. 자바에서는 접근 제어자(public, private, default, protected)를 통해 캡슐화를 구현할 수 있다.
- 데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능 보호
- 데이터 은닉 : 내부의 동작을 감추고 외부에 필요한 부분만 노출
2. 상속(Inheritance)
- 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다. 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메서드를 물려받을 수 있다.
3. 추상화(Abstraction)
- 추상화는 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것이다. 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지보수를 용이하게 하는 것이다.
4. 다형성(Polymorphism)
- 하나의 객체나 메서드가 여러 가지 다른 형태를 가질 수 있는 것을 뜻한다.
- 메서드 오버라이딩 : 부모 클래스의 메서드를 자식 클래스에서 재정의해서 사용하는 것을 말하며, 자식 클래스는 부모 클래스의 메서드를 재활용하면서, 독자적인 기능을 추가할 수 있다.
- 메서드 오버로딩 : 같은 이름의 메서드를 다양한 매개변수 타입과 개수로 오버로딩하여 사용하는 것을 말하며,
오버로딩은 메서드 이름을 동일하게 유지하면서도, 다양한 상황에서 유연하게 대응할 수 있는 방법을 제공한다.
객체 지향 5대 원칙(SOLID)
- 코드 확장, 유지 보수하기 쉬워지며 불필요한 복잡성을 제거 할 수 있어 생산성을 높일 수 있다.
- 단일 책임 원칙(Single Responsibility Principle)
- 개방-폐쇄 원칙(Open Closed Priciple)
- 리스코프 치환 원칙(Listov Substitution Principle)
- 인터페이스 분리 원칙(Interface Segregation Principle)
- 의존 역전 원칙(Dependency Inversion Principle)
1. 단일 책임 원칙(Single Responsibility Principle)
- 클래스(객체)는 단 하나의 책임(기능)만 가져야 한다.
- 하나의 클래스는 하나의 기능을 담당하여 수행하여 프로그램의 유지보수성을 높이기 위한 설계.
2. 개방-폐쇄 원칙(Open Closed Priciple)
- 클래스는 확장에 열려있고 수정에 닫혀 있어야 한다.
- 기능 추가 시 클래스 확장을 통해 손쉽게 추가하면서 클래스 수정은 최소화 하도록.
- 추상화 사용을 통한 관계 구축을 권장하는 것.
3. 리스코프 치환 원칙(Listov Substitution Principle)
- 서브 타입은 언제나 부모 타입으로 교체 가능 해야 한다.
- 다형성 원리를 이용하기 위해 나온 원칙.
- 부모 메서드의 오버라이딩을 조심스럽게 따져가며 해야 한다.
4. 인터페이스 분리 원칙(Interface Segregation Principle)
- 인터페이스를 각각 목적에 맞게 잘 분리 해야 한다.
- SRP와 비슷하게 인터페이스의 단일 책임 강조
- 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공하는 것을 목표로 한다.
5. 의존 역전 원칙(Dependency Inversion Principle)
- 클래스를 직접 참조 하는 것이 아닌 대상의 상위 요소를 참조 할 수 있도록 하는 것.
- 클래스가 아닌 인터페이스를 의존해라.
OOP는 유연하며 코드의 재사용을 줄이고 가독성과 유지보수성을 높이는데 의미가 있다.
출처 및 참고
https://caffeineoverflow.tistory.com/38
[Java] 객체지향의 4대 특징 - 캡슐화, 추상화, 상속, 다형성
☕️ 캡슐화 연관된 데이터(변수)와 기능(메소드)을 하나로 묶고, 불필요한 요소를 외부에 노출되지 않도록 설계하는 방식을 뜻한다. 자바에서는 접근 제어자(public, private, default, protected)를 통해
caffeineoverflow.tistory.com
객체 지향 프로그래밍(OOP)의 개념과 4가지 특징
우선 객체지향을 설명하기 전에 객체지향의 반대말인 절차적 프로그래밍에 대해서 설명하겠습니다. 그러는 편이 왜 객체지향을 사용하는지 이해하기 편할것입니다. 📕절차적 프로그래밍 📗
jja2han.tistory.com
💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어
inpa.tistory.com
'간단이론정리' 카테고리의 다른 글
Nginx 알아보기 (0) | 2024.08.06 |
---|---|
[OOP] 디자인 패턴(Design Pattern) 정리 (0) | 2024.06.20 |
[OS] 프로세스(Process)와 스레드(Thread) (0) | 2024.06.12 |
Filter, Interceptor 그리고 AOP (0) | 2024.06.12 |
트랜잭션 격리수준(Isolation Level) (0) | 2024.06.11 |