2학년 2학기/윈도우즈 프로그래밍12 윈폼 블로그 https://andjjip.tistory.com/category/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B3%BC%EC%A0%95%EC%A4%80%EB%B9%84/WinForm 2024. 11. 4. 고급 프로그래밍 기법(1) - 제너릭, Attribute 1. 제네릭(Generic)제네릭 프로그래밍은 클래스나 메소드에서 특정 데이터형에 의존하지 않고, 다양한 자료형을 처리할 수 있도록 프로그래밍하는 기법입니다. 이를 통해 코드 재사용성을 높이고, 자료형에 따른 중복 코드를 줄일 수 있습니다.제네릭의 주요 특징:타입 매개변수: 제네릭 클래스나 메소드에서 사용할 자료형을 미리 정해놓지 않고, 필요한 시점에 구체적인 자료형을 지정할 수 있습니다. 타입 매개변수는 형태로 사용됩니다.장점: 다양한 자료형을 처리할 수 있어 재사용성이 높아지고, 자료형에 따른 중복 코드를 줄일 수 있습니다. 제네릭 클래스 예시:class SimpleGeneric { private T[] values; private int index; public SimpleGene.. 2024. 9. 30. 인터페이스(2) - 인터페이스, 다중상속 1. 인터페이스(Interface)란 무엇인가?인터페이스는 구현되지 않은 메소드, 프로퍼티, 인덱서, 이벤트로 구성된 설계의 표현입니다. 인터페이스는 구체적인 구현 없이 메소드 시그니처만 정의하며, 이 인터페이스를 구현하는 클래스가 그 메소드들을 구체적으로 구현해야 합니다.주요 특징:interface 키워드를 사용하여 선언.다중 상속이 가능함.모든 멤버는 public으로 접근 가능.인터페이스는 객체 자체를 가질 수 없으며, 구현되지 않은 기능만을 정의.인터페이스 선언 예시:interface IShape { void Draw(); double Area();} 2. 인터페이스의 구현인터페이스는 클래스를 통해 구현되며, 인터페이스에 정의된 모든 멤버를 구현해야 합니다. 만약 하나라도 구현하지 않.. 2024. 9. 30. 인터페이스(1) - 파생 클래스, 메소드 오버라이딩, 추상 클래스 1. 파생 클래스 (Derived Class)상속(Inheritance): 상속은 베이스 클래스의 모든 멤버를 파생 클래스로 전달하여, 코드의 재사용성을 높이는 기능입니다. C#에서는 단일 상속만 지원하며, 하나의 베이스 클래스로부터만 상속할 수 있습니다.파생 클래스의 정의 예시:class BaseClass { int a; void MethodA() { // ... }}class DerivedClass : BaseClass { int b; void MethodB() { // ... }}base 지정어: 베이스 클래스의 생성자나 메소드를 호출할 때 base 키워드를 사용합니다.만약 상속받은 클래스의 값을 사용하고 싶다면 base.a 이런식으로 사용하.. 2024. 9. 30. 클래스(2) - 메소드 / 연산자 오버로딩, 생성자, 인덱서, 프로퍼티 1. 메소드 중복 (Method Overloading) 메소드 시그니처(Signature): 메소드를 구분하는 정보로 메소드 이름, 매개변수 개수, 매개변수 자료형을 포함합니다. 반환형은 시그니처에 포함되지 않습니다.메소드 중복: 같은 이름의 메소드를 여러 개 정의할 수 있으며, 매개변수의 개수나 자료형이 다르면 다른 메소드로 취급됩니다. 이를 통해 같은 이름의 메소드를 다양하게 활용할 수 있습니다. 예시 코드:class MethodOverloadingApp { void SomeThing() { Console.WriteLine("SomeThing() is called."); } void SomeThing(int i) { Console.WriteLine("SomeT.. 2024. 9. 30. 클래스(1) - 클래스 선언, 생성, 필드, 메소드 1. 클래스 선언 및 객체 생성클래스는 프로그램의 기본 단위로, 필드와 메소드 등을 포함할 수 있습니다. 아래는 Fraction 클래스에 대한 예시입니다.using System;class Fraction { int numerator; // 분자 int denominator; // 분모 // 생성자 public Fraction(int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } // 덧셈 메소드 public Fraction Add(Fraction f) { int newNumerator = this.numerat.. 2024. 9. 30. 필드와 프로퍼티의 차이 필드(Field)와 프로퍼티(Property)는 C# 클래스에서 객체의 상태를 저장하고 데이터에 접근하는 방법을 제공합니다. 두 개념은 서로 관련이 있지만, 사용 방법과 목적이 다릅니다.1. 필드(Field)필드는 클래스나 구조체 내부에 선언된 변수로, 객체의 상태를 직접적으로 저장하는 공간입니다.필드는 주로 private으로 선언되어 직접 접근을 제한하며, 클래스 내부에서만 접근 가능합니다.예시:class Car { // 필드 선언 private string model; private int year;}특징:필드는 클래스 내부의 변수로, 값을 직접 저장하고 관리합니다.보통 접근 제어자(private)를 사용하여 외부에서 필드에 직접 접근하지 못하게 보호합니다.필드를 직접적으로 외부에 노.. 2024. 9. 30. 표준 입출력 표준 입출력문 (Standard Input/Output) 입력: Console.Read(), Console.ReadLine()을 사용해 입력을 받을 수 있습니다. string name = Console.ReadLine(); // 사용자로부터 입력 받음 출력: Console.Write(), Console.WriteLine()을 사용해 출력할 수 있습니다.Console.WriteLine("Hello, World!"); // 화면에 출력// 형식 지정자를 사용한 출력double pi = 3.14159265358979;Console.WriteLine("Pi: {0:F2}", pi); // 소수점 둘째 자리까지 출력 2024. 9. 30. 오버 플로우 검사문 (Checked) 오버플로 검사문 (Overflow Checking)checked 문: 오버플로를 명시적으로 검사checked { int result = int.MaxValue + 1; // 오버플로가 발생하여 예외 발생} unchecked 문: 오버플로를 검사하지 않음unchecked { int result = int.MaxValue + 1; // 오버플로가 발생해도 예외 발생하지 않음 // result: -2147483648} 2024. 9. 30. Break와 Continue break 문: 루프나 switch 문을 종료 for (int i = 0; i continue 문: 다음 반복을 시작 for (int i = 0; i 2024. 9. 30. Nullable Type 널이 가능한 형(Nullable Type)은 값 형식(Value Type)에 null 값을 허용할 수 있도록 하는 C#의 기능입니다. 기본적으로 값 형식(int, float, bool 등)은 null 값을 가질 수 없습니다. 하지만 널이 가능한 형을 사용하면 값이 없음을 나타내는 null을 할당할 수 있습니다. 1. 널이 가능한 형의 정의널이 가능한 형은 기본 값 형식 뒤에 ? 기호를 붙여 정의할 수 있습니다. 이렇게 정의된 변수는 값이 없음을 의미하는 null 값을 가질 수 있습니다.예시: int?, float?, bool? 등이 널이 가능한 형입니다.int? age = null; // 널이 가능한 int 형double? temperature = 36.5; // 값이 존재하는 경우 2. 널이 .. 2024. 9. 30. 형변환(캐스팅) 형 변환(Type Conversion)은 한 자료형의 값을 다른 자료형으로 변환하는 것을 의미합니다. C#에서 형 변환은 묵시적 형 변환(Implicit Conversion)과 명시적 형 변환(Explicit Conversion)으로 나뉩니다.1. 묵시적 형 변환 (Implicit Conversion)묵시적 형 변환은 컴파일러가 자동으로 수행하는 형 변환입니다. 주로 데이터 손실이 없는 변환, 즉 작은 크기의 자료형에서 큰 크기의 자료형으로 변환할 때 발생합니다.예시: int에서 double로 변환int myInt = 10;double myDouble = myInt; // 자동으로 형 변환Console.WriteLine(myDouble); // 출력: 10.0 2. 명시적 형 변환 (Explici.. 2024. 9. 30. 이전 1 다음