1월 6, 2015의 게시물 표시

C# Interface란 무엇인가?

이미지
C# Interface란 무엇인가? 어떤사람들은 객체지향 프로그래밍의 꽂은 인터페이스라고하고   중수에서 고수로 넘어가려면 이것을 잘 다뤄야 된다고 이야기를 한다죠.. 저는 뭐 아직 클래스가 뭔지도 제대로 파익이 안되어서 먼 미래의 이야기같네요 하지만 모르고 넘어갈 수는 없기 때문에  C#에서 말하는 인터페이스를 알아 보고자합니다 interface [이름] {     메소드..     이벤트..     인텍서..     프로퍼티.. } 이렇게 나와있습니다.   또한 객체를 생성할 수 없다고 합니다;;  그럼 어디다 어떻게 쓰라는 건지.. 이것은 인터 페이스를 참조하는 파생클래스를 만들어서 만들어진 클래스로부터 객체를 생성해서 사용은 가능합니다.  뭐.. 상속해서 사용해야하기때문에 이것안에 는 public 으로 선언해줘야 겠죠.. 이런것은 납득이 갑니다. 이거 사용 할려고 클래스를 만들어서 사용 해야 한다니 정말 번거롭네요.. 이게 대체 뭐라고.. interface { .. }     →  new 객체생성 (x) intefrace Inf_nm {...}  →  class Cls_nm:  Inf_nm { … } →  Cls_nm inf = new Cls_nm( ...)    (O) Inf_nm inf_nm = new Cls_nm() (O)    ← 지난 시간에 봤었던 것 같네요.. 기반클래스와 파생클래스의 관계처럼..  클래스가 인터 페이스로 상속을 받았으니  이런 식으로 형변환도 가능 하다라는…. 전 아직도 잘 모르겠...

C#의 구조체(Structure) 를 알아보자

이미지
C#의 구조체를 알아보겠습니다. 이번에 알아보려고 하는것은  C#에서의 구조체입니다.  프로그래밍언어를 하면서 이것을 사용해 보셨을것 입니다. 저도 자주 사용은 하지 않지만.. 델파이에서 TreeView의 노드의 항목마다의 key값과 안 보이는 데이터들을 마땅히 담을 만한것이 없어서 한번 사용해보긴 했지만.. 잘 사용을 안 하는 것이다 보니.. 잘 안써지게되더라고요 C#에서도 당연히 Structure 라는 것이 있습니다.  클래스와 비슷하죠.. 사촌지간 즘될것입니다.     비슷하다면… 클래스를 놔두고 이것을 사용해야 하는 이유가 있을까요? 분명.. 클래스와 다른 장점이 있기 때문에 이런 구문이 존재하겠죠.. 일단 차이점을 알아보면.. 가장 큰 차이점은..    형식이 틀리다는 것입니다.   클래스는 참조 형식에 해당이 되겠고 이것은  값 형식에 해당이 됩니다.  [뇌자극]책의 초반에 읽었던 내용이 생각이 나는데요..     값 형식의경우 스택에 데이터를 보관하는 구조이며.. 구문이 끝나면 메모리에서 해제가 되기때문에 가비지컬렉터가 필요 없는 것이 특징이고..   참조 형식의 경우 힙영역에 데이터를 넣어 놓고.. 스택에 힙 영역의 번지를 가리키는 주소를 넣어 놓은 구조로.. 바로 메모리 해제가 되지 않는다고 하였거든요.. 가장 큰 특징이라고 하겠네요..   한눈에 보기 편하도록 정리를 해 보겠습니다. 구조체(Structure) 클래스(class) 생성시 필요한 키워드 struct 이름 { … } class 이름 { … } 형식 값 형식 참조형식 생성시필요한구문 선언으로 생성 가능.. new 연산자로 생성해야함 상속 여부 상속 System.Object 형식을상속하는 Syste...

C#에서의 오버라이딩과 다형성 ( Overriding and polymorphism )

