Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[풀스택서비스프로그래밍] Lecture 01. Dart 언어의 이해(기초) 본문

3학년 2학기 전공/풀스택서비스프로그래밍

[풀스택서비스프로그래밍] Lecture 01. Dart 언어의 이해(기초)

시데브 2024. 9. 16. 15:06
경희대학교 이성원 교수님의 풀스택 서비스 프로그래밍 수업을 기반으로 정리한 글입니다.

 

Null-Safety (Null에 대한 프로그램 안정성 보장)

  • Dart 언어는 Null-Safety가 default
    • Dart의 변수들 -> 기본적으로 null 값을 가질 수 없음.
    • 변수들은 사용하기 전에 반드시 초기화가 필요
  • Dart 언어에서, 강제로 null 값을 갖는 변수를 정의할 수 있음
    • int? i; -> i는 int 객체 혹은 null 저장 가능 -> null은 "의미없는 값을 저장하는 객체"로 정의
  • runtimeType 메소드(null 객체가 지원하는 유일한 메소드)
    • 주어진 변수/객체가 null -> null을 리턴
    • 주어진 변수/객체가 null이 아닌 경우 -> 해당하는 type 리턴
  • A ?? B 
    • A가 null이 아닌 경우 -> A value로 계산
    • A가 null -> B value로 계산
  • A = (B ??= C) 
    • B가 null이 아닌 경우 -> A를 B로 설정
    • B가 null -> A를 C로 설정
  • '?.' 메소드 호출 연산자 
    •  객체가 null이 아니면 -> 문제없이 method/property에 접근
    • 객체가 null -> '?.' 문법으로 호출한 method/property는 dart 언어가 null로 처리
  • map
    • map의 default mode는 nullable
    • map['key']!.length -> null이 아니라 사용자가 보장한다는 의미 ->> type check를 하거나, !로 null이 아니라는 것을 보증해야 함
Pointer
char *ptr = 0
ptr은 그저 char를 가리키고 있을 뿐이지, char이 아닌 pointer일 뿐이라 size는 다르다.
ptr의 size는 32bit OS에서 32bit

pointer의 의미? -> ptr이 가리키는 컴퓨터 메모리의 주소 지점으로 가서, 해당 위치에 존재하는 byte를 character로 취급

변수의 이름 -> 변수를 구성하는 byte의 첫 번째 주소값
함수의 이름 -> 주소

Mixin
sofrtware는 재사용이 필요한데, 이때 수많은 사용자가 사용 -> 누구나 객체 내부의 member, function에 접근할 수 있게 되면, 보안 혹은 관리 측면에서 취약해짐

python -> object라는 type으로부터 파생된 class들 -> derived class끼리는 치환 가능(dynamic language 특징)

가장 기초가 되는 객체지향 컨셉에서는 base class가 2개 이상이 되는 경우 피해야 함 
-> C++의 standard class인 iostream이 istream ostream을 계승 -> 취약점 존재

modern한 language들은 이런 취약점을 보완하여 나옴

mixin: 여러 클래스의 기능을 합쳐서 특정 클래스에 주입하지만, 각 class를 base class로 취급하지는 않음