W8

justyoon·2023년 5월 7일
0

회고

  • 이번 일주일을 되돌아 보았을 때 공부한 내용이 OOP의 핵심 개념들 과 관계된 것을 알 수 있었다.
  • 특히 지난 Django, DRF와 관계된 형식의 연습을 통해서 객체지향을 더 이해하고 OOP작성에 좀 더 익숙해질 수 있었다.

객체지향의 대표적인 특징

추상화(Abstraction) = 모델링

  • 객체지향에서 추상화는 모델링이며 구체적인 것을 상세히 하지 않고 필요성에 의한 특성만을 가지고 구성하는 것을 말합니다.
  • 코드상에서는 동작의 구현을 제외한 선언하는 부분에 해당하며 설계하는 부분을 말합니다.

캡슐화(Encapsulation) = 정보 은닉

  • 프로그램 내에서 같은 기능을 목적으로 작성된 코드를 모아서 다른 곳(클래스)에서 안보이게 숨기는 것.
  • 클래스 내에서 사용할 속성은 숨기고(Private), 객체가 수행할 기능은 공개(Public)하는 것을 의미한다.

상속(Inheritance) = 재사용 + 확장

  • 클래스 사이에 부모와 자식 클래스가 존재할 수 있다는 뜻.
  • 자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용할 수 있다.

다형성(Polymorphism) = 사용편의

  • 하나의 객체가 여러 가지 형태를 가질 수 있는 것.
  • 오버라이딩(Overriding)
    부모 클래스에 정의되어 있는 메서드를 자식클래스에서 재정의하여 사용하는 것.
  • 오버로딩(Overloading)
    같은 이름을 가진 메서드를 인자값의 종류나 개수를 다르게 하여 다른 기능을 구현하도록 정의하는 것.

5 원칙 (SOLID principles)

1. 단일 책임 원칙(Single Responsibility Principle)

모든 클래스는 각각 하나의 책임만 가져야 한다. 즉, 특수한 목적을 수행하도록 만든 클래스는 여러 기능이 아닌, 해당 목적의 기능만을 수행해야 단일한 책임을 지닐 수 있다.

2. 개방-폐쇄 원칙(Open Closed Principle)

클래스는 확장에는 열려있고 수정에는 닫혀있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.

3. 리스코프 치환 원칙(Liskov Substitution Principle)

자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 즉, 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야한다.

4. 인터페이스 분리 원칙(Interface Segregation Principle)

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.

5. 의존 관계 역전 원칙(Dependency Inversion Principle)

의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. 즉, 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.


OOP 연습

Github링크

참고자료

HyunGyu-Kim github.io
okayoon.tistory.com : 객체지향프로그래밍이란?

profile
with gratitude, optimism is sustainable

0개의 댓글