1일차 - Part 1.입문 (23.11.30)
잘 할 수 있을까? 의문이 앞선 과정이지만, 믿음을 갖고! 시작했습니다.

정말? 아마도~!
일단 강사님은 플러터를 이용해 개발중인 개발자로, 5년차라고 소개하시네요..일단 믿고 갑니다 :p
Chapter1. 오리엔테이션
Chapter2. Dart Language 1
Chapter3. Flutter 개발환경 구축하기
Chapter4. Dart Language 2
Chapter5. Dart 언어로 프로그래밍 시작하기
오리엔테이션은 주로 이 과정에 대해서 소개해주셨는데요, Flutter는 구글에서 개발한 크로스 플랫폼(IoS, Android, Mac, Linux) 개발 프레임워크 라고 합니다. 우선 모바일 플랫폼 위주의 강의라고 하는데, 기대가 됩니다.
제가 선택한 이유이기도 하고요~! (뭔가 Java 보다는 새롭고,..어...신기해보여서!)
게다가, 자바스크립트를 사용중인 저는 좀 더 쉽게 접하지 않을까...(시간내서 Java 언어에 대해서도 알아보고 있어요)
강사님이 소개하신 장점(생산성, UI 위젯기반, 함수형 프로그래밍 지원, 크로스플랫폼 + 구글!!)들이 기존의 언어대비 강점으로 보여지고요,..아, 물론 리액트 네이티브랑 고민을 했지만...그건 뭐 ㅎㅎ
근데 사실 Dart를 작년엔가 올 초엔가..(지금과 비슷한 데자뷔~?!) 기본 문법은 살펴봤었고, flutter doctor?를 이용해서, android stuido랑 개발환경도 구축해본 기억이 있었는데..작심삼일로..ㅠ
하지만 올해는 다릅니다. 꼭! 완주해볼게요~ 아자아자! 화이팅!!
Dart
다트는 구글이 디자인한 멀티 플랫폼 프로그래밍 언어이다. 이는 2011년 10월 10일~12일까지 열렸던 "GOTO 컨퍼런스"에서 공개되었다. 다트는 자바스크립트를 대체가능하며 크로스 플랫폼 프로그래밍 언어를 목표로 설계되었다.
(현재는 구글 개발자 외에도 많은 개발자 들이 Dart와 Flutter를 이용해 웹앱을 개발중이다 라고 합니다)
from. 위키백과
1일차 수업은,...뭐, 그렇게 쉽게 지나갔습니다 하핫..! 사실, 패스트캠퍼스 기초설문조사? 그리고 과정수강하는 별도의 사이트에서 안내되는 글들도 읽어보고, 거기에 열공챌린지 관련된것도 읽다 보니까...학습을 나가긴 어렵겠더라고요~ 그래, 일단 오리엔테이션까지는 들어보자로!! 했지 뭡니까~
2일차 - Part 1.입문 (23.12.01)
1. 변수와 타입
먼저, 변수는 특정한 값(=Data)를 저장하는 그릇으로, 프로래밍할 때 기본적인 개념이죠! 다만, Dart 에서는 타입을 반드시 선언할 필요는 없다고 하는데, 코드관리와 다른 개발자와 협업을 위해 타입을 정의하는게 좋다고 합니다.
Dart는 변수를 선언하고 사용하기 위해 아래와 같은 데이터 타입을 제공합니다.
- 기본형 : int, double, bool, String, null
- 자료형 : List, Set, Map
- 확장형 : Object, Enum, Future, Stream
※ 회색으로 표기한 부분은 Chapter4. Dart Language 2 에서 소개하신다고 하셔서, 일단 패스!!
게다가 기본 정수 int, 실수 double, 논리 bool, 문자열 String, 널값 null은 여러 언어를 수박 겉핥기로 학습해본 바(?) 어렵지 않은 개념이었어요!
그리고 데이터를 저장할때 변수가 아닌 상수(Constant)를 사용하고자 할때는 컴파일 시점에 상수를 처리하고자 하면 const, 프로그램 진행중에 처리할때는 final을 사용한다고 하셨는데,..이 부분은 잘 이해가? 안되었어요..이건 나중에 강사님과 1:1로 멘토링? 받는게 있는거 같으니 여쭤보렵니다.
아무래도 Dart가 자바스크립트를 대체하는 용도라고도 했으니까 그리고 자바스크립트 자체가 동적인 변수할당을 하는걸로 이해하고 있는데, 프로그래밍할때 이런 부분을 커버하기 위해 타입스크립트를 적용하는걸로 알고 있거든요! 그러니, Dart는 대두되는 문제점을 해결하고자 하는 노력이 있어서 Null Safety 라는 개념이 있는게 아닌가도 싶고,..그렇더라구요!
2. 연산자
연산자는 프로그래밍상에서 사용되는 기호, 단어로 하나 이상의 변수나 값을 이용해 연산을 처리할때 사용합니다. 다른 프로그래밍언어에서와 마찬가지로 구분을 하더라구요
1) 산술 연산자 : +, -, *, /, %,
2) 비교 연산자 (=값의 크기비교) : ==, !=, >, >=, <, <=
3) 논리 연산자 : &&, ||, ?? (Null값을 대신하는 기본값)
4) 할당 연산자(=대입연산자 + 산술연산자?) : =, +=, -=, *=, /=, &=, ^=
그리고 삼항 연산자(조건 ? "참일때" : "거짓일때"), 비트연산자가 있다고 합니다만,..다른 언어들에서도 비트연산자는 입문자에게는 깊게 설명하진 않으시더라고요..
게다가 Dart 2.12 버전부터 Null Safety 라는 개념이 도입되었다고 하는데 이때 ?, !를 사용하여 Null(=빈 값)을 허용할지 또는 허용하지 않을지를 타입 또는 변수 뒤에 ? 를 붙여서 사용할 수 있습니다.
아참 그리고, 변수 사용시 타입을 지정하지 않고 var를 사용하여 변수를 선언하면 최초 타입이 고정되어 사용하는것이고, dynamic을 사용하면 코드 작성중 언제라도 변할 수 있는 가변형으로 선언된다고 합니다.
※ 추후 어느정도 코드 정리가 되면 타입(Type)을 결정해서 변경하는것을 추천하신다고 합니다.
3. 클래스와 생성자
클래스는 어떠한 객체를 찍어내는 도구라고 합니다. 강사님은 템플릿(Template)라는 용어를 설명해주셨는데, 템플릿이 뭔가 궁금해서 구글에서 검색해보니, 일종의 샘플이라고 하더라구요, 검색하다보니 붕어빵 틀과 붕어빵을 을 자주 언급하더라구요
클래스는 데이터와 (실행)코드를 그룹화하는 개념이라고 설명할 수 있습니다. 아래는 클래스의 구성요소 세가지를 정리해봤습니다.
- 필드(Field) : 클래스 내부에 선언된 변수, 상수 등
- 메서드(Method) : 클래스 내부 선언된 기능 (함수)
- 생성자(Constructor) : 클래스 인스턴스를 생성할때 특정 작업을 지시하는 코드
아울러 생성자는 좀 더 설명이 많았는데요,..생성자를 통해 매개변수를 전달하거나 클래스 내 초기값을 설정하는 작업을 하는데 사용한다고 합니다. 생성자의 종류가 5가지 더 있다고 하시는데,. 입문 단계에서는 모두 다 알 필요는 없다고 합니다.
이틀째인데,..머리가 아파오네요
- Default Constructor
- Named Constructor
- Redirecting Constructor
- Const Constructor
- Factory Constructor
하,..어렵...일단 Default Constructor, Named Constructor 학습했습니다. 실무에서도 자주 안쓸때도 있다고 하셨으니..
Dart 언어 실습은 온라인 도구인 DartPad를 통해서 실습했습니다. DartPad를 사용할때 주의할 사항은 몇가지가 있던데, 이부분은 앞으로 AndroidStudio 또는 VSCode를 사용하면서 쫌 달라지지 않을까 싶어요
- 문장 끝에 세미콜론(;)을 반드시 넣도록 하세요
- 코드 작성중 실행은 CTRL+ENTER 하세요
- 연산자 실습중 나눗셈(/) 사용시 변수 타입은 int가 아닌 double로 하세요
- 그 밖의 오류나 경고등은 컴파일러 메세지를 참고하세요
쉽죠?
DartPad
dartpad.dev
클래스 실습은 조금 헷갈려서, 기록용으로 좀 더 남겨봤습니다. (강사님도 당분간, 부담갖지 말라고 하셨음!!)
void main() {
// 클래스로 객체 생성시, 클래스명을 따라감
Point point = Point(1, 2); // 기본 생성자의 형태
print(point);
print(point.x); // 객체명. - 객체 내 정의된 변수등에 접근
print(point.y);
// 클래스는 템플릿이므로 여러 객체를 생성할 수 있음
Point aPoint = Point(2, 5);
Point bPoint = Point(10, 4);
print(aPoint.x);
print(bPoint.y);
}
// 1. 기본 생성자(Default)
// 2. 명명 생성자(Named)
class Point {
double x; // Null 허용
double y;
Point(this.x, this.y); // 초기값 - 매개변수로 전달받을 값
}
아참, 이제 Dart 기본 변수와 연산자등 연습하고 나면 2주차는 플러터 SDK 설치인데,..오리엔테이션할때였나? Dart를 컴파일할 수 있게 세팅된다고 본거같습니다.
그리고 두가지 컴파일러가 있다고 했는데, JIT (Just In Time), AoT...는 뭐더라?! 이건 2주차때 열심히 또 알아보죠 뭐