I'm pine thank you and you?

객체 지향 프로그래밍에 대해서 본문

CS

객체 지향 프로그래밍에 대해서

SollyJ 2023. 6. 6. 12:29

캡슐화

정보 은닉: 필요 없는 정보는 외부에서 접근하지 못하도록 제한

👉 접근 지정자

높은 응집도, 낮은 결합도로 유연함과 유지보수성 증가

추상화

여러 개의 객체가 공통된 모양을 갖는 경우 이 공통된 모양을 클래스로 정의해두고 사용하는 것

👉 클래스, 인스턴스

상속

하위 클래스(derived class)가 상위 클래스(based class)의 모든 것을 물려받는

👉 코드 중복 방지

기존 상위 클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념

👉 상위 클래스 내용을 확장 하고자 할 때

다형성

형태가 같은데 다른 기능을 하는 것을 의미

동일한 메시지에 대하여 다르게 반응하는 성질

ex)
여자가 숫자 1, 2 입력 → 1+2 출력

남자가 숫자 1, 2 입력 → 1*2 출력

개별적인 함수를 2개를 만들지 않고, 

“인자값을 받아 특정한 결과값을 출력한다”라는 *공통적인 행위*를 미리 정의해두고 *객체에 따라 행동을 달리*하도록 하는 것이 다형성

오버라이딩, 오버로딩



SOLID 원칙

S 단일 책임 원칙

  • 객체는 단 하나의 책임만을 가져야한다.
  • 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.

O 개방 폐쇄 원칙

  • 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.

L 리스코프 치환 원칙

  • 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야한다.

I 인터페이스 분리 원칙

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 인터페이스가 명확해지고, 대체 가능성이 높아지기 때문에

D 의존관계 역전 원칙

  • 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라.
  • 쉽게 이야기하면, 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