C#

    객체지향의 5대 원칙 SOLID : Dependency Inversion Principle

    DIP(Dependency Inversion Principle) - 의존성 역전 원칙 DIP는 객체지향의 5대 원칙 중 하나로, 고수준 모듈은 저수준 모듈에 의존해서는 안 된다는 것을 의미합니다. 이것은 추상화를 이용하여 모듈 간의 의존성을 낮추는 것을 의미합니다. DIP의 예시 DIP를 지키지 않은 코드는 다음과 같습니다. public class Button { private Lamp lamp = new Lamp(); public void OnPressed() { lamp.TurnOn(); } } public class Lamp { public void TurnOn() { // ... } } 위의 예제에서는 Button 클래스가 Lamp 클래스에 의존하고 있습니다. 이것은 DIP를 위배하는 코드입니다...

    객체지향의 5대 원칙 SOLID : Interface Segregation Principle

    ISP(Interface Segregation Principle) - 인터페이스 분리 원칙 ISP는 객체지향의 5대 원칙 중 하나로, 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 것을 의미합니다. 이것은 인터페이스를 작은 단위로 분리하여 인터페이스 간의 의존성을 낮추는 것을 의미합니다. ISP의 예시 다음은 ISP의 예시입니다. interface IAnimal { void Eat(); void Sleep(); void Move(); } class Dog : IAnimal { public void Eat() { /* ... */ } public void Sleep() { /* ... */ } public void Move() { /* ... */ } } class Bird : IA..

    객체지향의 5대 원칙 SOLID : Liskov Substitution Principle

    Liskov Substitution Principle Liskov Substitution Principle은 리스코프 치환 원칙으로, 서브타입은 언제나 자신의 기반 타입으로 교체 가능해야 한다는 원칙입니다. 이것은 상속을 사용할 때 하위 클래스가 상위 클래스의 기능을 대체할 수 있어야 한다는 것을 의미합니다. Liskov Substitution Principle의 예 다음은 Liskov Substitution Principle의 예시입니다. public class Rectangle { public virtual double Width { get; set; } public virtual double Height { get; set; } public double Area() { return Width * H..

    객체지향의 5대 원칙 SOLID : Open-Closed Principle

    Open-Closed Principle Open-Closed Principle은 개방-폐쇄 원칙으로, 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계해야 한다는 원칙입니다. 이것은 클래스의 수정보다는 확장을 통해 시스템을 변경해야 한다는 것을 의미합니다. Open-Closed Principle의 예 다음은 Open-Closed Principle의 예시입니다. public class Rectangle { public double Width { get; set; } public double Height { get; set; } } public class AreaCalculator { public double CalculateArea(Rectangle[] shapes) { double area =..

    객체지향의 5대 원칙 SOLID : Single Responsibility Principle

    객체지향 프로그래밍에서 효율적이고 확장성 있는 코드를 작성하려면 SOLID 원칙을 지켜야 합니다. SOLID 원칙은 객체지향의 5대 원칙으로 Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle을 의미합니다. 이번 글에서는 SOLID 원칙 중 하나인 SRP(Single Responsibility Principle)에 대해 자세히 살펴보겠습니다. SRP(Single Responsibility Principle) SRP(Single Responsibility Principle)는 단일 책임 원칙..

    C# : System.String

    C#의 클래스 중 하나인 string은 문자열을 저장하고 다양한 작업을 수행할 수 있는 유용한 클래스입니다. 이번 블로그에서는 string 클래스에서 자주 쓰이는 메서드들을 자세하게 설명하겠습니다. Length 문자열의 길이를 반환합니다. string str = "hello"; int length = str.Length; // 5 IndexOf 지정된 문자열의 인덱스를 반환합니다. 만약 문자열이 없다면 -1을 반환합니다. string str = "hello world"; int index = str.IndexOf("world"); // 6 Substring 문자열의 일부분을 반환합니다. string str = "hello world"; string subStr = str.Substring(0, 5); /..

    C# : Refactoring

    C# 스크립트를 작성하는 경우, 코드의 품질을 높이기 위해 리팩토링이 필요할 수 있습니다. 리팩토링이란 기능을 변경하지 않고 코드의 구조를 개선하는 것을 말합니다. 이번 글에서는 C# 스크립트 리팩토링하는 방법을 자세하게 설명하겠습니다. 1. 코드 분석 리팩토링을 시작하기 전에, 코드를 분석하여 어떤 부분을 개선해야 하는지 파악해야 합니다. 코드 분석을 통해 다음과 같은 부분을 파악할 수 있습니다. 코드 중복 긴 메서드나 함수 복잡한 조건문 중첩된 반복문 사용하지 않는 변수나 메서드 2. 코드 중복 제거 코드중복은 코드의 유지보수를 어렵게 만듭니다. 따라서 코드 중복을 최대한 제거하는 것이 좋습니다. 코드 중복을 제거하는 방법은 다음과 같습니다. 메서드 추출 상속 관계 설정 중복 코드를 담당하는 클래스 ..

    C# 추상 클래스란?

    C# 추상 클래스는 인스턴스를 만들 수 없는 클래스입니다. 즉, 추상 클래스는 미완성된 클래스이며, 상속을 통해 완성해야 합니다. 추상 클래스는 abstract 키워드를 사용하여 정의합니다. 추상 클래스를 정의할 때, 다음과 같은 특징을 가집니다. 추상 클래스는 인스턴스를 만들 수 없습니다. 추상 클래스는 완성되지 않은 클래스이므로, 상속을 통해 완성되어야 합니다. 추상 클래스는 추상 메서드를 포함할 수 있습니다. 추상 클래스 사용 방법 추상 클래스를 사용하는 방법은 다음과 같습니다. 추상 클래스를 정의합니다. public abstract class MyAbstractClass { public abstract void MyAbstractMethod(); } 추상 클래스를 상속하는 클래스를 정의합니다. p..