반응형

언어 자료구조 알고리즘 1251

3.헤더파일과 소스파일의 내용

헤더파일과 소스파일의 내용 다루는 내용 - 헤더 파일에 포함되는 내용 - 소스 파일에 포함되는 내용 - 책에서 프로젝트 구성 방법과 철학 이번 항목에서는 간단한 학생 관리 프로그램을 예를 들면서 헤더파일과 소스파일에 어떠한 내용이 들어갈 수 있는지에 대해 살펴보도록 하자. 1. ehlib - 일반적으로 사용할 수 있는 자원 정의 ehlib.h ehlib.h 1~2 typedef 형식명 정의 4,40 #ifdef, #ifndef,#else,#endif 상수명 정의(미정의)에 따라 내부 컴파일에 포함할 지 결정 7~12 #include 해당 헤더 파일의 내용을 포함시킴 14 #pragma 옵션에 따른 다양한 매크로 #pragma warning(disable:xx) XX번에 해당하는 경고 메시지를 생략해 달라..

2. 프로그램 구성 요소

프로그램 구성 요소 다루는 내용 - C언어와 프로그래밍 - C언어 구성 요소 - 이 책속의 프로젝트 파일구성 1. C언어와 프로그래밍 컴퓨터 프로그램은 컴퓨터로 하여금 특정 목적을 수행할 수 있는 일련의 이진 코드를 말한다. 이러한 컴퓨터 프로그램을 작성하기 위해서 목적에 따라 많은 언어들과 이들을 이진 코드로 만들어 지는 컴파일러들이 있다. 그 중에 C언어는 Unix라는 O/S를 만드는 과정에 탄생한 언어답게 시스템 프로그래밍에 많이 사용되고 있다. 또한, C언어의 문법은 30~40여가지의 예약어와 30~40여가지의 연산자로 구성된 문법이 간결하다. 하지만, 간결한 문법을 적용해 프로그래밍을 하는데에는 창조적인 고통을 따르게 한다. 하지만 전산 역사가 발전하면서 프로그래밍 과정에서 공통적인 요소들이 자..

1.프로젝트 생성

프로젝트 생성 다루는 내용 - visual studio.net 2008 사용법 - visual studio.net 2008에서 C 콘솔 응용 프로그램 작성법 visual studio.net 2008의 단축키 ms사이트에서 받기 1. 프로젝트를 생성한다.(Ctrl + Shift +N) 2. 새 프로젝트 창에서 프로젝트 형태는 C++언어를 선택하고 템플릿으로는 Win32 콘솔 응용 프로그램을 선택한다. 프로젝트 형태가 C++언어일까? visual studio 에서 C와 C++ 컴파일러가 하나로 되어 있다. 프로젝트의 형태에서 C프로젝트 유형은 없지만 프로젝트에 소스 파일을 추가할 때 파일명을 .c로 생성하면 C문법에 맞게 컴파일러가 동작한다. 프로젝트 명 정할 때 참고사항 - 프로젝트 위치는 본인이 계획하여..

17. 인터페이스(Interface)

인터페이스(Interface) 다루는 내용 - 인터페이스 - 명시적 구현 - 묵시적 구현 인터페이스는 구현에 대한 약속으로 다음과 같은 특징을 지니고 있다. - 인터페이스에는 메소드, 속성, 이벤트, 인덱스를 포함할 수 있다. - 인터페이스에는 시그니쳐만 약속만 되어 있고 구현은 할 수 없다. - 인터페이스 형식의 직접적인 인스턴스를 생성할 수 없다. - 클래스와 구조체, 인터페이스에서 다중 인터페이스를 상속(구현 약속)을 할 수 있다. - 상속(구현 약속)을 한 클래스와 구조체에서는 반드시 인터페이스에 명시된 멤버들에 대한 구현을 하여야 한다. 이와 같이 인터페이스는 추상클래스와 비슷한 측면을 많이 갖고 있다. 이러한 특징으로 인해 인터페이스와 인터페이스는 구현되지 않은 추상이라고 일컫는다. Look ..

16. 다형성

다형성 다루는 내용 - 다형성 - 재정의 - 무효화 이번에는 OOP의 세 기둥중에 세번째 기둥이라 할 수 있는 다형성에 대해 살펴보기로 하자. 다형성은 형식에 대한 부분과 행위에 대한 부분으로 나눌 수가 있다. 먼저, 형식에 대한 다형성은 기반 클래스 형식의 변수 혹은 기반 클래스 형식을 원소로 하는 컬렉션과 배열에서 기반 클래스 형식을 통한 접근을 하는 것을 말한다. 또한, 행위에 대한 다형성은 기반 클래스에서 정의한 행위를 파생 클래스에서 재정의를 함으로써 기반 클래스 형식의 변수로 접근을 하더라도 실제 인스턴스의 형식에 맞는 행위를 할 수 있도록 하는 것을 말한다. (여기서 행위를 메소드로 생각해도 무리가 없다.) 이를 위해 기반 클래스에서는 virtual 키워드를 통해 특정 행위의 경우 파생 클래..

