본문 바로가기

분류 전체보기

(84)
Flutter keywords 플러터 키워드 종류 abstract 2 else import 2 show 1 as 2 enum in static 2 assert export 2 interface 2 super async 1 extends is switch await 3 extension 2 late 2 sync 1 break external 2 library 2 this case factory 2 mixin 2 throw catch false new true class final null try const finally on 1 typedef 2 continue for operator 2 var covariant 2 Function 2 part 2 void default get 2 required 2 while deferred 2 hide 1 rethro..
Flutter - Isolates / Thread 플러터의 언어인 다트의 특징은 다음과 같다. 1. 객체지향 2. Optional type 3. 메모리를 공유하는 thread 대신에 독립 메모리를 가지는 isolate 사용(궁금증) 4. 자바스크립트 호환 여기서 isolate가 무엇인지 살펴보자. Isolate는 자체 메모리 공간에서 이벤트를 지속적으로 처리하는 이벤트 루프가 있는 스레드. 실행가능한 이벤트가 있고, 대기가 없으면 스캔후 실행할 수 있다. dart에서는 isolate를 생성하여 multithread로 실행할 수 있다. 하나의 스레드가 자신의 메모리 공간을 가지고, 자신의 gc를 가진다. 예측이 가능하므로 효율적이다? 두 개의 isolate가 같이 작업하려면 메시지를 주고 받아야한다. 멀티스레드 사용시 주의해야 하는 공유자원에 대한 컨트롤..
Flutter Button 버튼의 종류 TextButton: 텍스트 버튼 IconButton: 아이콘 버튼 ElevatedButton: 예쁜 버튼 속성 child: Text같은거 지정 onPressed: 버튼이 눌렸을 때, 어떻게 동작하는가 style: 버튼의 스타일 예제 코드: import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBa..
배치와 Scaffold 출처: https://www.youtube.com/watch?v=U6rLIFn59Kw MaterialApp -> google 스타일의 , 또는 커스텀 디자인의 (디자인 뿐만 아니라 기본세팅) Cupertino -> iphone 스타일의 애플리케이션 MaterialApp Scaffold -> 상단 중단 하단으로 구성되어있는 애플리케이션 개발용 appBar: (상단) body: (중단) bottomNavigationBar: (하단) 가로 배치: Row 세로 배치: Column 속성: mainAxisAlignment (Row의 경우 가로속성, Column의 경우 세로속성) crossAxisAlignment(Row의 경우 세로속성, Column의 경우 가로속성) Column 예시 Column( mainAxisA..
기본 위젯 구현하기 안드로이드 스튜디오에서 New -> new flutter Project -> web을 추가하여 테스트 stless -> statelessWidget이 생성됨 text, icon, image, Text import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: Text('hello world'), ); } } Icon import 'package:flut..
Flutter 설치하기(Windows) 1. 안드로이드 스튜디오 설치 https://developer.android.com/studio 2. flutter sdk 설치 https://docs.flutter.dev/get-started/install/windows# 3. flutter sdk path 추가 flutter sdk 압축해제후 flutter/bin 경로 3. 안드로이드 스튜디오에서 Flutter 추가 File -> Settings -> Plugins -> Marketplace Flutter 검색후 설치-> Restart 4. 새 프로젝트 생성 File -> New -> New Flutter Project
7가지 동시성 모델 - 1장 서문 동시성 → 교사 한명이 학생들을 다뤄야함 병렬성 → 교사 한명과 조교 한명이 학생들을 다뤄야함 동시성과 병렬성이 혼동되는 이유 → 스레드와 잠금장치는 병령성을 직접 지원하지 않기 때문 동시적인 프로그램은 깁노적으로 비결정적 → 사건이 일어나는 시점, 즉 타이밍에 따라서 결과가 달라진다. 8비트 vs 32비트 컴퓨터로 32비트 문자열 → 8비트 컴퓨터로는 수열을 생성하여 해결, 32비트 컴퓨터로는 한번에 해결 현대 CPU는 파이프라이닝, 비순차 실행, 추측 실행 들의 기법을 이용하며 매우 병렬적 공유 메모리 (모든 프로세스가 공유) → 각각의 프로세스는 캐시 동시성 → 독립성, 장애 감지 → 탄력성, 장애 허용을 가능하게 해야함( 버그가 있을 수 있고, 버그가 없으면 하드웨어 장애가 있을 수 있기 때문) ..
12장. 다형성 상속은 타입 계층을 구조화하기 위해 사용해야 한다. 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 묶어야 한다. 다형성 유니버셜 다형성 - 매개변수 다형성, 포함 다형성 임시 다형성 - 오버로딩 다형성, 강제 다형성 하나의 클래스안에 동일한 이름의 메서드가 존재하는 경우 - 오버로딩 다형성 강제 다형성 - + : 숫자면 덧셈, 문자열이 있으면 concat 매개변수 다형성 - 제네릭 프로그래밍 포함 다형성 - 수신한 객체의 타입에 따라 실제로 수행하는 행동이 달라지는 능력 - 일반적으로 객체지향에서 다형성이라 불리는 것 코드 재사용이 아닌 서브타입의 구현 - is-a ⇒ 포함 다형성에 대해 다룸 상속의 양면성 업캐스팅 동적 메서드 탐색 동적 바인딩 self 참조 super 참조 부모 클래스 타..
오브젝트 11장 - 합성과 유연한 설계 합성을 이용하면 포함된 객체의 내부 구현이 변경되더라도 영향을 최소화할 수 있기 때문에 변경에 더 안정적인 코드를 얻을 수 있게 된다. 코드 작성 시점에 결정한 상속 관계는 변경이 불가능하지만 합성 관계는 실행 시점에 동적으로 변경할 수 있기 때문이다. 클래스 상속 - 화이트박스 재사용(상태를 알아야 하므로) 합성 - 블랙 박스 재사용(인터페이스를 통해서만 재사용) 상속을 합성으로 변경하기 불필요한 인터페이스 상속 문제 → 불필요한 인터페이스를 사용안해도 된다. 메서드 오버라이딩의 오작용 문제 → 포워딩을 사용하여 기존 인터페이스를 그대로 제공하면서, 구현에 결합없이 사용할 수 있다. 부모 클래스와 자식 클래스의 동시 수정문제 →합성으로 변경해도 해결되지는 않는다. 파급 효과를 캡슐화하여 그래도 더 낫다..
오브젝트 10장 - 상속과 코드 재사용 전통적인 패러다임 → 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것 객체지향 패러다임 → 상속 또는 합성 10장에서는 상속, 11장에서는 합성에 대해 설명함 상속과 중복코드 중복코드 → 혼란야기 + 동료들을 의심하게 만든다 DRY 원칙 중복 코드는 변경을 방해한다. 중복 코드는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킨다. DRY원칙 = Don’t Repeat Yourself ⇒ 동일한 지식을 중복하지 마라 중복과 변경 책의 예제 코드 → 요구사항 변경으로 새로운 기능이 추가됨 → 상속으로 코드 중복을 줄임 상속을 위한 경고 1 → 자식 클래스의 메서드 안에서 super 참조를 이용해 부모 클래스의 메서드를 직접 호출할 경우 두 클래스는 강하게 결합된다. super 호출을 제거할 수 있..