Dart 문법 OOP - 제네릭
Dart/OOP2024. 8. 21. 13:52Dart 문법 OOP - 제네릭

제네릭이란?제네릭은 클래스나 함수 정의를 선언할 때가 아니라 인스턴스화하거나 실행할 때로 타입 결정을 미루는 프로그래밍 기법이다. 주요 특징:특정 변수의 타입을 하나로 제한하지 않고 유연하게 사용할 수 있다.코드 중복을 줄이고 재사용성을 높인다.컴파일 시점에 타입 체크를 할 수 있어 런타임 오류를 줄일 수 있다.  Dart에서의 제네릭 사용 예사실 우리는 이미 많은 곳에서 제네릭을 사용하고 있다:여기서 , , 이 바로 제네릭 표현이다.  제네릭 클래스 만들기직접 제네릭 클래스를 만들어 보겠다:이 예제에서:T는 타입 파라미터로, 실제 Box 객체를 생성할 때 구체적인 타입으로 대체된다.Box 클래스는 어떤 타입의 값이든 저장할 수 있다.  제네릭 함수함수에도 제네릭을 적용할 수 있다:이 getFirst 함..

Dart 문법 OOP - 추상
Dart/OOP2024. 8. 21. 13:46Dart 문법 OOP - 추상

추상 클래스란?추상(abstract)은 상속이나 인터페이스로 사용하는 데 필요한 속성만 정의하고 인스턴스화할 수 없도록 하는 기능이다. 추상 클래스의 주요 특징:직접 인스턴스화할 수 없다.메서드의 선언만 있고 구현은 없을 수 있다 (추상 메서드).일반 메서드와 추상 메서드를 모두 포함할 수 있다.하위 클래스에서 구현해야 할 메서드를 정의한다.  Dart에서의 추상 클래스 구현Dart에서 추상 클래스를 만드는 방법을 살펴보겠다.앞서 사용했던 Idol 클래스를 추상 클래스로 변경해 보겠다:여기서 주목해야 할 점:① abstract 키워드 사용: 클래스 선언 앞에 abstract 키워드를 붙여 추상 클래스임을 명시한다.② 생성자 정의: 추상 클래스도 생성자를 가질 수 있다. 이는 주로 하위 클래스에서 supe..

Dart 문법 OOP - 믹스인
Dart/OOP2024. 8. 21. 13:35Dart 문법 OOP - 믹스인

믹스인이란?믹스인(mixin)은 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능이다.이는 다중 상속의 일부 이점을 제공하면서도, 다중 상속의 복잡성을 피할 수 있게 해준다.  Dart에서의 믹스인 특징선택적 기능 추가: 특정 클래스에 필요한 기능만을 선택적으로 추가할 수 있다.다중 적용 가능: 하나의 클래스에 여러 개의 믹스인을 적용할 수 있다.상속과의 호환성: 특정 클래스를 상속하는 클래스에서도 믹스인을 사용할 수 있다.코드 재사용: 여러 클래스 간에 공통 기능을 쉽게 공유할 수 있다.  Dart에서의 믹스인 구현예를 들어, Idol 클래스와 관련된 몇 가지 믹스인을 만들어 보겠다:여기서 주목해야 할 점:mixin 키워드 사용: Singable과 Danceable은 mixin 키워드를 사용하여 ..

Dart 문법 OOP - 인터페이스
Dart/OOP2024. 8. 20. 21:08Dart 문법 OOP - 인터페이스

인터페이스란?인터페이스는 공통으로 필요한 기능을 정의만 해두는 역할을 한다.상속이 공유되는 기능을 이어받는 개념이라면, 인터페이스는 "이런 기능이 필요하다"라고 선언만 하는 것이다.  Dart에서의 인터페이스 특징별도의 키워드 없음: Dart에는 인터페이스를 지정하는 별도의 키워드(예: Java의 interface)가 없다.클래스로 정의: Dart에서는 모든 클래스가 암묵적으로 인터페이스로 사용될 수 있다.다중 구현 가능: 상속은 단 하나의 클래스만 가능하지만, 인터페이스는 여러 개를 구현할 수 있다.모든 메서드 구현 필요: 인터페이스를 구현하는 클래스는 해당 인터페이스의 모든 메서드를 반드시 구현해야 한다.  Dart에서의 인터페이스 구현예를 들어, Idol 클래스를 인터페이스로 사용하는 GirlGro..

Dart 문법 OOP - 오버라이드
Dart/OOP2024. 8. 20. 21:03Dart 문법 OOP - 오버라이드

오버라이드란?오버라이드(override)는 부모 클래스 또는 인터페이스에 정의된 메서드를 자식 클래스에서 재정의할 때 사용된다.이를 통해 자식 클래스는 부모 클래스의 메서드를 자신의 필요에 맞게 변경하거나 확장할 수 있다.  Dart에서의 오버라이드 구현Dart에서는 override 키워드를 사용하여 메서드 오버라이드를 명시적으로 표시할 수 있다.그러나 Dart의 특징 중 하나는 override 키워드를 생략할 수 있다는 점이다.이전에 사용했던 Idol 클래스를 상속받아 메서드 오버라이드를 구현해 보겠다:여기서 주목해야 할 점:@override 어노테이션 사용:부모 클래스에 이미 존재하는 메서드를 자식 클래스에서 재정의할 경우, @override 어노테이션을 사용한다.이를 "메서드 재정의"라고도 한다. ..

