본문 바로가기

개발(합니다)/Flutter&android&ios

[flutter-05] 클래스와 위젯

반응형

클래스와 위젯의 관계

스마트폰을 만들기 위해서는 설계도에 근거해서 제품을 만들어야 합니다.

설계도에는 어떤 부품과 어떤 기능을 담당하는지 명시되어야 되어야 합니다.

설계도를 기반으로 생산한 스마트폰은 각각 사용자에 따라 유심도 달라지고 통신사나 설치되는 앱도 달라지며 고유한 시리얼 번호를 가지게 되면서 같은 설계도에서 만들어진 스마트폰이지만 사용 용도나 고유 번호는 개별적으로 구분됩니다.

다트에서는 설계도를 클래스라고 하며 생산된 개인의 스마트폰을 인스턴스라고 합니다.

프로그래밍에서 클래스 : 객체가 가져야 하는 속성과 기능을 정의한 내용을 담고 있는 설계도 역할
프로그래밍에서 객체 : 클래스가 정의된 후 메모리상에서 할당되었을 때 이를 객체라고 함
프로그래밍에서 인스턴스 : 클래스 기반으로 생성 되고 클래스의 속성과 기능을 똑같이 가지고 있는 프로그래밍 상에서 사용되는 대상

class 사용법

클래스로 객체를 만들어 사용하는 벙법

class Person {
    String name; 
    int age;
    String ss;

  Person(String name, int age, String ss) {
      this.name = name;
    this.age = age;
    this.ss = ss;
  }
}

void main() {
    Person p = new Person("Kim", 30, "Male");
  print(p);
  print(p.age);

}

자세히 보기

  • 생성자와 관련된 함수의 구조와 기능
  • 생성자의 구조와 역할
  • 클래스와 위젯의 관계
  • 생성자
    • 생성자를 통해 객체의 값들을 최초에 정의해줄 수 있습니다.
    • 생성자를 정의하지 않으면 Person(){} 이라는 기본 생성자를 다트에서 자동으로 만들어 줍니다.
    • 인스턴스가 생성 할 때 딱 한번만 호출합니다.
    • class Person {
      String name; : 멤버 변수인 String 타입의 name 입니다.
      int age; : 멤버 변수인 int 타입의 age 입니다.
      String ss; : 멤버 변수인 String 타입의 ss 입니다.
      }
    • Person(String name, int age, String ss) { : 생성자에서 생성함과 동시에 정의하고자 하는 arguments 를 입력받습니다.
                      : 멤버 변수와 atguments를 구분하고 위해 this를 사용하며 this는 멤버변수를 가리킵니다.
      this.name = name;   : 받은 arguments 중 name을 반드시 초기화 해주어야 합니다.
      this.age = age;     : 받은 arguments 중 age을 반드시 초기화 해주어야 합니다.
      this.ss = ss;     : 받은 arguments 중 ss을 반드시 초기화 해주어야 합니다.
      
      }
      
      Person p = new Person("Kim", 30, "Male");
      
  • named argument : 클래스 내에 생성자가 가지고 있는 값을 순서와 상관 없이 선택 사항으로 받을 수 있게 만들어 줍니다. 이 방식은 flutter의 위젯에서 가장 강력한 역할을 합니다. (ex : Scaffold( appBar: AppBar()); )
class Person {
    String name; 
    int age;
    String ss;
    //   Person(String name, int age, String ss) {
        //       this.name = name;
        //     this.age = age;
        //     this.ss = ss;
    //   }

      Person({String name, int age, String ss}){
        this.name = name;
        this.age = age;
        this.ss = ss;
      }
}

void main() {
//     Person p = new Person("Kim", 30, "Male");
    Person p = new Person(name: "Kim", age: 30, ss: "Male");
    print(p);
    print(p.age);
}
  • 함수
    • addNumber() {} : 함수의 첫 글자는 소문자로 시작하고 연결하는 문자의 첫 글자는 대문자가 옵니다.
    • addNumber(int num1, int num2) { return num1 + num2; } : 두 개의 매개 변수를 받아 덧셈을 하고 리턴하는 함수입니다.
    • addNumber(3, 4); : 결과를 7을 받아 볼 수 있습니다.
    • void addNumber(int num1, int num2) { return num1 + num2; } : void addNumber는 리턴이 없는 형태의 함수로 return 을 제거해 주어야 합니다.
    • addNumber(num1, num2) { return num1 + num2; } : 다트는 타입 추론으로 자료 형을 입력하지 않아도 오류가 발생하지 않지만 addNumber("1", 2) 형태로 다른 타입을 입력하면 오류가 발생합니다.
반응형