dart class, abstract, Interface 그리고 Mixin

Kim Da HEE·2023년 11월 29일
0

Dart 언어

목록 보기
2/11

class를 사용하는 이유, abstract, interface, 그리고 mixin에 대해 알아보고 이야기를 나누는 시간을 가졌다.

의견 공유를 통해 내가 이해한 바와 검색을 통한 정보를 정리해보고자 한다.

class & object

  • class

    • 객체 지향 프로그래밍(OOP)의 기본 구성 요소 중 하나로, 데이터와 해당 데이터를 처리하는 method(함수)를 포함하는 논리적인 단위
    • class는 실제로 존재하는 객체(Object)를 생성하기 위한 템플릿 또는 청사진 역할을 한다.

단순하게 비유해 보자면 class 는 붕어빵 틀, 공장과 같다. 쉽게 객체를 생성할 수 있도록 도와준다. 또한 개발자가 가장 싫어한다고 하는 반복을 줄일 수 있도록 도와준다.
직접해보니 정의하는 과정이 익숙하지 않고 더 길어진다고 생각되기도 하지만, 한번 class를 만들어 두면 class는 상속성과 확장성이 있기 때문에 쉽게 객체를 만들 수 있다. 또한 협엽에도 용이하고 유지 비용 보수도 줄일 수 있다고 한다.

class를 사용하는 주요 이유

  • 코드의 모듈화
  • 재사용성
  • 상속
  • 다형성
  • 캡슐화
  • 유지보수성
  • object

    객체. 객체지향에서 처음 설계되었다.

    abstract

    • 일부 메서드의 몸체(body)를 제공하지 않고 선언만 하는 class
    • 직접적으로 인스턴스화될 수 없으며, 상속을 통해 하위 class에서 완전한 class로 완성되어야 한다.

    abstract class는 말 그대로 추상 class. 마치 피자와 같아서 여러가지 나중에 여러가지 토핑들로 완성해야 한다는 이야기를 나누었다. 완성하지 않고 이러한 함수가 필요하다 어느정도 기능을 만들고 다른사람에게 완성하라 라고 하는 설계도라고 할 수 있다.

    interface

    • 다중 상속을 지원하고, 관련 없는 클래스들 간에 공통된 행동을 정의하여 일관성을 유지하고자 한다.
    • 추상 메서드와 상수만을 정의하며, 메서드의 구현을 제공하지 않는다.

    dart언어에서도 다른 객체 지향언어의 인터페이스와 비슷하게 동작하며, 코드의 추상화와 모듈화를 지원한다고 한다. 인터페이스는 클래스의 청사진. 클래스가 인스턴스의 설계도라면 인터페이스는 더 상위의 청사진이라고 할 수 있다. abstract와 겹치는 부분이 많다.

    Mixin

    • 객체 지향 프로그래밍에서 코드를 재사용하기 위한 기술 중 하나
    • 클래스에 다른 클래스의 기능을 "혼합"하는 것을 말한다.
    • 클래스를 상속받는 대신에 mixin을 사용하면 다중 상속의 일부 문제를 피할 수 있다.

    dart 에서는 mixin을 구현하기 위해 'with'를 사용한다. class A with B를 사용하여 B를 A에 혼합한다. class A와 class B를 섞어 쓰고 싶을때 사용한다.여러 class로부터 다중상속을 받는것과 같은 효과를 지닌다.



    학습과정 중 내가 이해한 내용과 약간 검색으로 내용을 작성해보았다. 다음주 개념이 확립되면 더 추가해보도록 하겠다.

0개의 댓글