Dart 문법 OOP - 상속
Dart/OOP2024. 8. 20. 20:58Dart 문법 OOP - 상속

상속의 기본 개념상속은 어떤 클래스의 기능을 다른 클래스가 사용할 수 있게 하는 기법이다.기능을 물려주는 클래스를 부모 클래스 (또는 슈퍼 클래스, 기본 클래스)라고 한다.기능을 물려받는 클래스를 자식 클래스 (또는 서브 클래스, 파생 클래스)라고 한다.Dart에서는 extends 키워드를 사용하여 상속을 구현한다.  Dart에서의 상속 구현예를 들어, 다음과 같은 Idol 클래스가 있다고 가정해보자:이제 Idol 클래스를 상속하는 BoyGroup 클래스를 만들어 보겠다: class라고 하고서 상속을 받고 있는 클래스의 이름을 짓고, extends 한 다음에 부모 클래스로 모든 속성들을 상속받고 싶은 클래스를 오른쪽에다 넣어주면 된다.그러면은 BoyGroup에서 벌써 에러가 나는데, 이 에러는 뭐냐면은 ..

Dart 문법 OOP - 게터와 세터
Dart/OOP2024. 8. 20. 19:24Dart 문법 OOP - 게터와 세터

게터와 세터의 정의게터(getter)는 말 그대로 값을 가져올 때 사용되고, 세터(setter)는 값을 지정할 때 사용된다.게터와 세터를 사용하면 클래스의 내부 구현을 숨기면서도 속성에 대한 접근을 제공할 수 있다.이는 캡슐화의 원칙을 지키면서도 유연한 인터페이스를 제공할 수 있게 해준다. Dart 프로그래밍 언어에서 게터(getter)와 세터(setter)는 객체 지향 프로그래밍의 중요한 개념이다.이들은 클래스의 속성에 접근하고 수정하는 방법을 제어하는 데 사용된다.   게터(Getter)란?게터는 객체의 특정 속성 값을 읽을 때 사용되는 특별한 메서드이다."get"이라는 단어에서 알 수 있듯이, 게터는 값을 "가져오는" 역할을 한다. 게터의 특징:값을 반환한다.매개변수를 받지 않는다.읽기 전용 속성을..

Dart 문법 OOP - private 변수
Dart/OOP2024. 8. 20. 19:18Dart 문법 OOP - private 변수

Private 변수의 정의Dart에서 private 변수는 다른 언어와 정의가 약간 다르다.일반적으로 객체 지향 프로그래밍에서 private 변수는 클래스 내부에서만 사용할 수 있는 변수를 의미한다. 그러나 Dart 언어에서는 이 개념이 조금 다르다:Dart언어에서는 private 변수가 같은 파일에서만 접근 가능한 변수이다.이는 Dart가 모듈 시스템을 파일 단위로 관리한다는 특성 때문이다.  Private 변수 선언 방법Dart에서 private 변수를 선언하는 방법은 간단하다:① private 변수는 변수명을 _ 기호로 시작해 선언할 수 있다.예를 들어: 이 예제에서 _name은 private 변수이고, age는 public 변수이다.  Private 변수의 접근 범위일반적으로 클래스 선언과 사용하..

Dart 문법 OOP - 생성자
Dart/OOP2024. 8. 20. 19:11Dart 문법 OOP - 생성자

생성자 존재 이유위 이미지 처럼 클래스를 통해 인스턴스를 만들었다고 가정해본다.  현재 위 이미지의 Idol 클래스에는 문제가 있다.클래스를 통해 여러 인스턴스를 만드는 것처럼, 블랙핑크 뿐만 아니라 BTS도 만들 수 있고 레드벨벳도 만들 수 있고 굉장히 많은 수많은 무한하게 인스턴스를 생성할 수 있다고 하였다.  하지만 위 코드 이미지 처럼, 지금 현재 지금 현재 이 Idol 클래스로는 블랙핑크란 이름으로 인스턴스를 생성할 수 밖에 없다. 하지만, 파라미터를 받아 가지고 함수의 반복적인 코드를 제거할 수 있었던 것처럼 클래스에서도 파라미터를 받을 수 있는 방법이 있다. 어떻게 받냐면은 constructor(생성자) 라는 것으로 받을 수 있게 가능하도록 만들어준다.  생성자 개념생성자(constructo..

Dart 문법 OOP - 클래스와 인스턴스
Dart/OOP2024. 8. 20. 18:47Dart 문법 OOP - 클래스와 인스턴스

OOP란?OOP 같은 경우는 영어로 Object Oriented Programming의 약어로, 클래스를 가지고 프로그래밍을 하느 것을 OOP라고 애기를 한다. 클래스 키워드를 사용하면은 여러가지 정의를 넣을 수가 있다. 어떤 걸 할 수 있냐면은 예를 들어서 Idol이라는 클래스를 위 이미지 처럼, 만들었다고 한번 가정해본다.  그러면 Idol 클래스에는 변수인 이름이 있고 멤버들이 있으며, 함수로서 기능인 인사하는 기능 그리고 멤버 소개하는 기능 뭐 이런 것들이 있을 것이다.   객체지향 프로그래밍의 중요성객체지향 프로그래밍(OOP)은 현대 소프트웨어 개발에서 핵심적인 패러다임이다.OOP의 주요 장점은 다음과 같다:코드 구조화: 관련 있는 데이터와 기능을 하나의 단위(클래스)로 묶어 관리한다.재사용성:..

image