본문 바로가기
앱 개발 공부

Generics, Collections

by polissage 2024. 1. 6.
728x90

Generics과 Collections

1. Collections: 데이터를 모아 보여주는 자료 구조

   • 대표적으로 List(array), Set, Map 등이 있다

2. Generics: collection이 가지고 있는 데이터의 타입을 지정. 코드의 안정성 및 재사용성을 위해 사용된다.

Collections

Lists

스퀘어 브라켓([ ]) 안에 리스트 항목을 콤마로 구분하여 넣어준다.

 

var list = [1, 2, 3];
//목록을 만들때는 대괄호 안에

 

 1. 유형

 

 
 var number = new List();
 // new List는 list 클래스의 생성자를 통해서 새로운 인스턴스를 생성하고, 이를 number라는 변수에 할당한 것.
 // 변수 number가 List 객체에 참조를 저장하고 있다고도 할 수 있다.
 // 변수가 참조하는 객체에 따라 타입이 결정된다. 위 케이스에서 변수 타입은 List이다.

   

  1) fixed-length list: 리스트 내에 지정한 수의 데이터만 올 수 있음

    • 괄호 안에 숫자를 넣으면 데이터 수가 정해진다.

  2) growable list: 괄호 안을 비워두면 데이터 수에 제한이 없게 된다.

 

2. List<dynamic>인 경우 리스트 안에 다양한 타입의 데이터가 들어올 수 있다.

    < > 안에서 타입을 지정해 주는 것이 Generic 

 

Generics

< > 안에서 콜렉션의 타입 매개변수를 지정해준다. List<String>은 List of String이라고 부른다.

 

var names = <String>[];
names.addAll(['Seth', 'Kathy', 'Lars']);
names.add(42); // Error

 

위 예시에서 타입이 String인 리스트에 숫자를 넣으면 에러가 발생한다.

 

dart는 타입을 판별할 수 있어(type safe language) 컴파일시에 문제점을 잡아낸다. 항상 변수와 변수의 타입이 일치하는지 확인하는 타입 체크를 한다. type annotation(추론)으로 인해 일일히 지정해주는 절차는 생략 가능하나, 가능하면 타입 안정성을 위해 타입을 지정하는 것이 좋다.

 


객체와 인스턴스

1. class: 객체가 가져야 하는 속성과 기능을 정의한 내용을 담고 있는 설계도

  • 설계도의 일부로 생성자를 사용

class Person {
	String name;
    int age;
    String sex;
}

 

2. 객체: 클래스의 타입으로 선언된 것. 객체는 클래스의 인스턴스이다.

  • 다트에서는 변수에 넣을 수 있는 모든 것을 객체로 취급한다(함수, 불리언도 포함).

 

3. 인스턴스: 클래스를 기반으로 생성된 것으로 클래스의 속성과 기능을 똑같이 가지고 있으며, 객체가 메모리에 할당되어 실제로 사용되 때 인스턴스라고 부름.

  • 하나의 클래스를 가지고 수많은 인스턴스를 만들 수 있다.

 

void main() {
  Person p1 = new Person();	//Person 클래스로 p1이라 불리우는 인스턴스를 생성
  p1.age = 30;
  p1.sex = 'male'

 

 

 

instance란?

인스턴스란 객체 지향 프로그래밍(Object Oriented Programming)에서 class에 소속된 개별적인 객체를 말한다.예를 들어, user라는 클래스를 정의하고 hong이라는 객체를 생성할 경우, hong이라는 객체는 user

velog.io

 

flutter 클래스, 객체, 인스턴스, 생성자

class: 객체가 가져야 하는 속성과 기능을 정의한 내용을 담고 있는 설계도객체: 클래스가 정의된 후 메모리상에 할당된 것인스턴스: 클래스를 기반으로 생성된 것으로 클래스의 속성과 기능을

velog.io

 

728x90

댓글