0728_Flutter_class와 widget의 이해
class ans Widget
1. class = 설계 도면의 의미
객체에 대한 속성 및 기능이 들어가 있어야 함
- 속성 : 예)액정, 카메라 모듈, 홈버튼, 스크린
- 기능 : 예)전화 걸기, 사진찍기, 인터넷 검색 등
2. 인스턴스 = 설계 도면으로 만들어진 스마트폰 각각 하나를 뜻함 (예시)
class를 기반으로 생성 됨
class의 정의된 속성과 기능으로 만들어진 사물을 뜻함
3. 프로그래밍 상에서의 객체
클래스가 정의된 후 메모리상에 할당되었을 때 이를 객체라고 함
4. 기본 문법
// *This is a comment.*
- 코멘트 작성 할 때 // 사용하면 됨
void
- 사용하지 않은 값을 나타내는 특수 형식입니다.
- 아무것도 반환하지 않는 함수 타입
- 값을 명시적으로 반환하지 않는 함수에는 반환 형식이 있습니다.
printInteger()``main()``void
int
- 정수를 나타냄
42
- 숫자 리터럴. 숫자 리터럴은 컴파일 타임 상수의 일종
print()
- 출력을 표시하는 편리한 방법입니다.
'...'
(또는 "..."
)
- 문자열 리터럴
$*variableName*
(또는 ${*expression*}
)
- 문자열 리터럴 내부에 해당하는 변수 또는 표현식의 문자열을 포함
main()
- 앱 실행이 시작되는 최상위 기능
var
- 형식을 지정하지 않고 변수를 선언하는 방법입니다.
- 이 변수의 형식()은 초기 값()에 의해 결정됩니다.
int``42
5. type 추론 기능
- 다트 내의 모든 것은 type을 가지고 있어야 함
- 타입 추론이 가능한데, 타입을 지정해주는 이유?
- 오류를 잡아줄 수 있기 때문에 지정해주는 것이 좋음
class Person{
String name = 'seeun'; // 변수명 선언 // 변수명 앞에 string으로 type을 선언해줌
int age ;
String sex ;
}
addNumber (int num1, int num2){
return num1 + num2;
} //함수명 뒤에는 반드시 괄호가 등장해야 하며 {}로 함수의 body를 만들어준다. //body에는 함수가 실행할 기능 정의
void main(){//void는 아무것도
Person p1 = new Person(); //person클래스로 p1이라고 불리는 인스턴스를 생성한다. //person() = 생성자 //생성자가 없으면 인스턴스를 생성할 수 없음
p1.age = 30;
print(p1.age);
addNumber(3,4); //2개의 숫자를 더한 값을 구해야 함으로 3,4를 넣어줌
print(addNumber(3,4));
}
class Person{
String name;
int age;
String sex;
Person(String name, int age, String sex){
//this : 두 변수명이 같은 경우 dart는 구분을 할 수 없기 때문에 이 경우에 this를 사용해야함
this.name = name;
this.age = age;
this.sex = sex;
}
}
void main(){
Person p1 = new Person('seeun', 25, 'female' );
Person p2 = new Person('Mark', 23, 'male');
print(p1.age);
print(p2.age);
}
5. named argument
1) 개념
생성자의 argument개수가 많은데, 2-3개 정도 입력 받고 싶을 경우에 현재 생성자는 argument가 몇 개 이건 순서 그대로 입력해야 하고, 필요한 argument만을 따로 불러서 입력 받을 수도 없다.
이를 해결하기 위한 방법이 named argument
2) 방법
- 생성자 (person)이 가지고 있는 argument들을 중괄호로 묶어줌
class Person{
String name;
int age;
String sex;
Person({String name, int age, String sex})
// 생성자가 가지고 잇는 argument들이 중괄호로 묶임
- 위 단계에 따라, argument들은 모두 선택사항으로 바뀜
- 따라서 인스턴스를 생성할 때, argument 값을 입력하지 않아도 됨
- 원하는 argument 값만 입력 가능해짐 (순서도 상관없음)
- 즉, 선별적으로 사용 가능해짐
class Person{
String name;
int age;
String sex;
Person({String name, int age, String sex}){
this.name = name;
this.age = age;
this.sex = sex;
}
}
void main(){
Person p1 = new Person(age:30); //원하는 argument 값만 입력
Person p2 = new Person(sex;'female');
print(p1.age);
print(p2.sex);
}
출처 : 유튜브_코딩셰프