[TIL] 24.09.27 FRI

GDORI·2024년 9월 27일
0

TIL

목록 보기
54/79
post-thumbnail

오늘 푼 알고리즘 코드카타

12949. 행렬의 곱셈

객체 지향

객체 지향은 책임과 권한을 가진 객체들이 서로 메시지를 주고받아 협력하여 필요한 기능을 수행하는 방법론이다. 크고 복잡한 시스템도 효과적으로 분해하고 구성하며, 개발자는 손쉽게 이해하고 효율적으로 관리할 수 있게 도와준다.

캡슐화, 다형성, 상속을 지원하면서 데이터 접근 제한이 가능하면 객체지향, 아니면 절차지향적인 성격을 가진다.

코딩을 할 때 중요한게 얼만큼 깔끔하고 이쁘게 짜는가도 중요하지만, 코드 변경점이 발생했을 때 최대한 적게 수정하여 시간비용을 줄이는게 중요하다. 즉 유지보수성이 쉬워야한다.
또, 발생한 문제 지점을 빠르게 파악하고 빠르게 고칠 수 있게 코드를 짜는 것을 목표로 해야한다.

그런점에서 객체 지향 프로그래밍은 코드의 구조와 동작을 직관적으로 파악할 수 있으며 예시로 자동차 객체에서 악셀기능, 브레이크 기능 등의 메서드를 가지고 있을 때 스탑이 안되는 증상이 있으면 브레이크 기능을 우선적으로 보면 된다.

객체 지향 프로그래밍 핵심 원칙 4가지

  1. 캡슐화
    객체 내부의 세부적인 사항을 감추는 행위, 중요한 정보를 외부에 노출되지 않도록 조치하는 것을 캡슐화라고 한다.
  2. 상속
    클래스가 가진 특징을 다른 클래스에게 그대로 물려주는 것을 상속이라고 한다. 코드의 중복을 줄일 수 있고 상위 클래스 데이터를 가져와 변경할 수 있어 전체 코드 일관성을 유지할 수 있다.
  3. 추상화
    객체에서 공통적인 부분을 모아 상위 개념으로 새롭게 정의하는 것을 추상화라고 한다. 불필요 세부 정보를 생략하고 중요한 특징만 강조하여 코드를 간결하고 관리하기 쉽게 만드는 원칙이다.
  4. 다형성
    하나의 객체,클래스가 다양한 형태로 동작하는 것을 다형성이라고 하며 특징에 때라 같은 기능이 다르게 재구성되는 것을 뜻한다. 동일한 메서드나 함수명을 사용해도 클래스마다 다르게 작동하는 것이 다형성의 핵심이다.(오버라이딩)

SOLID

1. Single Responsibility Principle,SRP

단일 책임의 원칙, 하나의 객체는 하나의 책임만을 가진다.
한 클래스에서 문제가 생겼을 때 발생하는 책임이 2가지 이상이 되면 안된다는 뜻이다. 사용자의 설정을 변경하는 책임을 가진 클래스와 인증을 검증하는 책임을 가진 클래스가 한 클래스로 묶인게 아니라 두 클래스로 묶이는게 정상이다.

2. Open-Closed Principle, OCP

개방-폐쇄 원칙, 개체는 확장성을 허가하나 변경은 돼선 안된다.
기존 코드에 영향을 주지 않고 새로운 기능이나 구성요소를 추가해야한다는 뜻이다.
작은 요구사항 하나 반영하는데에 모든 코드를 수정한다면 스트레스 및 비용이 많이 들 것이다.

3. Liskov substitution principle,LSP

리스코프 치환 원칙, 부모 클래스와 자식클래식의 객체를 서로 바꾸더라도 잘못된 결과를 도출해서는 안된다.
직사각형을 만드는 부모클래스에서 상속받아 정사각형을 만드는 클래스를 만들었을 때 직사각형은 높이 너비가 독립적으로 정의하는 것에 비해 정사각형은 고정되어있기 때문에 같은 값을 도출할 수 없다.
이럴경우 두 클래스를 모두 포함하는 인터페이스를 구현해야하며, 새로운 부모클래스를 생성하고 직사각형과 정사각형이 상속받도록 코드를 수정해야한다.

4. Interface segregation principle, ISP

인터페이스 분리 원칙, 인터페이스는 필요하지 않는 기능을 의존하지 않도록 최대한 작고 구체적으로 유지해야한다.
프린트의 경우 복사,스캔,팩스를 한 인터페이스에 담지 않고 각각 나누어 선언하여 필요한 것만 가져다 쓸 수 있게 한다.

5. Dependency Inversion Principle, DIP

의존성 역전 원칙, 추상화에 의존하라, 구체화에 의존하지 마라
높은 계층의 모듈이 저수준 모듈에 직접 의존해서는 안된다. 둘 다 추상화에 의존해야 한다. 추상화는 세부 사항에 의존하지 않아야 하고 세부 사항이 추상화에 의존해야한다.

0개국어인가... 한국말이 어렵네 😰

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글