C# WPF
11. IServiceProvider - Ioc(제어 반전)
11. IServiceProvider - Ioc(제어 반전)
2025.04.181. 출처 및 참고자료더보기✔️ Microsoft Docs: MVVM Toolkit IoC 관련 네임스페이스:using CommunityToolkit.Mvvm.DependencyInjection; 학습 목표 IoC를 사용한 구조와 사용하지 않은 구조를 단계별 비교한다.Service, ViewModel, App.xaml.cs, MainWindow.xaml을 모두 작성한다.최종적으로 WPF MVVM 프로젝트에서 IoC가 왜 중요한지 체험한다. 2. 기능명: Ioc.Default, IServiceProvider더보기✔️ Inversion of Control (제어의 역전)란?객체의 생성과 관계 설정을 개발자가 직접 하지 않고, IoC 컨테이너가 대신 처리함IoC를 통해, 객체 생성을 프레임워크에 위임하여 의..
03.3 INotifyPropertyChanged
03.3 INotifyPropertyChanged
2025.04.181️⃣ INotifyPropertyChanged더보기 📚 Microsoft Learn / Learn / .NET / MVVM ✅ [INotifyPropertyChanged] 개요 클래스에 INotifyPropertyChanged 인터페이스를 자동 구현하게 해주는 '어트리뷰트' 입니다.INotifyPropertyChanged 인터페이스와 다릅니다. ✅ [INotifyPropertyChanged] 사용 예시[INotifyPropertyChanged]public partial class MyViewModel{ public string Name { get; set; }} ✅ [ObservableProperty] 비교public partial class MyViewModel : ObservableO..
03.2 ObservableValidator
03.2 ObservableValidator
2025.04.181. 출처 및 참고자료더보기✔️ Microsoft Docs: ObservableValidator (공식문서) ObservableValidator는 INotifyDataErrorInfo를 구현하는 MVVM용 ViewModel 베이스 클래스입니다.이 클래스를 상속하고 .ValidateAllProperties() 또는 .ValidateProperty() 메서드를 호출하면, 속성의 데이터 유효성 검사가 자동으로 수행되며, View에서 실시간으로 오류 메시지를 수신할 수 있습니다. 관련 어노테이션: [ObservableProperty], [Required], [MinLength], [MaxLength], [EmailAddress] 등 2. 기능명 or 기능 개요더보기✔️ 작동 방식ObservableObject..
03.1 ObservableObject
03.1 ObservableObject
2025.04.181️⃣ ObservableProperty 개요더보기 📚 Microsoft Docs: Microsoft CommunityToolkit MVVM - ObservableObject ✅ ObservableProperty 개요ObservableObject는 MVVM Toolkit에서 제공하는 MVVM의 핵심 클래스입니다.ObservableObject는 INotifyPropertyChanged, INotifyPropertyChanging 인터페이스가 구현되어 있습니다.즉, MVVM 구조에서 Observable하지 않은 기존 객체를 MVVM에 통합하는 핵심 기술입니다. ✅ ObservableProperty 사용법ㅇ ✅ 예제 소스 코드 2️⃣ 비교 ( 전통적 구현 vs ObservableObject vs..
12. 이벤트
12. 이벤트
2025.04.02이벤트는 대리자와 같은 개념으로, 대리자를 이해한 후 이벤트를 학습해야 한다.이벤트가 대리자와 다른점은, 이벤트는 메서드 안에서만 호출해서 사용 가능하다는 점이다. 이벤트가 시작되는 로직과, 이벤트에 영향을 받아 동작하는 로직을 구분하는것이 먼저다. 아래 예제는, 버튼이 눌려지면, 레이블에 문자열이 수정되는 구조를 구현한다고 가정하자.eg) [버튼 클릭 > 이벤트(대리자)] > 레이블 수정 1. 이벤트 선언 방법이벤트는 대리자를 event 한정자로 수식해서 만든다.[ event 키워드 ] [ 대리자 ] [ 이벤트이름 ]; 2. 이벤트 선언의 목적위 예제 구조에서 구현된 이벤트는, 이벤트를 형태의 선언이 목적이 아니다.레이블의 수정이 목적이다.시작은 Button 객체의 click 함수의 실행목적..
11. 대리자
11. 대리자
2025.04.021. 참고 자료더보기1. 참고 링크MSDN 2. 학습목표 - 3. 학습순서Callback 개념과 Delegate 용어대리자를 사용하는 이유Delegate를 선언하고 사용하는 방법일반화 대리자를 사용하는 방법Multicast Delegete (대리차 체인) 4. 대리자 사용 목적메서드를 변수처럼 사용하기 위해이벤트 처리메서드 호출을 런타임에 동적으로 변경할 때코드의 결합도 낮춤 (느슨한 결합, Loosely Coupled) 여러 개의 메서드를 하나의 대리자에 연결, 한 번에 실행 가능LINQ, 람다 표현식에서의 활용비동기 호출 (BeginInvoke/EndInvoke) 2. 대리자 사용법더보기1. 기본 문법// 반환형과 매개변수 목록을 포함한 선언// 함수 헤더에 delegate 로 수식하면 된..
5. 인터페이스와 추상 클래스
5. 인터페이스와 추상 클래스
2025.04.02
2.3 캡슐화 - 프로퍼티
2.3 캡슐화 - 프로퍼티
2025.04.011. 참고자료더보기1. 영상 링크 https://youtu.be/zgeCwYWzK-k?si=rJFngC_y71cOcVSm[C# 기초 강의] Ch 09. 프로퍼티 2. 용어 체크리스트 맴버, 필드: 프로퍼티의 실제 값프로퍼티: 객체의 상태 값 캡슐화, 접근제어자,어트리뷰트, 유효성 2. Member(멤버) vs Field(필드) vs Property(전통적 프로퍼티) vs Property(자동완성 프로퍼티)더보기1. Member(멤버) C/C++ 로 프로그래밍을 입문하는 경우C# Class 내부의 변수와 함수를 멤버라고 C++에서 사용하는 맴버라는 용어로 지칭하는 경우가 많다. 손쉬운 구분을 위해, 맴버는 클래스에 사용하고, 필드와 프로퍼티는 객체에 사용한다. 2. Field(필드) vs P..
2.2 캡슐화 - 접근 제어자
2.2 캡슐화 - 접근 제어자
2025.04.011. 목표 → OOP는 왜 등장했을까?더보기1. 목표 문제점 파악: 기존의 절차 지향 프로그래밍(POP)의 한계와 문제점을 파악해결책 이해: 객체 지향 프로그래밍(OOP)의 문제 해결 방법 이해 2. 용어 캡슐화(Encapsulation) - OOP의 주요 특성접근 제어자(Access Modifier) - C# 프로그래밍 문법 3. 참고 자료https://youtu.be/zgeCwYWzK-k?si=rJFngC_y71cOcVSm 2. - 절차지향 문제점 → 시나리오 2개더보기1. 어느 함수에서나 접근 가능한 공유 데이터 문제#include int score = 100; // 전역 변수 사용 → 모든 함수가 직접 접근 가능함 (❗ 절차지향의 문제점 1: 전역 변수 남용)void addBonus..
2.1 OOP - 추상화, 클래스, 객체
2.1 OOP - 추상화, 클래스, 객체
2025.04.011. 현실에서 "추상"→ "네 말은 너무 추상적이야"더보기1. 목표프로그래밍의 추상화 개념에 앞서, 현실에서 "추상"이라는 단어가 사용된 예시들을 살펴보면서 "추상화"의 용어를 이해해 봅니다. 2. 예시1) "네 말은 너무 추상적이야"위 문장의 반대말은, "구체적"입니다. 2) 미술에서 추상화 기법을 찾아봅시다.현실 세계의 형태, 색, 선, 질감을 >> 변형하거나 단순화하여 감정, 개념, 또는 본질을 표현하는 방식입니다.반대 의미는, 구체적인 형상을 "사실적"으로 그려내는 것입니다. 3) 현실에서 멀리서 다가오는 친구의 구분해 봅시다.여러 사람 중 친구를 구분할 수 있다면, 그 기준은 친구만이 가진 "특징, 특성"이 기준일 것입니다. 4) 눈을 최대한 감고, 희미하게 뜬 상태에서 옆사람을 바라봅시다..
1. 프로그래밍 학습 관점
1. 프로그래밍 학습 관점
2025.03.301. 목적 → "프로그래밍 언어"와 "개발 기술"은 프로그램을 만들기 위한 것입니다.더보기- 프로그래밍은 학생, 초보자, 신입를 고려한 교육과 학문의 영역이 아닙니다. "프로그래밍"은 '프로그램'을 만들기 위해 등장했습니다.그리고 좀 더 효율적으로 프로그램을 만들기 위해, 기술을 개선하고, 새로운 기술이 등장합니다. 여러분이 배워야 할 프로그래밍 기술은 "현장의 개발자"를 위한 참고자료 입니다.초보자를 위한 것이 아닙니다. 2. 을 만들어야 합니다.→ 이론 학습 >> 실습 >> 체득더보기- 프로그래밍 문법은, 실제 프로그램을 만드는 방법이 아닙니다. 영어 문법만 열심히 공부했다고 해서, 영어 소설을 쓰고, 영어 에세이를 쓰고, 영어 연설을 할 수 있을까요?혹시 가능하다면, 그건 우리가 한글..
12. Command - CanExecute
12. Command - CanExecute
2025.03.281. View (1단계) 더보기 Title="ICommand Example" Height="100" Width="300"> 2. ViewModel (1단계)더보기public class MainViewModel{ // // 사용자로부터 입력받은 텍스트를 저장하는 프로퍼티입니다. // private string _inputText; public string InputText { get => _inputText; ..