15. 상속

상속 다루는 내용 - 상속 - 인터페이스 다중 상속(구현 약속) - 액세스 한정자 - sealed OOP의 세 기둥이라 하면 캡슐화와 상속, 다형성을 얘기를 한다. 지금까지 다룬 내용들은 모두 캡슐화에 관련된 내용으로 어떻게 클래스를 정의를 할 것인가에 대해서 살펴보았다. 상속은 정의되어 있는 클래스를 기반으로 재 사용, 수정 및 확대를 통해 파생된 클래스를 정의할 수 있게 해 준다. 경우에 따라서는 자신을 기반으로 파생하는 것을 봉인할 수도 있다. C++언어에서는 다중 기반 클래스로부터 파생을 할 수 있는 다중 상속을 제공해 주었는데 C#에서는 기반이 되는 클래스는 많아야 하나이다. 대신 인터페이스에 대해 다중 상속(구현 약속)을 지원을 해 주고 있다. Look & Feel & Think 위에 Man이..

14.정적 클래스 및 정적 멤버

정적 클래스 및 정적 멤버 다루는 내용 - 정적 클래스 - 정적 멤버 - 비 정적 클래스의 private 생성자 C#과 Java의 경우에는 전역 스코프가 없다라는 것 때문에 C와 C++에서 전역 스코프에 의존했던 이들에게는 프로그래밍 하기 불편하다는 투정을 받을 수도 있다. 물론, 동적인 형태로 프로그래밍을 해 온 이라면 크게 문제가 되지 않겠지만 말이다. 그렇지만, C#과 Java에서도 static 클래스를 통해 전역 스코프와 동일한 효과를 가져올 수 있게 해 주고 있다. class명 앞에 static 키워드가 붙으면 인스턴스는 생성할 수 없는 정적 클래스로 정의가 된다. 이들은 static 멤버들로만 구성되어 있고 파생을 할 수 없는 봉인된(sealed) 클래스가 된다. 그리고, public한 정적 ..

13.메소드

메소드(Method) 다루는 내용 - ref - out - params 메소드는 특정 기능을 수행하는 코드의 집합이다. 메소드는 액세스 한정자와 반환값, 메소드 명, 매개변수로 구성된 시그니쳐 부분과 수행해야 할 코드 블록으로 구성된다. class Example { public int Add(int a,int b) { return a+b; } } 액세스 한정자에 대해서는 별도의 항목에서 다루기로 하고 매개변수전달에 대해서 먼저 살펴보자. C#에서는 참조로 매개변수를 전달하기 위해 ref와 out키워드를 제공하고 있다. out은 입력된 값은 해당 메소드를 수행하는데 아무런 의미가 없고 호출하는 곳에서 결과값을 원할 때 사용이 된다. 즉, return으로 반환받는 개수가 한 개로 한정된 것을 out을 통해 ..

12. 속성(Property)

속성(Property) 다루는 내용 - 속성 - 액세스 수준이 서로 다른 속성 - 접근자 내부 구현을 생략하는 간단한 속성 속성은 필드 값을 읽고 쓰거나 계산하기 위한 메커니즘을 제공되는 멤버이다. 이를 통해 데이터의 안정성과 유연성을 높일 수 있으며 사용자로 하여금 멤버처럼 쉽게 액세스를 가능하게 해 준다. Look & Feel & Think AboutProperty 클래스의 예를 보면 멤버 필드로 iq를 갖고 있고 상수 max_iq와 min_iq가 정의되어 있다. 그리고 public 메소드로 Study가 있는데 여기에서 속성을 이용하여 값을 읽기 및 변경을 하고 있다. 이와 같은 구조를 통해 특정 멤버 필드에 직접 접근하여 값을 변경하지 않음으로 인해 값의 신뢰성을 높일 수가 있다. Study에서 이..

11.Class

Class 다루는 내용 - 클래스와 구조체 - 캡슐화 할 수 있는 멤버 구조체와 클래스는 하나의 논리 단위에 속하는 일련의 데이터와 동작을 캡슐화 하는 형식이다. 데이터는 멤버 속성으로 표현이 되고 동작은 멤버 메소드 및 이벤트 등으로 표현을 할 수가 있다. 구조체의 경우는 이전 항목에서 설명한 바와 같이 스택에 인라인으로 할당되며 값 형식으로 선언된 범위를 지나게 되면 스택과 함께 소멸이 된다. 이에 MSDN에서는 생성 후 수정하지 않을 데이터를 주로 표현하는 작은 데이터 구조에 사용할 것을 권하고 있다. 이에 비해 클래스는 참조 형식으로 관리화 힙에 할당이 되어 참조되는 범위가 벗어날 때까지 메모리에 유지되는 것을 보장받으며 모든 참조가 범위를 벗어나면 CLR에 의해 가비지 수집 대상으로 표시된다. ..

반응형