[Android/Flutter 교육] 80일차

MSU·2024년 4월 29일

Android-Flutter

목록 보기
74/85
post-thumbnail

컴퓨터로 만들어지는 서비스
메인프레임
PC
워크스테이션
-> C / C++

웹 서비스
프론트 엔드 -> 사용자 측면(표준, HTML)
백 엔드 -> 서버 측면(Servlet/JSP/Spring, PHP, ASP.NET, Django, Flask, Node.js 등등...)

모바일

  • SKT : SKVM(Java, SK)
  • KT : Brew(C 기반, 퀄컴)
  • LGT : J2ME(Java, 썬마이크로시스템즈)
  • 휴대폰 액정 사이즈의 종류가 수십가지

-> 통합플랫폼

  • WIPI (Java or C, 대한민국 정부)
  • 국회 -> WIPI 의무 탑재 법안
  • 휴대폰 액정 사이즈 -> 4가지로 통일

2007년
iPod, iPod Touch
이미 iPod 앱스토어와 아이튠즈로 컨텐츠가 많이 활성화 된 상태
이후 출시된 안드로이드는 컨텐츠가 부족했음

2008년
WIPI 법안 폐기 후 KT에서 아이폰을 들여옴

아이폰 : objective-c -> swift
3.5인치 -> 4인치, 6.3인치 등등

안드로이드 : java -> kotlin
다양한 사이즈의 액정

통합 플랫폼
Phongap : 어도비 -> 아파치 재단
cordova : 아파치에서 cordova 표준(웹기반 or 네이티브 기반)
Flutter : cordova 표준 기반으로 구글에서 만든 크로스플랫폼
-> cordova 네이티브 표준 + MVVM 개발 패턴 + Material UI
-> android, iOS, Windows, Mac, Linux, Web, Chrome OS 까지 서비스할 수 있는 어플을 만들 수 있다.
-> 모바일인 경우 android를 기반으로 개발하고 타 플랫폼으로 포팅하는 방식으로 운영된다
-> Flutter 의 다양한 제한점 때문에 Compose 등장
->

Dart

구글이 디자인한 멀티플랫폼 언어
Flutter는 Dart언어를 사용하고 있다
웹 애플리케이션 개발 시 Single Page Web Application을 개발할 때 사용한다.

Dart Pad

웹에서 Dart 언어 문법을 사용해 볼 수 있는 웹기반 개발도구
https://dartpad.dev
프로그래밍은 가능하나 개발 도구로 사용하긴 어려움

IntelliJ 개발 환경 구축

Dart SDK 내려받기

5개의 설치 옵션을 제시하고 있는데 3번을 선택하면 SDK를 내려받을 수 있다.

"Dart SDK"를 눌러야 압축파일이 받아지고 옆의 "SHA-256"을 눌러버리면 압축파일이 아니라 별도의 인증서파일이 받아진다

내려받은 SDK폴더는 편의성을 위해 작업폴더에 위치시키면 된다

설치한 IntelliJ를 열고 Plugins에서 Dart를 검색하여 설치한다

새 프로젝트를 만들 때 Dart를 고르고 SDK 경로를 설정해주면 된다

다트 프로젝트

프로젝트 상위 폴더에서 오른쪽 클릭 후 New -> Dart File 을 선택한다

Dart 가상 머신

Dart 프로그램은 Dart 가상 머신(Dart VM)에 의해 동작한다

웹 애플리케이션의 경우 크로미움을 지원하는 모든 브라우저에 Dart 가상머신이 기본 내장되어 있다.
(따라서 크로미움을 지원하지 않는 브라우저에서는 Dart로 만든 웹 애플리케이션이 동작하지 않는다)

모바일 애플리케이션은 개발하는 애플리케이션 내부에 Dart 가상머신이 포함된다.
모바일 애플리케이션 내부에 Dart 가상머신을 실행시키는 코드가 포함되어 있다.
iOS와 AOS가 하는 일은 Dart 가상머신을 실행시키는 것 뿐이다.

프로그램이 시작되면 Dart는 main함수를 찾아 실행시킨다

Dart 문법

