추상클래스와 추상매서드 추상화 추상클래스와 추상매서드에 대해 알아보기 전에 우리는 추상화란 무엇인가에 대한 답을 생각해보아야한다. 추상의 단어 뜻은 네이버 사전에 다음과 같이 나와있다. 예를 들면, 인간의 얼굴만을 표상(表象)으로서 분리하는 것은 대상과 동차원상(同次元上)의 절단(切斷)이며 본래의 추상이라고는 할 수 없다. 빨간 넥타이로부터 ‘빨강’ 혹은 ‘형(形)’만을 추출(抽出)하는 것, 또 빨간 우체통, 잘 익은 토마토 등에서 공통적인 ‘빨강’을 골라내고, 적(赤) ·청(靑) ·황(黃)으로부터 ‘색(色)’을 빼내는 것은 추상이다. 추상은 불필요한 계기를 버리는 사상(捨象)을 표리일체(表裏一體)로 동반한다. 추상에는 보편성 ·일반성의 정도가 있고, 고도(高度)의 추상은 언어작용과 밀접히 관계하여 보통..
오버라이드 & base 오버라이드란? 사전에서 오버라이드를 찾아보면 덮어쓰기!! 즉 기존 것의 데이터를 새로운 데이터로 덮어쓰는 개념입니다. 부모 클래스 . . 상속관계 . 자식 클래스 위와 같은 상속관계의 경우 부모클래스의 변수와 함수를 자식이 재정의 하여 사용할 수 있다. 이런 경우 자식클래스에서 부모클래스를 오버라이드 한다고 한다. 그러면 c#에서는 과연 오버라이드를 어떤 방식으로 할 것인가! 변수 : public new int x = 0; 함수 : public new void TEST(int a) 이와 같이 new라는 키워드를 사용하면 기존 변수와 함수를 오버라이드 하게 된다. ex) class Base { public int x = 10 public void SetData(int i) { } }..
열거형 열거형을 알기 위해서는 상수의 개념에 대해 알아야한다. 우리는 학교를 다니면서 상수와 변수의 개념을 배웠다. 상수란 변하지 않는 수를 의미하며 변수는 값을 바꿀 수 있는 것을 의미한다. 여기서 열거형은 상수의 집합을 의미한다. 일반적으로 우리가 상수를 선언할때 상수 하나의 고유한 값을 의미할 경우도 있지만 어느 경우에는 상수 집합이 사용되기도 한다. 이럴때 우리는 열거형을 사용한다. 예를들어 우리가 색을 표현할때 3가지 색에 대해 값을 고정해둔다고 생각해보자. Red = 1 Yellow = 2 Blue = 3 이럴 경우 우리는 열거형으로 색이라는 그룹에 위의 3값을 상수로 넣을수 있는 것이다. 열거형의 형식은 다음과 같다. enum 열거형이름 {열거형 리스트}; 그럼 위의 예를 열거형으로 표현해보..
구조체(Struct) 구조체는 C나 자바에 나오는 구조체와 동일하다. 구조체를 사용하는 이유는 무엇일까? 나는 일종의 그룹핑이라고 생각한다. 우리는 일례로 클래스에대해 알아볼때 의미의 그룹핑으로 클래스를 나눈다는 것을 배웠다. 구조체는 클래스와 동일하다. 다만 복잡하게 사용되지 않는 변수들의 집합에 사용하는 것이 구조체 이다. 만일 몇가지의 변수만을 사용하는 경우 클래스를 사용하면 자원의 낭비라고 할 수 있다. C#에서는 작은 데이터(몇가지의 변수)를 처리할 때 사용되어진다. 그럼 C#에서의 구조체 구문을 알아보자. [public] struct [구조체명] { 생성자 멤버변수 멤버메소드 } 구문만을 살펴보면 클래스와 동일하다고 할 수 있다. 다만 위에 설명한대로 복잡한 로직이 아닌 몇가지의 간단한 로직을..
this 1.자신의 멤버 자신의 멤버 변수의 값을 설정할때 사용 예를 들어 public Data(int A, int B) { this.A = A; this.B = B; } 와 같이 사용하면 Data라는 멤버함수를 포함하는 클래스를 호출하여 사용할때 클래스 자체의 멤버 변수에 Data의 매개변수로 들어가있는 A, B 변수의 값이 저장되어 진다. 2. 클래스 반환 클래스 반환의 의미는 만일 어떤 함수의 반환값이 클래스인 경우 해당 클래스를 반환하는데 현재 선언된 객체를 반환할 수 있다. 예를 들어 DataClass라는 클래스를 반환하는 Data라는 함수를 예를 들자 public DataClass Data() { return this; } 이런 경우Data는 DataClass의 현재 객체를 반환하게 된다. 3..
using 문 1. 지시자 네임스페이스 지정 즉, C의 include 자바의 import와 같은 개념이다. 물론 Visual basic에도 동일한 개념이 있다. 미리 어떤 구문을 선언하여 해당 구문을 반복 사용하지 않기 위함이다. 예를 들어 우리가 자주 쓰는 다음 문구를 보자. Console.WriteLine 의 경우 원래는 System 밑의 Console이라는 클래스의 함수를 의미한다. 하지만 우리가 처음에 using System을 사용하여 앞으로 System을 기본으로 사용하겠다는 것을 정의하였기 때문에 생략한 것이다. 만일 using 을 사용하지 않으면 다음과 같이 될 것이다. System.Console.WriteLine이 될 것이다. 2. 명령문 명령문은 다음과 같은 구조로 되어있다. using(..
내포 클래스(Nested Class) class A { class B { class C { } } } 이런 경우 위의 것을 객체화 시키면 A a = new A(); A.B b = new A.B(); A.B.C c = new A.B.C(); 이렇게 클래스 안의 클래스를 객체화 시킬 수 있다.
정적 변수 및 메서드(static) 정적이란 메모리 힙 영역에 데이터가 저장된다 라고 책에는 나와있다. 그렇다면 메모리 힙 영역은 무엇인가? 메모리 힙에 대해 알아보자. 프로그램을 사용할 수 있는 자유 메모리. 프로그램 실행 시에 함수로 보내는 데이터 등을 일시적으로 보관해 두는 소량의 메모리와 필요시 언제나 사용할 수 있는 대량의 메모리가 있다. 이때, 소량의 메모리를 ‘스택’이라 하고 대량의 메모리를 ‘힙’이라 한다. 이 ‘힙’이 없어지면 메모리 부족으로 ‘이상 종료’하게 된다.[출처 : 네이버 백과사전] 위의 정의를 살펴보자. 스택 - 소량의 메모리 힙 - 대량의 메모리 라고 간단하게 설명되어 있다. 딴 글들을 읽어보고 이해한 내용은 다음과 같다. 즉 자동으로 할당해주는 변수의 경우(즉 컴파일러가 ..
접근제한자 public - 어디서나 사용이 가능함 private - private 를 포함한 클래스 내에서만 접근 가능 protected - 기본클래스와 파생 클래스에서만 접근가능 (즉 상속받은 클래스와 본인 클래스에서만 가능) internal - 동일 어셈블리 내에서 접근 가능(즉 동일 프로그램 내에서만 사용가능) protected internal - 동일 프로그램 내에서 혹은 파생 클래스에서 클래스 멤버 사용 가능 1번 프로그램 class class1 { public a; private b; protected c; internal d; } class class2 : class1 { // 설정1 } 2번 프로그램 class class3 { //설정2 } 위와 같은 경우 설정1에서는 a,c,d가 접근 가..
1. Class란 무엇인가~? 객체지향언어를 공부하면 많이 접하는 두개의 용어가 있다. Class와 객체가 그것이다. 그럼 Class는 무엇인가?~ 그것에 대해 알아보자. - Class : 책에는 객체의 개념을 담고 있는 최소 단위라고 나와있다. 이 말이 무엇인가? 고민고민을 한 후 내가 내린 결론은 의미의 범위라고 결론지었다. 의미의 범위란 단어는 무엇인가~ 즉 우리 일상생활의 의미를 가지는 단어들을 범위짓는다 라는 것이다. 예를 들어보자 우리가 사람이라는 클래스가 필요해서 만들수 있지만 어떤 프로그램에서는 그것 보다 포괄적인 의미인 동물이라는 클래스가 필요할 수도 있다. 즉 어떤 의미를 발견하고 그것에 대해 범위를 지어 단어를 추출하면 그것이 Class인 것이다. - 객체 : 객체는 간단한게 Clas..