이미지
이번에 알아보려고 하는 것은 C#의 Overriding(오버라이딩)과 (polymorphism)다형성입니다. 학교 다닐때 배웠던 내용이 언 듯 기억이 나기도 하고 가물가물하네요.. 오버로딩(Overloading)과 오버라이딩(Overriding)이 라는 말이 햇갈리네요.. 정리하자면.. 오버로딩은 메소드에서 지난번에 포스팅했듯이.. 같은 이름으로 매개변수의 갯수나 타입 등으로 전혀 다른 마치 동명이인과 같은 일을 하는 것을 만들 수 있 다는 것이라고 했었죠… Overriding은 클래스의 상속관계에서 사용하는 개념으로 전혀 다른 의미로 재정의 한다 라는 뜻입니다. 이번 시간에 알아보고자 하는 것이고요.. 다형성이라는 개념과 같이 짝을 이루어서 다니죠..  다형성은.. 객체가 여러가지 형태를 가질 수 있다는 말입니다..  줄여서 표현한 것 같네요.. 객체가 다형성을 갖기 위해서 오버라이딩을 이용 한다는 것인데요..   객체는 재정의을 해서 다양한 형태를 갖을 수 있다… 라고 설명을 할 수 있겠습니다. 근데 말이 너무 어렵네요..;; 아래 표를 본다면.. MainBase라는 클래스가있는데 virtual이라는 약속된 문자를 사용하여  Overriding할 수 있게 하였습니다. 그리고  바로 아래에 보면.. Test1 : MainBase 이렇게 지정하여 해당클래스가 : [클론]뒤에 나오는 클래스를 상속한다고 지정하였으며..  해당클래스가 포함하는 메소드의 앞부분에 override 라는 키워드를 사용하여 오버라이딩한다는것을 표현했습니다. 제가 이해한것을 한마디로 표현하자면 재정의와 다형성이라는 것은 기존의 클래스로부터 물려받은 자료에 내가 필요한 내용을 덧붙여 새로운 성격의  메소드를 만드는 것이라고 하겠습니다. 이것은... virtual로 상속받은 메소드를 덧붙여 내스타일로 메소드를 재정의 하는것이 ...

C#에서 클래스( Class ) 란 무엇인가?

이미지
안녕하세요 C# 프로그램의 클래스에 대해 알아보고자 합니다. 그동안에는 크게 어려운 내용이 없어서 그냥 술술 책을 넘겨왔었는데.. 객체 지향프로그램 그것도   java나  C#같은 언어에서 클래스를 잘 이해하지 못한다면 프로그램을 아예 짤 수 없을 지경이 되는 것이죠.. 저는 그동안에 델파이를 갖고 개발을 해왔었는데 델파이도 물론 객체 지향 언어는 맞습니다. 하지만 그런 특징적인 것들을 잘 모른 체 그동안 수년간 개발을 해 왔습니다.  ㅜㅜ 이번을 기회로 해서 정말 열심히 기초를 다지는 기회가 되었으면 좋겠습니다. 진행에 앞서.. 용어가 너무 햇 갈려서 정리를 해야 할 것 같습니다. 말을 하나로 통일을 하던가 해야지 햇갈리기만 하네요..ㅜㅜ 용어를 완벽하게 이해 못하고 진행하면.. 객체 지향 프로그램은 소귀에 경읽기 될 것 같습니다. (혹시 라도 잘못된 것이 있다면 지적해주세요.. 뇌자극C#책을 기반으로 나름대로 정리하긴 했습니다만...) 학교다닐때 붕어빵과 붕어빵틀이라는 것을 비유를 해서 배웠던 기억이 나는데요.. 뇌자극 C# 5.0에서도 역시나 아니나 다를까 같은 표현을 쓰셨네요.. 클래스 = 붕어빵틀 객체    = 붕어빵 (인스턴스) 형 틀을 이용해서 찍어 내는 것이죠.. 그래서 효율 적인 프로그래밍을 하는 것이 가능합니다. 그래서.. 클래스를 하나 생성해 놓고.. 이것을 해당하는 클래스 타입으로 선언해서 쓰시면 됩니다. 찍어서 쓰는 것이죠..(객체를 생성한다고 합니다...) class Apple {   public string Color;   public string Size; } ...... App a1 = new Apple();        --> ...