문자열

  • dart 는 다른 프로그래밍 언어처럼 큰 따옴표("")로 묶어 문자열을 표현한다.
  • 작은 따옴표('') 로 묶은 것도 문자열이다.

기본 출력

  • print 함수를 이용해 출력할 수 있다.

세미콜론

  • dart는 명령문 마지막에 반드시 세미콜론을 찍어줘야 한다.

주석

  • 코틀린과 동일하다
  • // : 한 줄 주석
  • /* */ : 여러 줄 주석

자료형

  • 정수형 : int
  • 실수형 : double
  • 문자형 : String
  • 논리형 : bool

변수 선언

  • 변수 선언시 변수 명 앞에 자료형을 명시해야 한다.
  • 자료형과 저장하는 값이 맞지 않으면 오류가 발생한다.

var, dynamic

  • 변수 선언 시 자료형을 나타내는 키워드 대신에 var나 dynamic을 사용할 수 있다.
  • var나 dynamic을 사용하면 변수에 저장하는 값에 타입을 보고 변수의 자료형이 결정된다.
  • var는 자료형이 결정되면 다른 자료형의 값을 저장할 수 없다.
  • dynamic은 자료형이 결정되지 않고 다양한 자료형의 값을 저장할 수 있다.

final, const

  • dart 에서 상수를 만들기 위해 사용하는 키워드
  • 상수는 기억장소에 값이 한 번 저장되면 그 값을 변경할 수 없다.
  • const : 빌드타임 상수. 기억장소가 관리할 값을 코드를 통해 결정해줘야 한다.
  • final : 런타임 상수. 기억장소가 관리할 값을 실행 중에 구해 결정해줘야 한다.
  • const 상수는 컴파일이 될 때 실제 값으로 코드가 변경된다.
  • 이에 기억장소가 실제로 만들어지는 것이 아니기 때문에 실행중에 구한 값을 담을 수 없다.
  • final 상수는 컴파일이 될 때 코드 그대로 유지가 된다.
  • 이에 기억장소가 실제로 만들어지는 것이기 때문에 실행중에 구한 값을 담을 수 있다.
  • 이는 기억장소의 과도한 생성으로 메모리 낭비를 초래하는 일을 예방하기 위함이다.

null 관련 연산자

  • dart는 코틀린과 같이 null을 허용하는 변수와 null을 허용하지 않는 변수를 구분하여 선언할 수 있다.
  • 기본적으로 모든 변수는 null을 이용하지 않으며 null을 허용하고 싶은 변수는 ?를 사용해 선언해준다.
  • 이는 null 안정성을 확보하기 위한 장치이다

??= 연산자

  • null을 허용하는 변수에 null 값이 들어있을 경우에만 변수에 값을 담겠다는 연산자이다.

타입 비교 연산자

  • is 키워드를 사용하여 변수의 타입을 비교할 수 있다.
  • 비교 후 리턴되는 값은 bool 타입

if 문

  • 다른 프로그래밍 언어들의 if문과 동일하다
  • 주어진 조건식이 true일 경우 수행된다.

switch ~ case 문

  • kotlin의 when과 비슷하다.
  • switch에 지정된 변수의 값이 같은 부분으로 이동되어 수행된다.
  • dart에서는 다른 언어와 달리 변수의 값에 해당하는 case 부분이 수행되고 끝나면 밖으로 나가기 때문에 break를 넣을 필요가 없다

List

  • 0부터 1씩 증가되는 순서값을 가지고 객체를 관리한다.
  • 같은 클래스 타입의 객체를 담는 것을 권장하며 제네릭으로 타입을 설정해주는 것이 좋다.

Map

  • 이름을 가지고 객체를 관리하는 요소

Set

  • 집합
  • 중복된 값(혹은 객체)를 담을 수 없다.
  • 주로 리스트에서 중복된 것을 제외하고자 할 때 사용한다.
  • 순서나 이름으로 데이터를 관리하지 않기 때문에 순서가 바뀔수도 있다.

enum

  • 열거형
  • 변수가 가질 수 있는 값을 미리 정해놓는 개념
profile
안드로이드공부

0개의 댓글