본문 바로가기

전체 글53

[TCP/IP 프로그래밍] 제1강 : TCP/IP 프로그래밍이란? 보통 TCP/IP 프로그래밍을 소켓 프로그래밍이라고도 부릅니다.C언어 기반의 통신이 가능한 프로그램을 제작하는거구요~ 저도 공부하면서 포스팅하는거라 미흡한 부분이많이 있을거같네요ㅠㅠ 상호간의 통신을 가능하게 하려면 필수코스기 때문에 천천히 진행해보도록 하겠습니다. ["네트워크 프로그래밍 = TCP/IP 소켓 프로그래밍"의 개요] 1. 소켓을 생성합니다.(socket 함수) 2. IP address와 Port number를 할당합니다. (bind 함수) 3. 클라이언트 프로그램의 연결 요청을 받아들일 수 있는 상태로 만들어줍니다.(listen 함수) 4. 클라이언트 프로그램의 연결 요청을 수락합니다. (accept 함수) 1번부터 4번까지 순서대로 진행이 됩니다. 소켓 프로그래밍의 가장 기초가 되는 부분입.. 2013. 9. 25.
[C++ 언어] 제 12 강 : 예외처리 드디어 C++ 언어의 마지막 강의입니다. 사실 포스팅 할 내용은 많으나 도저히 못하겠어요... 이놈의 C++ 을 얼마나 끌었는지 모르겠네요... 복습개념이라 단기로 바짝해서 올려야되는대 그게 안되다보니 길어지도 지치고 ㅠㅠㅠㅠ 오늘은 예외처리에 대해서 공부하도록 할 건데요~ 짧게 마치도록 하겠습니다. [예외 처리의 개념] 예를 들어, int a 와 int b 라는 변수가 있다고 가정합시다. 실제 연산에서 a/b 라는 연산을 하여 출력값을 cout문으로 화면상에 출력을 한다고 가정했을때를 생각해보세요. 일반적인 경우는 컴파일에러 없이 무난하게 출력해 줄 겁니다. 하지만 b 의 값을 0으로 전달 받았다면 정상적으로 처리가 될까요? 당연히 오류가 발생하게 됩니다. 이미 중학교 수학시간에 분모는 0이 될 수 없.. 2013. 8. 19.
[C++ 언어] 제 11 강 : 연산자 오버로딩(2) 연산자 오버로딩 두번째 시간입니다. 이번에는 연산자를 오버로딩하되, 전역 함수에 의한 오버로딩이 반드시 필요한 상황 하나를 소개하겠습니다. 차근차근 진행할거니까 잘 따라오세요~ [잘못된 형태의 연산자 오버로딩] int main(void) { int a=10, b=20; int c=a+b; ...(생략) } 위 예제처럼 a와 b를 더하 결과 값이 단순히 c에 저장되는 것이지 변수 a 혹은 b 의 값이 변경되는 것은 아닙니다. 바로 다음 예제를 살펴보겠습니다. #include using std::endl; using std::cout; class Point { private: int x, y; public: Point(int _x=0, int _y=0):x(_x), y(_y){} void ShowPositi.. 2013. 3. 26.
[C++ 언어] 제 11 강 : 연산자 오버로딩(1) 2013년 첫 포스팅이네요~ 새해 복 많이들 받으시구요최고의 해를 보내기 위해 열심히 노력합시다~ 이번 시간에는 "연산자 오버로딩" 에 관하여 살펴보도록 하겠습니다.함수만 오버로딩 되는 것이 아니라 C++에서는 연산자도 오버로딩 됩니다~ [operator+ 라는 함수] #include using std::endl;using std::cout; class Point {private : int x, y;public: Point (int _x = 0, int _y = 0 ) : x(_x), y(_y) {} void ShowPosition(); void operator+ (int val);}; void Point::ShowPosition() { cout 2013. 1. 7.
[C++ 언어] 제 10 강 : virtual 그리고 다중 상속 아주 오~~~랜만에 포스팅합니다! 너무 오래되서 전에 무슨 강을 공부했는지도 기억이 가물해서...;; 역시 사람의 망각 곡선은 무시할게 못되죠...ㅠㅠㅠㅠ 이럴때는 천재들이 부럽네요! 무튼 오늘은 virtual 의 원리와 다중상속에 대해서 공부해보도록 하겠습니다. [가상 함수의 기본 원리] 가상 함수가 동작하는 원리에 대해서 간단하게 알아보겠습니다. #include using std::endl; using std::cout; class A { int a; int b; public: virtual void fct1() { cout 2012. 9. 7.
[C++ 언어] 제 9 강 : 상속과 다형성(2) 8강에 이어서 상속과 다형성에 대하여 계속 살펴보겠습니다. [Static Binding 과 Dynamic Binding] *오버라이딩* #include using namespace std; class AAA { public: void fct() { cout 2012. 7. 5.
[C++ 언어] 제 8 강 : 상속과 다형성 저번 강의에 이어서 상속에 관하여 조금 더 공부해보도록 하겠습니다. [상속된 객체와 포인터] *객체 포인터 : 객체의 주소 값을 저장할 수 있는 포인터* AAA 라는 클래스가 있다면 포인터 AAA* 는 AAA 객체의 주소 값과 AAA 클래스를 상속하는 Derived 클래스 객체의 주소 값도 저장이 가능합니다. 여기서 AAA 클래스의 포인터를 가리켜 객체 포인터라고 정의하게되죠. 아래 예제를 살펴보도록 하죠. #include using namespace std; class Person { public: void Sleep() { cout 2012. 7. 2.
[C++ 언어] 제 7 강 : 상속 오늘은 C++언언에서의 상속에 대한 내용을 공부해보도록 하겠습니다. 상속의 기본개념부터 생성 및 소멸 과정, 다양한 형태의 상속을 배워보겠습니다~!! 상속을 공부하기 전에 몇가지 이야기를 해보도록 하겠습니다. 다음 예제는 급여 관리 시스템의 프로그램 코드입니다. 이 시스템에서의 직원의 근무 형태는 오직!!! 고용직(Permanent)하나 뿐 입니다. 클래스는 이름과 급여정보 정도를 저장할 수 있도록 간단히 정의하였습니다. class Permanent { char name[10]; int salary; public: Permanent(char* _name, int sal); const char* GetName(); int GetPay(); }; Permanent::Permanent(char* _name, .. 2012. 6. 28.
[C++ 언어] 제 6 강 : static, const 맴버 얼마만에 포스팅을 하는건지..... 다사다난했습니다....ㅠㅠㅠㅠㅠ 이제다시 블로그 활동 열심히 하려구요! 늦은시간에도 불구하고 C++ 6강을 강행하도록 하겠습니다! 하두 오랫만이라 ㅠㅠㅠㅠㅠㅠ 바보가 된 느낌.... [const 키워드] 일단 const라는 키워드에 대해서 복습을 해봅시다! 복습은 과해도 괜찮아요~ 1. const 키워드는 변수의 선언 앞에 붙어서 변수를 상수화 한다. ex) const int number = 1; number = 2; //여기서 컴파일 오류가 발생합니다. 2. const 키워드는 포인터가 가리키는 데이터를 상수화 한다. ex) int number = 1; const int* ptr = &number; *ptr = 2; // 컴파일 오류가 발생!! 3. const 키워드.. 2012. 5. 25.
[C++ 언어] 제 5 강 : 복사 생성자 오랜만에 포스팅합니다~ 이번 2월달에는 블로그에 신경을 많이 못 써주었네요 ㅠㅠㅠ그래도 블로그 오픈 약 2달만에 2만명이라는 방문자를 달성했습니다 우와..... 열심히 하겠습니다! 정말 좋은 정보들 얻어가셨으면 좋겠다는게 제 바램입니다. 조만간 리뷰도 올리고 제품소개도 할 예정입니다^^ 학술블로그만 너무 올리는 것 같아서....ㅎㅎㅎ 자 그럼 오늘도 열공하겠습니다! [복사 생성자] int value1 = 10; int value2(10); 첫 번째 문장과 두 번째 문장은 서로 동일합니다. C언어 스타일이냐 C++언어 스타일이냐만 다르지 기능은 완벽하게 똑같습니다. 객체로 넘어가보겠습니다. 그렇다면 클래스 AAA를 정의했다고 합시다. AAA a1(10); AAA a2 = 10; 마찬가지로 객체의 생성에 있.. 2012. 2. 25.
[C++ 언어] 제 4 강 : 클래스2 이번 장에서는 본격적으로 '클래스'에 대해서 설명하겠습니다. 저번 장에서는 C언어의 구조체 관점(?)에서 살펴보았죠. 클래스의 아주 중요한 정보은닉, 캡슐화에 대한 개념을 설명하고 생성자, 소멸자 그리고 기타 필요한 설명을 이어나가도록 하겠습니다~ 정보 은닉(Information Hiding) 정보 은닉은 객체 내부의 존재하는 데이터를 숨긴다고 생각하시면 됩니다. 결론부터 말씀드리자면 객체의 외부에서 객체 내에 존재하는 맴버 변수에 직접 접근하는 권한을 허용하면 안됩니다. 즉, 객체 내에 존재하는 맴버 변수에 직접 접근하는 것은 정보 은닉에 위배됩니다. class point { public: int x; int y; }; int main(void) { point p; p.x = 10; p.y = 10; .. 2012. 2. 11.
[C++ 언어] 제 3 강 : 클래스 드디어 클래스를 공부하는군요. 클래스와 우리가 기존에 알고 있던 구조체를 같이 언급하면서 설명하도록 하겠습니다. 프로그래밍을 할 때, 관련 있는 데이터를 하나로 묶습니다. 관리하기도, 프로그래밍 하기에도 편하기 때문이죠. 그래서 구조체를 사용했습니다. 즉, 부류를 형성하는 데이터들을 하나의 자료형으로 정의해서, 관리 및 프로그램 구현에 도움을 주고있습니다. 지금까지 우리는 구조체를 공부하면서 구조체 내부에 오직 변수만 정의하여 사용해왔습니다. 그러나 클래스는 함수까지도 포함을해서 정의합니다. 어떠한 데이터들이 부류를 형성한다고 가정해 봅시다. 예를들어 은행업무에서의 고객이름, 비밀번호, 계좌번호, 잔액은 모두 고객에 대한 정보로 부류를 이루고 있습니다. 출금기능과 입금기능은 함수로 구현을 했고 이러한 기.. 2012. 2. 7.