본문 바로가기

:: 프로그래밍 ::/수업 내용

(14)
2024.03.12 partial, 확장 메소드, this, IEnumerable, Stack Class, Queue Class partial 한 클래스 내에 분할해서 작업을 해야할 경우, partial 을 사용한다.// 전투시스템partial class Player{}// 아이템partial class Player{} 협업할 때 같은 클래스 내에 구현해야 할 경우 해당 내용을 사용하는 것이 좋다.  확장 메소드 확장 메소드를 사용할 때 무조건 정적(static) 메소드를 사용할 것. 해당 클래스도 정적이어야 할 것. 첫번째 매개변수에 this 를 붙이고 다음은 자료형, 이름을 쓴다.static class A{ public static int WordCount(this string str) { return str.Split(' ').Length; }}  this() 자기 자신의 생성자 생성자에서만 사용..
2024.03.11 예외처리, 이벤트, 델리게이트, 델리게이트 체인 예외처리 프로그램 도중에 발생하는 의도하지 않은 상황을 처리하는 방법이다.try ~catch를 이용하여 해당 문제에 대한 예외처리를 해주는 것이다. try는 예외가 일어나지 않을 경우 실행되어야 할 코드를 작성하는 공간이고,catch는 예외가 발생하였을 때, 처리할 코드를 작성하는 공간이다.만일, try에서 여러종류의 예외를 던질 가능성이 있다면 catch도 여러개가 있어야 한다.try {}catch (Exception e){}  이벤트 일련의 사건이 발생했다는 사실을 다른 객체에게  전달 델리게이트 선언 :  클래스 내에서 선언한 델리게이트 인스턴스를 event 한정자로 선언 이벤트 핸들러 작성 : 이벤트 핸들러는 선언한 델리게이트와 일치하면 OK                    ..
2024.03.08 제네릭 메소드, 제네릭 클래스, 형식매개 변수 제약(제네릭) Generic Method  Generic은 '일반적인'이란 뜻을 가지고 있고,일반적인 매개변수를 메소드에 사용을 하고 싶을 경우, 제네릭 메소드를 선언하여 작성한다. public static void SwapValue(ref T a, ref T b){ T temp = a; a = b; b = temp;}    Generic Class 클래스에 필요한 자료형을 일반화한다.클래스 인스턴스를 생성할 때, 자료형을 지정해서 사용한다.class SafeArray{ private T[] array; //배열의 크기를 인자로 받아서 초기화한다. public SafeArray(int size) { array = new T[size]; } public voi..
2024.03.07 C# default, params, in, out, ref, String class, Array class Comment )저번주에 프로젝트를 진행하느라, 블로그 정리를 할 여력이 없었습니다.프로젝트 종료 기점인 25일 부터 다시 정리를 진행 중에 있습니다. 아무쪼록 성실한 하루가 되도록...  default 매개변수 함수의 매개변수가 초기값을 가지고 있으면 표출할 때 생략하는 것을 허용한다.  static void AddStudent(string name, string home, int age = 10) { }  params 매개변수의 개수가 정해지지 않은 경우, 무궁무진하게 사용할 수 있다.동적으로 크기가 변하는 매개변수를 전달할 때(ex. 배열 형태로 전달할 때)static int Sum(params int[] values){ int sum = 0; foreach (int value in va..
2024.03.06 C#) 구조체/클래스 차이, OOP, 객체지향 설계 5대원칙, 다형성, 추상화, 인터페이스 구조체와 클래스의 차이(C#) 이전 C++에서 구조체와 클래스의 차이는 디폴트로 구성 되어있는 접근자(public/private)의 차이였다.(24.02.27 참조)그렇다면 C#에서는 어떤 식으로 차이가 날까? 클래스가 값을 다루는 방식을 보면서 접근하면 이해하기 편할 것이다.class RefType{ public int value; public RefType(int v) { value = v; }}static void Main(string[] args){ RefType refType1 = new RefType(10); RefType refType2 = refType1; refType2.value = 20; Console.WriteLine(refType1.value); ..
2024.03.05 C#) summary, 얕은복사/깊은복사, 정적변수선언, 정보은닉, 프로퍼티, 상속 summary summary(///)는 해당 함수를 사용할 때, 함수 상단에 사용하여 해당 함수의 내용을 기술할 수 있다./// /// 두수를 더해서 결과값을 리턴하는 함수이다./// /// 첫번째 매개변수/// 두번째 매개변수/// x + ystatic int Sum(int x, int y){ int result = x + y; return result;} 해당 함수의 사용 방식, 필요한 매개변수,리턴 값 등 다양한 정보를 넣어서 다른 개발자들과 공유할 때 유용하게 사용할 수 있다.  얕은 복사/깊은 복사 class로 인스턴스를 생성할 시에는 주의가 필요하다.바로 '얕은 복사'에 관한 점인데 인스턴스를 생성한 이후, 해당 인스턴스(A)를 복사하야 새로 인스턴스(B)를 생성하는 경우 새로 만든..
2024.03.04 C#) 생성자 생성자 생성자(constructor)는 클래스가 인스턴스를 생성할 때, 자동으로 실행을 시키는 함수이다.생성자는 클래스명과 같은 이름으로 만들고, 반환 형식을 사용할 수 없다. 접근제한자(없으면 디폴트 가능) + 클래스명으로 구성해주면 되고,생성자는 기본적으로 new를 통해 객체를 할당하는 시점에서 자동으로 호출한다. 만일, 따로 정의하지 않는다면 컴파일러가 빈 생성자를 해당 클래스에 알아서 생성해준다.  class Person { public Person() { Console.WriteLine("생성자 호출"); } }
2024.02.29 C++) 템플릿 템플릿 코딩하다 보면 써야할 함수 내용은 같은데, 파라미터와 반환타입을 다르게 해주어야 해서 같은 내용을 오버로딩을 하는 경우가 생길 것이다. 이러한 상황을 피하기 위해 템플릿(template)이라는 사용할 것이다. int GetMax(int x, int y) { if (x > y) return x; else return y;}double GetMax(double x, double y) { if (x > y) return x; else return y;}  이런 식으로 특정한 상황의 오버로딩이 생긴다면template T GetMax(T x, T y) { if (x > y) return x; else return y;}  이러한 식으로 template을 사용하는 것이다. typename T는 하나의 타입에..