C# WPF
5.4 SOLID - ISP
5.4 SOLID - ISP
2025.09.301. SOLID 원칙더보기1. SOLID SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙객체지향 개념은 추상화 → 캡슐화 → 다형성 → 상속/인터페이스 → SOLID 원칙 → 디자인 패턴 → 아치텍처 패턴 등이 서로 연결되어 있습니다. 2. 인터페이스 분리 원칙(ISP, Interface Segregation Principle)더보기Many client-speci..
5.3 SOLID - LSP
5.3 SOLID - LSP
2025.09.301. SOLID 원칙더보기1. SOLID SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙객체지향 개념은 추상화 → 캡슐화 → 다형성 → 상속/인터페이스 → SOLID 원칙 → 디자인 패턴 → 아치텍처 패턴 등이 서로 연결되어 있습니다.2. 리스코프 치환 원칙(LSP, Liskov Substitution Principle)더보기A. 개념 Functions that ..
5.2 SOLID - OCP
5.2 SOLID - OCP
2025.09.301. SOLID 원칙더보기1. SOLID SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙객체지향 개념은 추상화 → 캡슐화 → 다형성 → 상속/인터페이스 → SOLID 원칙 → 디자인 패턴 → 아치텍처 패턴 등이 서로 연결되어 있습니다. 2. 개방-폐쇄 원칙 (OCP, Open-Closed Principle)더보기A. 개념 "Software entities ... ..
5.1 SOLID - SRP
5.1 SOLID - SRP
2025.09.301. SOLID 개요더보기객체 지향 프로그래밍에는 4가지 객체지향의 특징과, 5가지 객체지향의 원칙이 존재합니다. A. SOLID 원칙이란?: 객체 지향 프로그래밍 설계시 준수해야 할 5가지의 원칙을 의미합니다. SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙 B. SOLID는 처음 한번에 나온 것이 아니라, 여러 학자들의 연구와 글에서 유래하여 정리된 원칙입..
4.4 인터페이스
4.4 인터페이스
2025.09.30Depend upon abstractions, not concretions- 상세한 구현에 의존하지 말고, 공통된 개념(추상화)에 의존해라.) 더보기1. 의존성 문제가 있는 소스코드using System;using System.Collections.Generic;// 추상화된 인터페이스 없이 구체 클래스 직접 사용class Cat{ public void Speak() { Console.WriteLine("Meow"); }}class Dog{ public void Speak() { Console.WriteLine("Bark"); }}class Sheep{ public void Speak() { Console.WriteLine..
4.3 의존성 해결 - 추상화
4.3 의존성 해결 - 추상화
2025.09.30Depend upon abstractions, not concretions- 상세한 구현에 의존하지 말고, 공통된 개념(추상화)에 의존해라.) 1. 학습 목표: 학습 목표는, 의존성 문제 해결을 위한 "추상화 기술" 이해입니다. 이를 위한 단계별 학습 순서를 확인합니다.더보기A. 학습 목표Step 1. 추상 개념 이해Step 2. 추상화 구현 이해Step 3. 추상화된 추상 클래스와 인터페이스 적용하여 구현 B. 의존성 문제 해결 방법 Q. 클래스1 ↔ 클래스2 클래스와 클래스 간의 의존 관계를 어떻게 제거할 수 있을까요?A. 클래스1 ↔ 인터페이스 인터페이스 ↔ 클래스2 구조로 의존하게 합니다. 인터페이스는 클래스1이 추상화된 형태입니다..
4.2 의존성 문제
4.2 의존성 문제
2025.09.30Depend upon abstractions, not concretions- 상세한 구현에 의존하지 말고, 공통된 개념(추상화)에 의존해라. - "The Dependency Inversion Principle” (Robert C. Martin, C++ Report, 1996) 1. 학습 목표: 의존성 이해와 의존성 문제 파악을 위한 단계별 학습 순서더보기Step 1. Dependency, 의존성이라는 용어와 개념 이해의존(≒ 의지, 종속, 객체 생성 책임)에 대한 개념 이미지를 머리속에 그리기예) 간단한 상속 관계를 기반으로 "의존" 이라는 단어의 개념을 이해하기Step 2.객체 지향 프로그래밍(OOP)의 의존된 구조에서"의존성" 개념을 소스 코드로 이해하기Step 3.의존된 구조의 문제 파악하기 S..
4.1 추상화
4.1 추상화
2025.09.301. "추상": 단어의 의미더보기A. 목표프로그래밍에서의 "추상화" 개념을 배우기 전에, 일상생활에서 사용되는 "추상"이라는 단어의 의미를 먼저 이해합니다. 일상 속 예시와 미술에서의 추상을 살펴보며, "추상"의 뜻과 "구체"의 대비를 명확히 알아봅니다. B. 예시 1) 추상 ↔ 구체“네 말은 너무 추상적이야”라는 표현이 있습니다. 이는, 내용이 너무 막연하고 실체가 없다는 뜻입니다.이와 반대로 “구체적”이라는 말은, 실제 사례, 수치, 경험 등을 들어 명확하게 설명하는 경우를 의미합니다. 2) 미술에는 추상화 라는 기법이 있습니다.현실 세계의 사물을 그대로 재현하지 않고 형태, 색, 선, 질감을 단순화하거나 변형하여 감정, 개념을 표현하는 기법입니다.반대로, 현실을 실제처럼 묘사하는 화풍은 “사실..
3. 프로퍼티
3. 프로퍼티
2025.09.301. 참고자료더보기A. 영상 링크 https://youtu.be/zgeCwYWzK-k?si=rJFngC_y71cOcVSm[C# 기초 강의] Ch 09. 프로퍼티 B. 용어 체크리스트 맴버필드: 프로퍼티의 실제 값프로퍼티: 객체의 상태 값 캡슐화, 접근제어자,어트리뷰트,유효성 C. 프로퍼티 생성 단축키 자동 구현 프로퍼티 (Auto-Implemented Property)"prop" + Tab + Tab프로퍼티 + private 필드 같이 생성"propfull" + Tab + Tab 2. Member(멤버) vs Field(필드) vs Property(전통적 프로퍼티) vs Property(자동완성 프로퍼티)더보기A. Member(멤버) C/C++ 로 프로그래밍을 입문하는 경우C# Class 내부의 변수..
3. OOP 등장배경과 접근제어자
3. OOP 등장배경과 접근제어자
2025.09.301. 목표→ OOP는 왜 등장했을까?더보기A. 목표 문제점 파악: 기존의 절차 지향 프로그래밍(POP)의 한계와 문제점을 파악해결책 이해: 객체 지향 프로그래밍(OOP)의 문제 해결 방법 이해 B. 용어 캡슐화(Encapsulation) - OOP의 주요 특성접근 제어자(Access Modifier) - C# 프로그래밍 문법 C. 참고 자료https://youtu.be/zgeCwYWzK-k?si=rJFngC_y71cOcVSm 2. - 절차지향 문제점→ 시나리오 2개더보기A. 어느 함수에서나 접근 가능한 공유 데이터 문제#include int score = 100; // 전역 변수 사용 → 모든 함수가 직접 접근 가능함 (절차지향의 문제점 1: 전역 변수 남용)void addBonus() { sco..
2. 학습 방향
2. 학습 방향
2025.09.301. 기본 접근 관점더보기프로그래밍 언어의 기초 문법(자료형, 연산자, 제어문, 함수, 예외 처리 등)은 대부분 순차적으로 학습할 수 있습니다. 그러나 이 단계를 지나 객체지향, 추상화, SOLID 원칙, 이벤트/대리자, 디자인 패턴과 같은 개념으로 넘어가면, 학습은 단순한 순서 학습이 아닌 상호 유기적·순환적 학습(Spiral Learning)이 필요합니다. 객체지향 개념은 독립적으로 존재하지 않고,추상화 → 캡슐화 → 다형성 → 상속/인터페이스 → SOLID 원칙 → 디자인 패턴 → 아치텍처 패턴 등이 서로 연결되어 있습니다. 따라서 한 번의 설명으로 끝나는 것이 아니라, 전체를 아우르는 지식을 먼저 접하고 다시 반복 복습하면서 점차 깊이 이해해야 합니다 2. OOP 등장배경 - 접근제어자, 프로..
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..