OOP 객체 지향 프로그래밍

초코침·2023년 3월 15일
0

TIL

목록 보기
2/2

객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나로, 컴퓨터 프로그램을 여러 개의 독립된 객체들의 모임으로 파악하고자하는 개념이다. 각 객체는 메시지를 주고 받아야 하며, 데이터를 처리할 수 있어야 한다.

객체 지향 프로그래밍은 사람이 보는 세계를 흉내낸 방법이기 때문에 프로그래밍을 배우기 쉽고,
재사용성이 높으며,
개발과 유지보수를 쉽게할 수 있다는 장점이 있다.

객체지향 설계 원칙 SOLID


SRP: 단일 책임 원칙

Single Responsibility Principle

  • 객체는 단 하나의 책임만 가져야 한다.
  • 응집도는 높고 결합도는 낮게 설계한다.

OCP: 개방 폐쇄 원칙

Open-Closed Principle

  • 기존 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다.
  • 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화한다.

LSP: 리스코프 치환 원칙

Liskov Substitution Principle

  • 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
  • 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행한다.

ISP: 인터페이스 분리 원칙

Interface Segretation Principle

  • 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
  • 인터페이스는 하나의 책임을 가져야 한다.

DIP: 의존 역전 원칙

Dependency Inversion Principle

  • 각 객체들 간의 의존 관계가 성림될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다.
  • 일반적으로 인터페이스를 활용하면 이 원칙을 지킬 수 있다.

객체지향 프로그래밍 언어의 특징


캡슐화 Encapsulation

  • 속성과 메서드를 하나로 묶는 것이다.
  • 캡슐화된 객체는 세부 내용이 외부에 드러나지 않아, 변경이 발생할 때 오류의 파급 효과가 적다.
  • 재사용이 용이하다.

정보 은닉 Information Hiding

  • 다른 객체에게 자신의 정보를 숨기고 자신의 연산(getter, setter)만을 통해 접근을 허용하는 것이다.
  • 캡슐화와 연관이 있는 개념이다.

추상화 Abstraction

  • 불필요한 부분은 생략하고 객체의 속성 중 중요한 것에만 중점을 둬 개략화(모델화)하는 것이다.
  • 데이터의 공통된 성질을 추출해 부모 클래스를 선정하는 개념이다.
  • 추상화를 통해 인터페이스가 단순해지도록 할 수 있다.

상속성 Inheritance

  • 이미 정의된 상위 클래스의 모든 속성과 메서드를 하위 클래스가 물려받는 것이다.
  • 동일한 속성과 메서드를 다시 정의하지 않고서도 자신의 속성으로 사용할 수 있다.

다형성 Polymorphism

  • 메시지에 의해 객체가 연산을 수행할 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력이다.
  • 객체들은 동일한 메서드로 같은 의미의 응답을 한다.
profile
블로그 이사중 🚚 (https://sungjihyun.vercel.app)

0개의 댓글