Csharp 디미터 법칙과 함수 체이닝 함수 체이닝은 선행 함수의 결과에 대해 함수를 호출해야 할 때 함수를 연결하여 호출하는 테크닉입니다. 각 함수는 자신이 속한 객체 인스턴스를 반환하여 그 결과에 대해 또 함수를 호출할 수 있도록 합니다. 위 예제에서는 하나의 객체에 대해 함수 체이닝을 사용해서 객체의 상태 (내부 데이터)를 변경하고 있습니다. 또 하나 C#에서는 더 자주, 유용하게 사용되는 함수 체이닝이 있습니다. 이렇게 함... cleancodeCsharpCsharp C#프로그래밍 07 : 은닉성(캡슐화) + 프로퍼티, 레코드 객체지향 프로그래밍의 특징 중 하나로 은닉성(캡슐화)가 있다. 접근 제한자 프로퍼티 클래스를 사용자에게 필요한 최소의 기능만 노출하고 내부를 감추는 것 외부로 제공해야 할 기능만 노출 접근 제한자 아래 접근 제한자로 수식하지 않은 멤버는 private로 지정됨 public : 클래스 안/밖 접근가능 protected : 클래스 안에서 접근가능. 파생 클래스에서는 접근 가능 private : ... 학부CsharpCsharp C#프로그래밍 08 : 상속성 클래스는 다른 하나의 클래스로부터 유산을 물려받을 수 있음 (=상속받을 수 있음) 다중상속은 지원하지 않는다. 부모 클래스(기반 클래스) : 상속해주는 클래스 자식 클래스(파생 클래스) : 상속 받는 클래스 sealed키워드를 붙여 클래스가 상속되지 않도록 하거나, 메소드가 자식클래스에서 오버라이드 되지 않도록 할 수 있다. 상속 제한 아래 코드는 sealed설정된 클래스를 상속하려고 해 오... 학부CsharpCsharp C#프로그래밍 06 : 메소드 객체가 아닌 클래스 자체에 소속되어, 프로그램 전체에서 유일한 필드/메소드로 지정함. 인스턴스에서 static 필드/메소드에 접근은 불가능 값에 의한 전달 아래 코드는 매개변수로 값을 전달하고, 객체 내 메소드에서는 이 값을 위한 별도 메모리 공간을 할당함. 참조에 의한 전달 ref 키워드를 붙여 참조를 전달하도록 설정할 수 있음 메소드 매개변수를 참조로 전달 아래 코드는 메소드를 호출할 때... Csharp학부Csharp C# 클래스 (static, 생성자, namespace, Main) 현실 세계를 모델링하여, 사물을 속성과 행위로 나눠 코드로 표현 단순히 속성만 있는 클래스를 정의하고 생성하는 코드. 객체 지향 프로그래밍에서는 저런 객체들 간의 행위를 통해 코드를 작성함. 메서드 추가, 메서드를 사용하는 이유는 코드 중복을 제거할 수 있기 때문, 또한 재사용도 가능.... Csharp기본문법Csharp [C#] 파일 정보 출력 및 저장 씨샾CsharpCsharp 백준 10818 C# Csharp개인공부백준Csharp 백준 2562 C# Csharp개인공부백준Csharp C# Class2 객체 복사 ShallowCopy, DeepCopy 객체 복사할 때 참조만 복사하는 것은 얕은 복사(ShallowCopy) 예시 코드 깊은 복사(DeepCopy)는 힙에 보관되어 있는 내용을 source로부터 복사해서 받아 별도의 힙 공간에 객체를 보관하는 것 예시 코드 this 키워드 this는 객체가 자신을 지정할 때 사용하는 키워드 객체 외부에서는 객체의 필드(변수)나 메소드를 접근할 때... CsharpCsharp C#프로그래밍 05 : 클래스 Person은 클래스 Name, Age는 필드 printInfo는 메소드 언제 실행될 지 장담할 수 없다. GC에 의해 호출된다. 객체가 아닌 클래스 자체에 소속되어, 프로그램 전체에서 유일한 필드/메소드로 지정함. 인스턴스에서 static 필드/메소드에 접근은 불가능 아래 코드는 매개변수로 값을 전달하고, 객체 내 메소드에서는 이 값을 위한 별도 메모리 공간을 할당함. ref 키워드를 붙여... Csharp학부Csharp # 프로그래밍 - CH4 반복문 배열 != 리스트 int[] arr = { 1, 2, 3 }; 접근은 인덱스로 가능 arr[0] (단, 음수로 접근 불가) 빈배열 생성 시 int[] arr = new int[100]; 이때, 숫자 자료형은 0, 문자열 자료형은 빈 문자열, 객체는 null로 초기화됨 요소 개수 확인 시 Length 속성을 사용 arr.Length 조건의 참 거짓 여부와 상관없이 내부의 문장을 최소 한 번은 ... CsharpCsharp # 프로그래밍 - CH5 클래스 클래스 = 사용자 정의 자료형 클래스 인스턴스 = new 생성자; 클래스를 변수로 선언한 것을 인스턴스 또는 객체라고 부름 또, 클래스 이름과 같은 메서드를 생성자라고 부름 위에서와 같이 인스턴스 뒤에 점을 찍고 사용하는 멤버를 인스턴스 멤버라고 부름 해당 멤버가 변수면 인스턴스 변수, 메서드면 인스턴스 메서드, 속성이면 인스턴스 속성 등으로 부름 크기가 고정되어 있는 배열과 달리 List ... CsharpCsharp # 프로그래밍 - CH6 메서드 접근 제한자 반환형 메서드 이름(매개변수) 변수와 마찬가지로, 메서드도 인스턴스 메서드와 클래스 메서드가 있음 클래스 변수와 마찬가지로, 클래스 메서드 생성 시 접근 제한자 뒤에 static 키워드를 붙여줌 접근 제한자 static 반환형 메서드 이름 (매개변수) { 메서드 코드 } 클래스 메서드에서는 아직 메모리에 올라가지 않은 인스턴스 변수와 인스턴스 메서드를 사용할 수 없음 이를 수정하... CsharpCsharp # 프로그래밍 - CH7 상속과 다형성 Dog 클래스 Cat 클래스 자식 클래스``:``부모 클래스 클래스 사이에 부모 자식 관계를 정의하는 작업 Animal 클래스 (부모 클래스) Dog 클래스와 Cat 클래스 (자식 클래스) 자식 클래스는 부모 클래스의 public 또는 protected 멤버에 접근할 수 있음 부모 자식 간 멤버 이름이 겹치는 등의 특수한 이유(하이딩 등)로 인해 부모의 메서드에 접근할 수 없을 때, priv... CsharpCsharp # 프로그래밍 - CH8 클래스 심화 이렇게 < > 기호 내부에 식별자를 지정해서 Wanted<int> 처럼 사용하면 T 에 int 자료형이 할당됨 마찬가지로 Wanted<float> 처럼 사용하면 T 에 float 자료형이 할당됨 다음 코드는 제네릭을 사용하여 변수 Value 의 자료형을 원하는 자료형으로 지정함 두 개 이상의 제네릭을 사용한다면? 제네릭에 모든 자료형을 허용하면 안 되는 경우, where 키워드를 사용해서 제... CsharpCsharp # 프로그래밍 - CH9 인터페이스 를 누른 후 인터페이스 구현 을 클릭하면 CompareTo() 메서드가 자동으로 생성됨 IComparable 인터페이스는 CompareTo() 메서드를 구현해야 한다는 규약을 갖고 있으므로 다음과 같이 Price 속성의 CompareTo() 메서드로 Price 속성끼리 비교할 수 있도록 해줌 를 누른 후 인터페이스 구현 을 클릭하면 Dispose() 메서드가 자동으로 생성됨 따라서 아래와 같... CsharpCsharp # 프로그래밍 - CH10 예외 처리 이렇게 실행 중에 발생한 오류를 예외(Exception)라고 부름 이런 오류를 대처할 수 있게 하는 것을 예외 처리(Exception Handling)라고 부름 기본 예외 처리 고급 예외 처리 예외가 발생하지 않게 사전에 해결하는 것 다음은 IndexOutOfRangeException 을 기본 예외 처리하는 예제임 배열의 길이를 확인해서 입력된 값이 배열의 길이를 넘으면, 잘못되었다고 알려줌... CsharpCsharp # 프로그래밍 - CH11 델리게이터와 람다 이는 메서드 자체를 매개변수로 전달하거나 반환할 수 있다는 말이고, 연산자까지 활용할 수 있게 된다는 말임 변수는 메서드와 달리 굉장히 유연해 매개변수 등으로 이리저리 전달할 수 있음 행위를 저장하고 전달할 수 있다면 굉장히 편리하겠다는 생각으로 메서드를 변수로 사용하는 개념이 프로그래밍 언어에 등장하기 시작함 그리고 이것을 변수로 만들어 초기화할 때 사용하는 것이 메서드 이름, 무명 델리게... CsharpCsharp # 프로그래밍 - CH12 Linq Linq(Language-Integrated Query)는 컬렉션 형태의 데이터를 쉽게 다루고자 SQL을 본따 만든 구문임 Linq를 사용하면 C# 객체의 집합을 쉽게 관리할 수 있으며, SQL 서버를 연동하여 데이터베이스 관리를 간단하게 할 수도 있음 데이터를 선별하는 정형화된 코드 (Linq X) Linq 구문은 다음과 같이 이루어져 있음 select 모든 Linq 쿼리는 from, in... CsharpCsharp C# Class1 객체지향 프로그래밍 코드 내의 모든 것을 객체로 표현하고자 하는 프로그래밍 패러다임 추상적으로 객체의 속성, 기능을 설계 속성 → 데이터, 기능 → 메소드 클래스 클래스는 객체를 만들기 위한 틀 클래스 → 붕어빵 틀, 객체 → 붕어빵1, 붕어빵2, ..., 각각 붕어빵 메모리공간 차지 string a, string b 에서도 string은 이미 정의된 문자열을 다루는 클래스 이때 a, b를 ... CsharpCsharp asp.net core graphql with hotchocolate #2 에 있었던 DateTime을 Date로 변환하는 문제를 다르게 해결 할 수있는 방법에 대해 이야기 해보려한다. 1. Query만들기 2. ObjectType만들기 3. 굳이 이렇게 까지 해야하는가? 4. 결론 1. Query만들기 위와 같이 기존 PensionService를 GraphQL 서비스로 만들어야 한다. 2. ObjectType만들기 Version 1 Member의 BirthDay ... queryCsharpgraphqlCsharp
디미터 법칙과 함수 체이닝 함수 체이닝은 선행 함수의 결과에 대해 함수를 호출해야 할 때 함수를 연결하여 호출하는 테크닉입니다. 각 함수는 자신이 속한 객체 인스턴스를 반환하여 그 결과에 대해 또 함수를 호출할 수 있도록 합니다. 위 예제에서는 하나의 객체에 대해 함수 체이닝을 사용해서 객체의 상태 (내부 데이터)를 변경하고 있습니다. 또 하나 C#에서는 더 자주, 유용하게 사용되는 함수 체이닝이 있습니다. 이렇게 함... cleancodeCsharpCsharp C#프로그래밍 07 : 은닉성(캡슐화) + 프로퍼티, 레코드 객체지향 프로그래밍의 특징 중 하나로 은닉성(캡슐화)가 있다. 접근 제한자 프로퍼티 클래스를 사용자에게 필요한 최소의 기능만 노출하고 내부를 감추는 것 외부로 제공해야 할 기능만 노출 접근 제한자 아래 접근 제한자로 수식하지 않은 멤버는 private로 지정됨 public : 클래스 안/밖 접근가능 protected : 클래스 안에서 접근가능. 파생 클래스에서는 접근 가능 private : ... 학부CsharpCsharp C#프로그래밍 08 : 상속성 클래스는 다른 하나의 클래스로부터 유산을 물려받을 수 있음 (=상속받을 수 있음) 다중상속은 지원하지 않는다. 부모 클래스(기반 클래스) : 상속해주는 클래스 자식 클래스(파생 클래스) : 상속 받는 클래스 sealed키워드를 붙여 클래스가 상속되지 않도록 하거나, 메소드가 자식클래스에서 오버라이드 되지 않도록 할 수 있다. 상속 제한 아래 코드는 sealed설정된 클래스를 상속하려고 해 오... 학부CsharpCsharp C#프로그래밍 06 : 메소드 객체가 아닌 클래스 자체에 소속되어, 프로그램 전체에서 유일한 필드/메소드로 지정함. 인스턴스에서 static 필드/메소드에 접근은 불가능 값에 의한 전달 아래 코드는 매개변수로 값을 전달하고, 객체 내 메소드에서는 이 값을 위한 별도 메모리 공간을 할당함. 참조에 의한 전달 ref 키워드를 붙여 참조를 전달하도록 설정할 수 있음 메소드 매개변수를 참조로 전달 아래 코드는 메소드를 호출할 때... Csharp학부Csharp C# 클래스 (static, 생성자, namespace, Main) 현실 세계를 모델링하여, 사물을 속성과 행위로 나눠 코드로 표현 단순히 속성만 있는 클래스를 정의하고 생성하는 코드. 객체 지향 프로그래밍에서는 저런 객체들 간의 행위를 통해 코드를 작성함. 메서드 추가, 메서드를 사용하는 이유는 코드 중복을 제거할 수 있기 때문, 또한 재사용도 가능.... Csharp기본문법Csharp [C#] 파일 정보 출력 및 저장 씨샾CsharpCsharp 백준 10818 C# Csharp개인공부백준Csharp 백준 2562 C# Csharp개인공부백준Csharp C# Class2 객체 복사 ShallowCopy, DeepCopy 객체 복사할 때 참조만 복사하는 것은 얕은 복사(ShallowCopy) 예시 코드 깊은 복사(DeepCopy)는 힙에 보관되어 있는 내용을 source로부터 복사해서 받아 별도의 힙 공간에 객체를 보관하는 것 예시 코드 this 키워드 this는 객체가 자신을 지정할 때 사용하는 키워드 객체 외부에서는 객체의 필드(변수)나 메소드를 접근할 때... CsharpCsharp C#프로그래밍 05 : 클래스 Person은 클래스 Name, Age는 필드 printInfo는 메소드 언제 실행될 지 장담할 수 없다. GC에 의해 호출된다. 객체가 아닌 클래스 자체에 소속되어, 프로그램 전체에서 유일한 필드/메소드로 지정함. 인스턴스에서 static 필드/메소드에 접근은 불가능 아래 코드는 매개변수로 값을 전달하고, 객체 내 메소드에서는 이 값을 위한 별도 메모리 공간을 할당함. ref 키워드를 붙여... Csharp학부Csharp # 프로그래밍 - CH4 반복문 배열 != 리스트 int[] arr = { 1, 2, 3 }; 접근은 인덱스로 가능 arr[0] (단, 음수로 접근 불가) 빈배열 생성 시 int[] arr = new int[100]; 이때, 숫자 자료형은 0, 문자열 자료형은 빈 문자열, 객체는 null로 초기화됨 요소 개수 확인 시 Length 속성을 사용 arr.Length 조건의 참 거짓 여부와 상관없이 내부의 문장을 최소 한 번은 ... CsharpCsharp # 프로그래밍 - CH5 클래스 클래스 = 사용자 정의 자료형 클래스 인스턴스 = new 생성자; 클래스를 변수로 선언한 것을 인스턴스 또는 객체라고 부름 또, 클래스 이름과 같은 메서드를 생성자라고 부름 위에서와 같이 인스턴스 뒤에 점을 찍고 사용하는 멤버를 인스턴스 멤버라고 부름 해당 멤버가 변수면 인스턴스 변수, 메서드면 인스턴스 메서드, 속성이면 인스턴스 속성 등으로 부름 크기가 고정되어 있는 배열과 달리 List ... CsharpCsharp # 프로그래밍 - CH6 메서드 접근 제한자 반환형 메서드 이름(매개변수) 변수와 마찬가지로, 메서드도 인스턴스 메서드와 클래스 메서드가 있음 클래스 변수와 마찬가지로, 클래스 메서드 생성 시 접근 제한자 뒤에 static 키워드를 붙여줌 접근 제한자 static 반환형 메서드 이름 (매개변수) { 메서드 코드 } 클래스 메서드에서는 아직 메모리에 올라가지 않은 인스턴스 변수와 인스턴스 메서드를 사용할 수 없음 이를 수정하... CsharpCsharp # 프로그래밍 - CH7 상속과 다형성 Dog 클래스 Cat 클래스 자식 클래스``:``부모 클래스 클래스 사이에 부모 자식 관계를 정의하는 작업 Animal 클래스 (부모 클래스) Dog 클래스와 Cat 클래스 (자식 클래스) 자식 클래스는 부모 클래스의 public 또는 protected 멤버에 접근할 수 있음 부모 자식 간 멤버 이름이 겹치는 등의 특수한 이유(하이딩 등)로 인해 부모의 메서드에 접근할 수 없을 때, priv... CsharpCsharp # 프로그래밍 - CH8 클래스 심화 이렇게 < > 기호 내부에 식별자를 지정해서 Wanted<int> 처럼 사용하면 T 에 int 자료형이 할당됨 마찬가지로 Wanted<float> 처럼 사용하면 T 에 float 자료형이 할당됨 다음 코드는 제네릭을 사용하여 변수 Value 의 자료형을 원하는 자료형으로 지정함 두 개 이상의 제네릭을 사용한다면? 제네릭에 모든 자료형을 허용하면 안 되는 경우, where 키워드를 사용해서 제... CsharpCsharp # 프로그래밍 - CH9 인터페이스 를 누른 후 인터페이스 구현 을 클릭하면 CompareTo() 메서드가 자동으로 생성됨 IComparable 인터페이스는 CompareTo() 메서드를 구현해야 한다는 규약을 갖고 있으므로 다음과 같이 Price 속성의 CompareTo() 메서드로 Price 속성끼리 비교할 수 있도록 해줌 를 누른 후 인터페이스 구현 을 클릭하면 Dispose() 메서드가 자동으로 생성됨 따라서 아래와 같... CsharpCsharp # 프로그래밍 - CH10 예외 처리 이렇게 실행 중에 발생한 오류를 예외(Exception)라고 부름 이런 오류를 대처할 수 있게 하는 것을 예외 처리(Exception Handling)라고 부름 기본 예외 처리 고급 예외 처리 예외가 발생하지 않게 사전에 해결하는 것 다음은 IndexOutOfRangeException 을 기본 예외 처리하는 예제임 배열의 길이를 확인해서 입력된 값이 배열의 길이를 넘으면, 잘못되었다고 알려줌... CsharpCsharp # 프로그래밍 - CH11 델리게이터와 람다 이는 메서드 자체를 매개변수로 전달하거나 반환할 수 있다는 말이고, 연산자까지 활용할 수 있게 된다는 말임 변수는 메서드와 달리 굉장히 유연해 매개변수 등으로 이리저리 전달할 수 있음 행위를 저장하고 전달할 수 있다면 굉장히 편리하겠다는 생각으로 메서드를 변수로 사용하는 개념이 프로그래밍 언어에 등장하기 시작함 그리고 이것을 변수로 만들어 초기화할 때 사용하는 것이 메서드 이름, 무명 델리게... CsharpCsharp # 프로그래밍 - CH12 Linq Linq(Language-Integrated Query)는 컬렉션 형태의 데이터를 쉽게 다루고자 SQL을 본따 만든 구문임 Linq를 사용하면 C# 객체의 집합을 쉽게 관리할 수 있으며, SQL 서버를 연동하여 데이터베이스 관리를 간단하게 할 수도 있음 데이터를 선별하는 정형화된 코드 (Linq X) Linq 구문은 다음과 같이 이루어져 있음 select 모든 Linq 쿼리는 from, in... CsharpCsharp C# Class1 객체지향 프로그래밍 코드 내의 모든 것을 객체로 표현하고자 하는 프로그래밍 패러다임 추상적으로 객체의 속성, 기능을 설계 속성 → 데이터, 기능 → 메소드 클래스 클래스는 객체를 만들기 위한 틀 클래스 → 붕어빵 틀, 객체 → 붕어빵1, 붕어빵2, ..., 각각 붕어빵 메모리공간 차지 string a, string b 에서도 string은 이미 정의된 문자열을 다루는 클래스 이때 a, b를 ... CsharpCsharp asp.net core graphql with hotchocolate #2 에 있었던 DateTime을 Date로 변환하는 문제를 다르게 해결 할 수있는 방법에 대해 이야기 해보려한다. 1. Query만들기 2. ObjectType만들기 3. 굳이 이렇게 까지 해야하는가? 4. 결론 1. Query만들기 위와 같이 기존 PensionService를 GraphQL 서비스로 만들어야 한다. 2. ObjectType만들기 Version 1 Member의 BirthDay ... queryCsharpgraphqlCsharp