간단이론정리

[OOP] 객체 지향 4대 특징 및 객체 지향 5대 원칙(SOLID)

눕고싶은사람 2024. 6. 20. 18:26

객체 지향 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

https://jja2han.tistory.com/330#%F0%9F%93%95%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98%204%EA%B0%80%EC%A7%80%20%ED%8A%B9%EC%A7%95-1

 

객체 지향 프로그래밍(OOP)의 개념과 4가지 특징

우선 객체지향을 설명하기 전에 객체지향의 반대말인 절차적 프로그래밍에 대해서 설명하겠습니다. 그러는 편이 왜 객체지향을 사용하는지 이해하기 편할것입니다. 📕절차적 프로그래밍 📗

jja2han.tistory.com

 

https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-SOLID

 

💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D

객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어

inpa.tistory.com