CS

[CS] 객체지향 프로그래밍의 4대 특징

리네엔 2024. 10. 14. 22:48

객체지향 프로그래밍(OOP) 특징 요약

특징 설명 장점
캡슐화 데이터와 메서드를 하나의 객체로 묶고, 외부에서 접근을 제한 데이터 보호, 유지보수 용이, 코드 복잡성 감소
상속 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 확장 코드 재사용, 유지보수 편리, 확장성 향상
다형성 동일한 인터페이스나 부모 클래스로 여러 형태의 객체 사용 가능 유연한 설계, 코드 간결화, 다양한 객체 관리 가능
추상화 필요한 부분만 노출하고 세부 구현은 숨김 복잡성 감소, 코드 유연성 증가, 표준화 및 일관성 유지

1. 캡슐화 (Encapsulation)

  • What is Encapsulation?
    • 데이터와 메서드를 하나의 객체로 묶어 외부로부터 숨기는 방식
  • Why we do Encapsulation?
    • 정보 은닉 : 내부 구현을 숨기고, 객체 간의 상호작용을 제한하여 안전성과 유지보수성을 높임
    • 데이터 보호 : 직접 데이터에 접근할 수 없으므로 잘못된 데이터 변경이나 조작을 방지할 수 있음.

      2. 상속 (Inheritance)

  • What is Inheritance?
    • 기존 클래스의 속성과 매서드를 새로운 클래스가 물려받아 재사용하는 기능
  • Why we do Inheritance?
    • 코드의 재사용성 : 부모 클래스에서 이미 구현된 코드를 재사용함으러써 중복코드를 줄일 수 있음.
    • 확장성 : 기존 기능을 확장하여 새로운 기능을 쉽게 추가할 수 있음
    • 유지보수성 향상

      3. 다형성 (Polymorphism)

  • What is Polymorphism?
    • 하나의 메서드나 객체가 여러 가지 형태로 동작할 수 있는 것
    • 주로 메서드 오버로딩과 메서드 오버라이딩으로 구현됨
  • Why we do Polymorphism?
    • 유연한 설계 : 동일한 인터페이스로 다양한 객체를 처리할 수 있어 코드의 유연성 증가
    • 확장성 : 기능이 확장될 대 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있음
    • 코드의 간결화 : 여러 형태의 객체를 하나의 참조로 관리할 수 있어 간결하게 유지할 수 있음.

      4. 추상화 (Abstraction)

  • What is Abstraction?
    • 필요한 정보만 제공하고 불필요한 세부사항은 숨기는 것
    • 주로 추상클래스 혹은 인터페이스로 구현됨.
  • Why we do Abstraction?
    • 복잡성 감소 : 복잡한 시스템을 단순화하여 핵심 로직만 노출
    • 코드의 유연성 증가 : 구체적인 구현을 추상화하여 변경에 유연하게 대응 가능
    • 표준화 : 인터페이스를 통해 객체의 공통된 동작을 정의하고 이를 통해 객체의 일관성을 유지할 수 있음.

'CS' 카테고리의 다른 글

[CS] SOLID 원칙  (0) 2024.10.14
[CS] UML_ClassDiagram  (0) 2024.10.14