[Dart]OOP 연관관계와 Mixin
·
Flutter/Dart 언어
1. 연관관계란?연관관계는 객체 간의 상호작용과 관계를 나타냅니다. 연관관계는 소유권과 생명주기에 따라 다음과 같이 분류됩니다. 1.1 컴포지션 관계 (Composition)강한 소유 관계:부분-전체 관계에서 **전체(Whole)**와 **부분(Part)**의 생명주기가 밀접하게 연결되어 있습니다.특징:전체 객체가 소멸되면 부분 객체도 함께 소멸됩니다.예시:자동차와 엔진 (차가 망가지면 엔진도 사용할 수 없음).사람과 심장 (사람이 죽으면 심장도 멈춤)1.2 집합 관계 (Aggregation)약한 소유 관계:부분-전체 관계에서 전체와 부분의 생명주기가 독립적입니다.특징:전체 객체가 소멸되어도 부분 객체는 독립적으로 존재할 수 있습니다.예시:부서와 직원 (부서가 없어져도 직원은 다른 부서로 이동 가능).회..
[Dart] 상속과 super
·
Flutter/Dart 언어
상속과 다형성이란? 상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 기능다형성은 자식 클래스 객체를 부모 클래스 타입으로 참조할 수 있는 능력을 의미※ 추가설명만약 BMW 클래스와 제네시스 클래스가 엔진클래스를 상속한다면 과연 그것은 정상적인 설계가 맞을까요??다형성이 성립하지 않기 때문에 잘못된 상속이라고 할 수 있습니다!즉, 다형성이란 BMW에게 너 엔진이야? 라고 물었을 때 어 나 엔진이야 라고 답을 할 수 있어야 합니다. (즉, 잘못된 상속이다!)부모클래스가 먼저 호출되고 자식클래스가 호출된다. 예시 코드class Burger { String? b_name; // 생성자 Burger() { print('나는 버거'); }}class CheeseBurger extends B..
[Dart] Sound Null Safety
·
Flutter/Dart 언어
다트의 사운드 널 세이프티 (Sound Null Safety) 다트의 사운드 널 세이프티는 null 참조 오류를 방지하는 기능입니다.컴파일 시점에 null 여부를 확인해, NullPointerException 같은 런타임 에러를 예방합니다.null 가능성을 타입으로 명확히 구분.안정적이고 안전한 코드 작성 가능.결론: null 에러 걱정 없이 개발할 수 있습니다.Null safety 란? 개발자가 널 에러를 피할 수 있도록 도와주는 다트 언어의 기능이다.※  학습목표널 체크 연산자( ?. ) 와 널 병합 연산자( ?? ) 에 대해서 알아 보자.// 코드의 시작점void main() { String name = '길동'; int age = 30; // String? 옵셔널 타입이다. //null 값..
[Dart] 클래스와 인스턴스
·
Flutter/Dart 언어
클래스와 객체란?클래스(Class)클래스는 객체를 정의하는 설계도입니다.클래스 = 설계도예: 자동차의 설계도객체(Object)객체는 클래스를 기반으로 생성된 실제 인스턴스를 의미합니다.객체 = 설계도를 바탕으로 만들어진 실제 자동차객체는 속성(상태)과 행위(메서드)를 가질 수 있습니다.속성: 자동차의 색상, 모델, 속도행위: 가속, 정지객체 지향 프로그래밍(OOP)객체 지향 프로그래밍은 객체 간의 관계와 상호작용을 통해 애플리케이션을 설계하고 구현하는 프로그래밍 패러다임입니다.객체 간의 협력을 중심으로 문제를 해결합니다.OOP의 주요 목적: 복잡한 문제를 더 작은 객체로 나누어 해결하기 쉽고 유지보수 가능한 프로그램을 만드는 것.클래스 생성 //Dog d1 = new Dog(); // 인스턴스화 되었다..
[Dart] dart 기본 문법 익히기 (3) - 익명함수, 람다표현식
·
Flutter/Dart 언어
익명함수// 익명 함수// 코드의 시작점void main() { // 1단계 - 이름이 없는 함수 (선언을 하더라도 외부에서 사용할 방법이 없다.) // 변수에 할당하지 않고 바로 익명 함수를 호출하는 것은 dart에서 불가능 하다. (int number) { return 100 + number; }; // 2 단계 - 함수를 변수에 담을 수 있다. // dart 함수에 타입은 Funtion 이다. Function() square = () { return 10 * 10; }; // 3 단계 var sub = (int number1, int number2) { return number1 - number2; }; // 4 단계 - dart 에서는 매개변수 데이터 타입도 ..
[Dart] dart 기본문법 익히기 (2)
·
Flutter/Dart 언어
연산자// 연산자// 산술 연산자void main() { // 더하기 print('3 + 2 = ${3 + 2}'); print('3 - 2 = ${3 - 2}'); print('3 * 2 = ${3 * 2}'); print('3 / 2 = ${3 / 2}'); // 나머지 연산자 print('3 % 2 = ${3 / 2}'); print('5 ~/ 2 = ${5 ~/ 2}');}  비교 연산자// 비교 연산자// 두 개의 값을 비교하여 결과를 참/거짓을 판별할 때 사용한다.void main() { // 같다 print('2 == 3 -> ${2 == 3}'); // false // 다르다 print('2 != 3 -> ${2 != 3}'); // true // 왼쪽 값이 오른쪽 ..
[Dart] dart 기본 문법 익히기 (1)
·
Flutter/Dart 언어
데이터란?   사물이나 현상에서 얻어진 사실 또는 값을 의미한다.   변수란 뭘까?   값을 저장할 수 있는 메모리 공간, 즉 값을 저정해 놓고 이후에 재소용하거나   변경할 수 있도록 메모리 공간을 이름으로 할당한 개념을 말한다.   데이터 타입이란?   메모리 공간에 들어간 값의 형태이다. // 코드의 시작점void main() { int n1 = 10; double d1 = 10.0; bool b1 = true; String s1 = '홍길동'; // 홑따옴표 권장사항 쌍 써도 무관 // dart 기본 메모리 공간 3가지 // 1. 스택(stack) - 지역 변수, 매개 변수 // 2. 힙 영역 (heap) - new / 리터럴로 선언 된 값들 // 3. 정적 영역(Static) - ..
Flutter란?
·
Flutter/Dart 언어
Flutter는 구글에서 개발한 모바일 UI 프레임워크입니다. iOS와 Android뿐만 아니라 웹까지 하나의 코드로 모두 개발할 수 있는 강력한 도구죠.간단히 말해, 한 번의 코딩으로 여러 플랫폼에서 동작하는 앱을 만들 수 있다는 것입니다!플러터의 핵심 목표는 무엇일까요?Flutter는 각 플랫폼(iOS, Android)에서 자연스럽게 동작하는 고성능 앱을 만드는 것이 목표입니다. 예를 들어, iOS에서는 iOS답게, Android에서는 Android답게 작동합니다.플러터로 개발할 수 있는 것들은?Android 앱iOS 앱웹 앱데스크탑 앱UI란?UI는 User Interface의 줄임말입니다.쉽게 말해, 사용자가 앱을 보고, 만지고, 조작하는 모든 것입니다.예시휴대폰 화면에서 터치하는 동작리모콘에서 버..