본문 바로가기

C#

(7)
[C#] 계층적인 관계란? 소프트웨어 설계에서 계층적인 관계란 모듈이나 컴포넌트가 서로 상하 관계를 가지는 구조를 의미합니다. 일반적으로 상위 계층은 하위 계층의 기능을 사용하고, 하위 계층은 상위 계층에 대한 어떠한 정보도 갖지 않습니다. 이러한 구조는 명확한 책임 분리와 유지 보수의 용이성을 제공합니다.예시: 3계층 아키텍처프레젠테이션 계층 (Presentation Layer)사용자 인터페이스와 직접 상호작용합니다.UI 관련 로직을 포함합니다.비즈니스 로직 계층 (Business Logic Layer):애플리케이션의 핵심 기능을 구현합니다.비즈니스 규칙과 로직을 처리합니다.데이터 접근 계층 (Data Access Layer):데이터베이스와 상호작용합니다.데이터 CRUD(Create, Read, Update, Delete) 작업..
[C#] 프로젝트 참조와 싱글톤 패턴의 차이 1. 프로젝트 참조: 프로젝트 참조는 한 프로젝트가 다른 프로젝트의 기능을 사용할 수 있도록 하는 것입니다.예를 들어, ProjectA에서 ProjectB를 참조하면 ProjectA는 ProjectB의 모든 공개(public) 클래스와 메서드를 사용할 수 있습니다.참조는 코드 재사용성과 모듈화를 높이는 데 도움이 됩니다.2.싱글톤 패턴:싱글톤 패턴은 클래스의 인스턴스가 애플리케이션 내에서 하나만 존재하도록 보장하는 디자인 패턴입니다.전역 상태를 관리하거나 공통 자원을 관리할 때 유용합니다.예를 들어, 데이터베이스 연결, 설정 관리, 로그 시스템 등은 애플리케이션 전체에서 하나의 인스턴스로 관리되는 것이 효율적입니다. 왜 모든 프로젝트에 모든 프로젝트를 참조하는 것은 적절하지 않을까?모든 프로젝트에 모든 ..
[C#] Partial 메소드 란? 여러분이 거대한 퍼즐을 맞추고 있다고 합니다. 하지만 퍼즐 조각이 너무 많아서 혼자서 다 맞추기가 힘들어요. 그래서 친구들을 불러서 같이 맞추기로 했어요. 여러분이 조금 맞추고, 친구가 나머지를 맞추면, 퍼즐이 완성되죠.이것이 바로 "partial"이라는 것과 비슷해요. 컴퓨터 프로그래밍에서 "partial"은 큰 작업을 몇 부분으로 나눠서 여러 사람이나 여러 번에 걸쳐서 할 수 있게 해줘요. 그래서 일을 조금씩 나눠서 할 수 있고, 나중에 모든 조각이 합쳐져서 큰 일이 완성된답니다.C#에서 partial 키워드는 하나의 클래스, 구조체, 메소드, 인터페이스를 여러 파일에 걸쳐 정의할 수 있게 해주는 기능입니다. 이를 통해 코드 관리가 용이해지고, 특히 대형 프로젝트나 여러 개발자가 동시에 같은 ..
[C#] init 접근자 란? 여러분이 장난감을 처음 받았을 때 넣을 수 있는 상자가 있습니다. 그러나 장난감을 한 번 넣고 나면 다른 것으로 바꿀 수 없어요. C# 프로그래밍에서는 "init 접근자"라는 것이 있어요. 프로그래머가 프로그램의 일부를 "init 접근자"를 사용하여 만들면 처음 만들 때만 설정할 수 있고, 그 후에는 변경할 수 없습니다.C#에서 init 키워드는 속성과 인덱서에 대한 "init 접근자"를 정의하는 데 사용됩니다. 이 기능은 C# 9에서 도입되었으며 주로 불변 객체를 만드는 데 사용됩니다. 불변성은 객체가 생성된 후에는 상태를 수정할 수 없다는 것을 의미합니다. init 접근자는 set 접근자와 비슷하지만, 객체 초기화 단계에 속성 수정을 제한합니다. 즉, 객체를 처음 만들 때 객체 초기화자를 사..
[C#] BackgroundWorker와 Thread 차이 BackgroundWorker 상상해 보세요, 당신이 학교에서 그림을 그리고 있어요. 그런데 선생님이 숙제도 해오라고 했어요. 그 숙제는 그림을 다 그린 후에 할 수 있는 건데, 친구가 도와준다고 해요. 그 친구가 바로 BackgroundWorker예요. 당신이 그림을 그리는 동안, 친구가 숙제를 미리 시작해서 당신이 그림을 다 그리면 바로 숙제도 다 끝나 있어요. 이렇게 BackgroundWorker는 당신이 다른 일을 하고 있는 동안에도 별도의 일을 할 수 있는 친구와 같아요. Thread 이번에는 당신이 그림도 그리고, 노래도 부르고 싶어요. 그런데 동시에 두 가지를 할 수는 없잖아요? 그래서 당신은 두 명의 친구를 불렀어요. 하나는 그림을 그려주고, 다른 하나는 노래를 부르는 거예요. 이 친구들이..
[C#] Sealed 클래스 우리는 아주 특별한 책을 가지고 있어요. 이 책은 우리가 만들었고, 아무도 이 책를 바꾸거나 새로운 것을 추가할 수 없어요. 왜냐하면 우리는 이 책을 완전히 밀봉(또는 sealed)했거든요. 이 상자는 우리만의 특별한 것이며, 다른 사람이 이를 복사하거나 변경하는 것을 원하지 않아요.프로그래밍에서 sealed를 사용하는 것도 비슷해요. 프로그래머가 만든 특별한 코드 블록(예를 들어, 클래스)이 있을 때, 그들은 이것을 sealed로 만들 수 있어요. 이렇게 하면 다른 프로그래머가 그 코드를 바꾸거나 추가하지 못하게 할 수 있어요. 이것은 마치 "이 코드는 완벽해, 아무도 이걸 바꿀 필요가 없어!"라고 말하는 것과 같아요. 조금 더 세부적으로 설명하면,sealed 키워드는 주로 객체 지향 프로그래밍에..
[C#] BackgroundWorker 클래스 우리가 커다란 미술 작품을 만들고 있는데, 혼자서 그림을 그리고 동시에 색칠도 하고, 물감도 섞어야 합니다. 정말 할일이 많죠? 여기서 'BackgroundWorker'는 우리가 그림을 그리는 동안, 친구가 배경을 색칠해주고 물감을 섞어주는 것입니다. 우리는 큰 그림에 집중할 수 있고, 친구는 우리를 도와서 다른 일들을 하죠. 이렇게 함께 일하면, 더 빨리 멋진 작품을 완성할 수 있습니다. 이제, 이 친구를 컴퓨터 안에서 일하는 작은 도우미로 바꿔볼까요? 컴퓨터가 큰 일을 하고 있을 때, 'BackgroundWorker'는 다른 작은 일들을 배경에서 처리해줘요. 그래서 컴퓨터가 한 가지 일에만 집중하지 않고, 여러 가지 일을 동시에 할 수 있게 되죠. 우리가 비디오 게임을 하면서 음악을 듣는 것처럼 말이..