All Pages
3.8 SOLID - DIP
3.8 SOLID - DIP
2025.05.04
3.7. SOLID - ISP
3.7. SOLID - ISP
2025.05.041. SOLID 원칙더보기1. SOLID OOP, 객체 지향 프로그래밍 설계의 기본 원칙 SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙 2. 인터페이스 분리 원칙(ISP, Interface Segregation Principle)더보기Many client-specific interfaces are better than one general-purpose inter..
3.6. SOLID - LSP
3.6. SOLID - LSP
2025.05.041. SOLID 원칙더보기1. SOLID OOP, 객체 지향 프로그래밍 설계의 기본 원칙 SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙2. 리스코프 치환 원칙(LSP, Liskov Substitution Principle)더보기Functions that use pointers or references to base classes must be able to use..
3.5. SOLID - OCP
3.5. SOLID - OCP
2025.05.041. SOLID 원칙더보기1. SOLID OOP, 객체 지향 프로그래밍 설계의 기본 원칙 SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙 2. 개방-폐쇄 원칙 (OCP, Open-Closed Principle)더보기1. 개념 "Software entities ... should be open for extension, but closed for modificatio..
3.4. SOLID - SRP
3.4. SOLID - SRP
2025.05.041. SOLID 원칙더보기1. SOLID OOP, 객체 지향 프로그래밍 설계의 기본 원칙 SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle 개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle 인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙 2. SOLID 학습 목적 DI, 의존성 주입을 정확하게 이해하고MVVM 패턴을 효과적으로 구현하기 위해서는객체 지향 프로그래밍 설계의 5대 원칙(SOILD)를 이해하고 적절히 적용해야 합니다. 3. WPF 학습방향 C# ..
3.3 추상클래스, 인터페이스
3.3 추상클래스, 인터페이스
2025.05.04Depend upon abstractions, not concretions- 상세한 구현에 의존하지 말고, 공통된 개념(추상화)에 의존해라.)
3.2 종속성 해결 - 추상화
3.2 종속성 해결 - 추상화
2025.05.04Depend upon abstractions, not concretions 1️⃣ 학습 목표: 학습 목표는 "의존성 해결을 위한 추상화 기술 이해"입니다. 이를 위한 단계별 학습 순서를 확인합니다.더보기✔️ 1. 학습 목표Step 1. 추상 개념 이해Step 2.추상화 구현Step 3.추상화 구현된 추상 클래스와 인터페이스 적용하여 구현 ✔️ 2. 의존성 해결 방법 Q. 클래스 간의 의존 관계를 어떻게 제거할 수 있을까요?A. 클래스가 추상화된 인터페이스를 구현하여 대신 의존하게 합니다. 의존성 문제를 해결하기 위한 최종 목표는의존성 주입(Dependency Injection)을 통한 제어 역전(Inversion of Control) 상태 구현입니다. 이를 위해 아래 개념들을 하나씩 이해해야 합니다..
3.1 종속성 문제
3.1 종속성 문제
2025.05.04Depend upon abstractions, not concretions 1️⃣ 학습 목표: 학습 목표는 "의존성 문제" 파악입니다. 이를 위한 단계별 학습 순서를 확인합니다.더보기✔️ 1. 학습 목표Step 1. Dependency, 의존성이라는 용어와 개념 이해의존, 의지, 종속에 대한 이미지를 머리속에 그리기간단한 상속 관계를 기반으로 의존 개념 이해하기Step 2.객체 지향 프로그래밍(OOP)의 의존된 구조에서의존성 개념 이해하기Step 3.의존된 구조의 문제 파악하기 ✔️ 2. 의존 관계와 집합 이미지 2️⃣ 의존성 이해더보기 ✔️ 1. 용어 Dependency: 의존, 의지, 종속依 의지할 의, 存 있을 존다른 것에 의지(依支)하여 존재(存在)함. ✔️ 2. 상속 관계에서 의존 관계 ..
2.1.5 예제 - 3단계
2.1.5 예제 - 3단계
2025.05.011️⃣ 예제 3더보기✔️ 1. 동작 시나리오TextBox에 입력하면리스트 박스와, 콘솔에 변경 로그가 찍힙니다.로그 필터링(키워드) 기능과로그 초기화 기능을 추가합니다. ✔️ 2. [ObservableProperty] 사용 예제 📁 2.1 MainViewModel.cs 수정 // 로그 출력을 위한 컬렉션 추가 public ObservableCollection Logs { get; } = new(); // 필터링된 로그 보기 public ICollectionView FilteredLogs { get; } public MainViewModel() { // 필터링 뷰 구성 FilteredLogs = CollectionViewSource.GetDefaultView(Logs); Filter..
2.1.4 예제 - 2단계
2.1.4 예제 - 2단계
2025.05.011️⃣ 예제 2더보기✔️ 1. 동작 시나리오TextBox에 입력하면 콘솔에 출력되던 로그를, ListBox UI 에 출력되도록 변경합니다.ObservableCollection Logs를 만들고,OnNameChanging과 OnNameChanged에서 로그를 추가하고,ListBox UI에 바인딩하여 실시간으로 로그가 출력되도록 구현합니다. ✔️ 2. [ObservableProperty] 사용 예제 📁 2.1 MainViewModel.cs 수정// 로그 출력을 위한 컬렉션 추가public ObservableCollection Logs { get; } = new();// 콘솔 출력에, 로그에 저장 기능 추가 구현partial void OnNameChanging(string? value){ Conso..
2.1.3 예제 - 1단계
2.1.3 예제 - 1단계
2025.05.011️⃣ [ObservableProperty] 사용 예제 - 1단계더보기✔️ 1. 학습 목표CommunityToolkit.Mvvm 패키지를 사용해 프로젝트를 구현하는 방법을 학습합니다. ✔️ 2. 동작 시나리오TextBox에 입력하면콘솔에 변경 로그가 찍힙니다.ListBox에서 아이템을 클릭하면해당 아이템의 IsSelected가 true로 변경되고 출력됩니다. 2️⃣ Ex03_Step01: CommunityToolkit.Mvvm 패키지를 활용한 프로젝트를 단계별로 따라하며 구현해봅니다.더보기📁 1. 가장먼저, 아래 링크를 참고해 WPF 프로젝트를 생성 합니다. WPF 프로젝트 생성하기01. Visual Studio 실행더보기 02. 새 프로젝트 생성더보기❶ 최근 실행한 프로젝트의 목록을 보여줍니다.❷ ..
2.1.2 예제 - MVVM 자동 구현
2.1.2 예제 - MVVM 자동 구현
2025.05.011️⃣ 학습 목표: 예제의 학습 목표와 동작 시나리오를 파악한 뒤, 소스코드를 직접 확인합니다.더보기✔️ 1. 학습 목표Step 1. Ex01INotifyPropertyChanged 예제의 C# MVVM 수동 구현 구조와 비교하여CommunityToolkit.Mvvm 패키지를 사용할 때, 어떤 부분을 효과적으로 사용 할 수 있는지 확인합니다.Step 2.이후에 CommunityToolkit.Mvvm 패키지를 사용해 자동 구현할 때,어떤 부분이 자동화되어 편리한지 확인합니다.Step 3.수동 구현 예제는 아래 자동완성 소스코드만으로 대체 구현 가능합니다.using CommunityToolkit.Mvvm.ComponentModel;public partial class MainViewModel : Observ..