컴퓨터프로그래밍 128

C# - 확장클래스, 분할메소드, 중첩클래스

확장메소드(Extension Method) 클래스의 기능을 확장시켜주는 메소드입니다 쉽게 말해서 이걸 사용하면 굳이 불러오거나 할 필요없이 곧바로 사용할 수 있습니다. 사용방법)namespace 네임스페이스명{ public static class 클래스명 { public static 반환형식 메소드명(this 확장대상형식 식별자, 매개변수..) { .. } }} 사용방법) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Extension; namespace Extension { public static class ExtensionMeth..

C# - 추상클래스

추상 클래스 추상클래스는 클래스의 설계도라고 인식할 수 있다. a팀장이 부모님이 급히 입원하셔서 b사원에게 자동차 에어백을 터트리는 메소드를 제작하라고 시켰다. b는 열심히 노력해서 아래와 같이 구현했다.airback(int 크기, int 색상){ ... } a팀장은 상황이 진정되자 회사에 돌아와서 b에게 작업한걸 요구했고. a는 깊은 빡침을 느꼇다. a가 원하는건 아래와 같은 작업이었기 때문이다.airback(int 터지는시점, int 에어백의 압력){ ... } 이런 상황을 막기위해서 추상클래스가 필요하게 되었다.※ 올래는 클래스로 설명해야 하지만 글이 늘어져서 메소드를 어거지로 끼워넣음. 인터페이스도같은 이유에서 존재하지만 인터페이스는 다중 상속적인 측면에서 단일 상속만을 할 수 있다는 차이점이 있..

C# - 메소드 메소드 재정의(override), 숨기기

메소드 재정의(override) ※ override와 overload를 햇갈리지 말자. 메소드 재정의(override)는 상속 관계의 클래스 사이에서 부모클래스의 메소드를 자식클래스가 부모의 메소드를 받아서 다른 형태로 바꾸어 사용하는 것을 말한다. 사용방법은 아래와 같다.//부모클래스가 애래와 같이 있다면class parent{ public virtual void Name() { Console.WriteLine("부모의 메소드"); }} // 자식클래스에서 상속받아 메소드를 재정의해서 사용class Child : parent{ public override void Name() { Console.WriteLine("자식의 메소드"); }} 예제) using System; using System.Colle..

C# - 상속

상속 상속 : 부모에게서 재산을 물려받는것 succeeded to the throne. father -ㅁ-... 다른 클래스의 메소드 변수를 그대로 가지고오는 것을 말합니다. 백문이불여일견~! 우선 사용하는 방법은 class 기반(부모) 클래스명{} class 파생(자식) 클래스명 : 기반(부모) 클래스명 { // } 예제) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; class Base { protected string var1 = "protected 변수"; protected internal string var2 = "protected in..

생성자와 소멸자

생성자 생성자는 객체를 생성할때 동작(호출)하는 메소드 입니다. 사용방법은 아래와 같습니다. 클래스 클래스명{ 한정자 클래스명(매개변수){ // }} 위를 보면 알 수 있듯이 생성자는 클래스와 이름과 같고, 메소드의 형태를 유지하고 있습니다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Car { int maxSpeed=0; int lowSpeed=0; internal Car(int max, int low) { maxSpeed = max; lowSpeed = low; } int..

접근제한자와 this

접근제한자. 접근 제한자설명 public모든 곳에서 해당 멤버로 접근이 가능합니다.internal같은 어셈블리에서만 public으로 접근이 가능합니다. protected internal같은 어셈블리에서만 protected으로 접근이 가능합니다. protected클래스 외부에서 접근할 수 없으나 파생 클래스에서는 접근이 가능합니다.private클래스 내부에서만 접근이 가능합니다. 접근 제한자클래스내부서브(파생)클래스외부클래스다른파일프로젝트public○○○○○internal○○○○ protected internal○○○ protected○○ private○ 접근제한자 어렵게 생각할필요 없습니다.private 내방(클래스) 침입하면 안됨! 하고 문을 닫는거랑 똑같습니다. 예를들어private ClassA{ p..

C# - 클래스, 객체지향의 개념잡기

객체의 이해 객체는 사람, 개, 비행기, 바다, 공기 등등 세상의 모든것을 지칭할 수 있습니다. 객체의 특성으로는 상태, 행동, 독자성으로 정리가 가능합니다. 저번 메소드 포스팅에서 아래의 내용을 다뤘습니다. 그래도 아래를 이해하면 객체지향에 접근하기 쉽기 때문에 다시한번 넣어봤습니다. 사실은 양늘릴려고 ㅋㅋㅋ C#을 시작하고 나서 프로그램을 접할때 인터페이스? 클래스? 메소드? 도대체 어떤 차이점이 있는거지? 라고 고민한 경험이 있었습니다. 갑자기 나온 용어에 어렵게 생각하지 않으셔도됩니다. 인터페이스 : 자동차클래스 : 소형차, 중형차, 상용차(트럭)메소드 : 시동걸다. 가속한다. 멈추다. 후진한다. 인터페이스안에 클래스가 포함되고 클래스안에 메소드가 포함됩니다. ※ C# 소스와 인터페이스는 같지 않..

C# - 메소드 오버로딩

메소드 오버로딩 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void test(){} static void test(int i) { } static void test(int i, float j) { } static void test(String[] args) { } static void Main(string[] args) { test(1,3); } } } 클래스 하나에 같은 이름의 메소드가 여러개 사용되었을 때 C#은 어떻게 처리할가?물론 같은이름..

C#_메소드_인자(변수)전달하기

Call by Value using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { public void Increase(int i) { i++; Console.WriteLine("increase 메소드 안:{0}", var); return; } static void Main(string[] args) { Program pg = new Program(); // 이건 나중에~ int i=10; Console.WriteLine("메소드호출전:{0}", i); pg.Increas..

C# 변수의 범위

변수의 범위 변수에도 유통기한이 있습니다.클래스가 사라지면 없어지는 변수메소드가 사라지면 없어지는 변수 우리는 이러한 변수의 유통기한을 지역변수와 멤버변수로 지정할 수 있습니다. 결과) 위 결과에서 지역변수는 메소드내에서 사용되고 메소드를 벗어나면 사라지는것을 알 수 있습니다.멤버변수는 클래스 내에서라면 어디서든 사용할 수 있음을 보여주고 있죠.인스턴트 변수는 다음 포스팅에서 클래스와 함께 정리하겠습니다. 더 알아보기 지역 변수지역변수란 메소드 내에서 선언된 변수를 의미한다.특징은 아래와 같습니다.ㆍ메소드가 실행될 때 변수를 저장하기 위한 메모리가 생성된다.ㆍ선언된 메소드 내부에서만 사용할 수 있습니다.ㆍ메소드의 실행이 종료될 때 메모리가 해제됩니다.ㆍ변수를 선언 후, 초기 값을 부여하는 초기화가 꼭 필..