Flutter20 [Flutter] 플러터 객체지향 프로그래밍 - (3) 믹스인과 추상 * 믹스인 : 특정 클래스에 원하는 기능들만 골라넣을 수 있는 기능 특정 클래스를 지정 - 속성 정의 가능, 지정한 클래스를 상속하는 클래스에서도 사용 가능 한 개의 클래스에 여러 개의 믹스인 적용 가능 mixin IdolSingMixin on Idol{ void sing(){ print('${this.name}이 노래를 부릅니다.'); } } // 믹스인을 적용할 때는 with 키워드 사용한다. class BoyGroup extends Idol with IdolSingMixin{ BoyGroup( super.name, super.membersCount, ); void sayMale(){ print('저는 남자 아이돌입니다.'); } } void main(){ BoyGroup bts = BoyGroup(.. 2023. 6. 8. [Flutter] 플러터 객체지향 프로그래밍 - (2) 상속 및 오버라이드, 인터페이스 * 상속 : extend 키워드를 사용해 상속 어떤 클래스의 기능을 다른 클래스가 가능토록 하는 것 // A : 부모 클래스 class A{ int String name; int int age; A(this.name, this.age); void sayName(){ print('저는 ${this.name}입니다.'); } void sayAge(){ print('저는 ${this.age}입니다.'); } } // 상속 (B : 자식 클래스) class B extends A{ // 생속받은 생성자 B( String name, int age, ) : super( //super : 부모 클래스 name, age, ); // 상속받지 않은 기능 void sayNothing(){ print('나띵!!'); } } .. 2023. 6. 8. [Flutter] 플러터 객체지향 프로그래밍 - (1) 클래스 클래스 : 일종의 설계도 (데이터가 보유할 속성, 기능을 정의) 인스턴스 : 클래스를 사용해서 객체를 선언시, 해당 객체를 일컫음 * 인스턴스화 되어야 실제 사용할 수 있는 데이터가 생성된다! * 클래스 : class Idol{ String name = '블랙핑크'; void sayName(){ print('저는 ${this.name}입니다.'); print('저는 $name입니다.'); } 메서드 : 클래스에 종속되는 함수 this 키워드 : 클래스 내부의 속성 지칭 (* 스코프 안에 같은 속성 이름이 하나만 존재할 경우 this 생략 가능) * 생성자 : 클래스의 인스턴스를 생성하는 메서드 class Idol{ final String name; //생성자 선언 Idol(String name) : th.. 2023. 6. 7. [Dart] Dart 언어 기초 문법 - (5) try...catch try...catch 문 : 코드 실행을 시도해보고, 문제가 있을 시 잡아라! try ~ catch 사이 괄호 → 에러 없을 시 실행할 로직을 작성 catch가 감싸는 괄호 → 에러가 났을시 실행할 로직 작성 try 로직에서 에러가 났을시 바로 catch 로직 실행됨 void main(){ try{ final String name = '할로발로'; print(name); // 에러 없으니 출력됨 }catch(e){ // 에러가 있을 경우에 실행할 로직 print(e); } } throw 키워드로 에러 발생시킴 void main(){ try{ final String name = '코인노래방'; // 고의적으로 에러 발생 throw Exception('이름이 잘못됐습니다!'); print(name); }ca.. 2023. 6. 7. [Dart] Dart 언어 기초 문법 - (4) 함수와 람다 함수의 일반적인 특징 1. 한 번 작성, 여러 곳에서 재활용 가능 2. 반환 값 없을 경우 void 키워드 사용 매개변수 지정 방법 1. 위치 매개변수 (positional parameter, 순서가 고정된 매개변수) - 입력된 순서대로 매개변수에 값 지정 int addTwoNumbers(int a, [int b = 2]){ return a + b; } void main(){ print(addTwoNumbers(1)); //3 } 2. 명명된 매개변수 (named parameter, 이름이 있는 매개변수) - 순서 상관 X, 지정하고 싶은 매개변수의 이름 이용, 값 입력 - { } / required 키워드 이용 int addTwoNumbers({ required int a, int b = 2; }) {.. 2023. 6. 7. [Dart] Dart 언어 기초 문법 - (3)연산자, 제어문 Dart의 연산자 수치 연산자 null값 입력 관련 연산자 값 비교 연산자 타입 비교 연산자 논리 연산자 * 기본 수치 연산자 : 기본 산수 기능 + : 더하기 - : 빼기 * : 곱하기 / : 나눈 몫 % : 나눈 나머지 단항 연산 ++ -- += -= *= /= * null 관련 연산자 : 다트언어 - 변수 타입이 null값을 가지는지 여부를 직접 지정! 타입 뒤에 '?'를 추가해줘야 null값 저장 허용 void main(){ // 타입 뒤에 ? 명시 - null값 가질 수 있음 double? number1 = 1; // 타입 뒤에 ? 명시 無 - 오류 발생 (null값 안됨) double number2 = null; } 변수에 새로운 값 추가시 '??' 사용하면 기존에 null인 때만 값 저장 되.. 2023. 6. 7. [Flutter] 플러터의 스키아(Skia) 엔진 및 구조 플러터 : 구글이 구현한 크로스 플랫폼 프레임워크 무려 안드로이드 / iOS / 웹 / 맥OS / 윈도우 / 리눅스 까지 지원! 상대적으로 다루기 쉽다 크로스 플랫폼 호환성이 상당히 자연스럽다 (=이질감이 적다) 구글에서 강력하게 밀고 있다 스키아(Skia)엔진? - 플러터가 직접 통신을 하는 2D 렌더링 엔진 어떤 플랫폼이든 스키아 엔진을 지원하는 플랫폼에서는 똑같은 API를 사용해서 프로그래밍 가능! ↓ 어떤 플랫폼이든 일관된 UI 제공 가능 한번에 6가지 플랫폼을 대상으로 배포할 수 있다. 스키아 엔진을 사용했을 때의 장점 : 1. 웹뷰를 사용하지 않고 '직접' 스키아 엔진을 사용해서 UI를 그려냄 2. 새로 렌더링이 필요한 위젯들만 렌더링 → 높은 퍼포먼스 ex) 리액트 네이티브는 자바스크립트 브.. 2023. 6. 2. [Dart] Dart 언어 기초 문법 - (2)컬렉션 컬렉션 : 여러 값을 하나의 변수에 저장 가능한 타입 서로의 타입으로 자유롭게 형변환이 가능하다! 1) List - 여러 값을 순서대로 저장 2) Map - 특정 키 값 기반으로 빠르게 검색 3) Set - 중복된 데이터 제거시에 사용 * List 타입 : 여러 값을 순서대로 한 변수에 저장시에 사용 * 원소 : 리스트의 구성 단위 * : List에 넣을 타입 명시 가능 void main(){ List blackPinkList = ['리사', '제니', '로제', '지수']; } // 첫 원소 : blackPinkLikst[0] // 마지막 원소 : blackPinkList[3] // 길이 반환 : blackPinkList.length * List에서 자주 사용되는 함수 : add() / where() .. 2023. 6. 2. [Dart] Dart 언어 기초 문법 - (1) * 해당 포스팅은 '코드팩토리의 플러터 프로그래밍' 서적을 참고하여 작성했습니다. 메인함수 : 엔트리 함수 기호 void main(){ } print() 함수 : 문자열을 콘솔에 출력 void main(){ print('Hello World'); } 주석 : void main(){ //한 줄 주석 /* * 여러줄 주석 * 입니다. */ /// 문서 주석 /// IDE에서 Documentation 으로 인식 } var / dynamic 변수 선언 : var 변수명 = 값; 타입추론 지원! - 명시적으로 타입 선언하지 않아도 됨 var : 타입 추론 이후 타입이 고정됨! dynamic : 변수의 타입이 고정되지 않음 - 다른 타입의 값 저장 가능 final / const : 변수 값 처음 선언 후에 변경할 .. 2023. 6. 2. [Dart] 다트 언어의 장점 * 해당 포스팅은 '코드팩토리의 플러터 프로그래밍' 서적을 참고하여 작성했습니다. Dart Programming 언어 UI 제작에 최적화 완전한 비동기 언어, 이벤트 기반 isolate를 이용한 동시성 기능 제공 동시성 기능? → 특정 프로세스의 실행 시간이 다른 프로세스의 실행 시간이 다른 프로세스의 흐름과 겹치는 상황에서 동시에 실행하는 것 = 2개 이상의 프로세스가 동시에 계산을 진행하는 상태 JIT(Just in Time) 컴파일 - 핫 리로딩, 실시간 메트릭스 확인, 디버깅 Hot Reload : 코드 변경 사항 발생시 화면에 즉시 반영 AOT(Ahead of Time) 컴파일 - 휴대폰 빌드 전에 기계어 코드로 사전 컴파일해서 코드 빌드 가능 (속도가 빠르다!) 효율적 UI 개발 가능 : Nu.. 2023. 6. 2. 이전 1 2 다음