본문 바로가기
IT 컴퓨터_프로그램 /c++

클래스1

by 건축직일상 2015. 9. 30.

#include<iostream>


struct tagInfo

{

int    iTest;

char    cTest;

double    dTest;

float    fTest;

};

union    uInfo

{

int    iTest;

char    cTest;

double    dTest;

float    fTest;

};

//타입타파인 잡아 쓸수있다

typedef union uInfo2

{

int    iTest;

char    cTest;

double    dTest;

float    fTest;

};

typedef struct tagBingo

{

union

{

struct

{

float _11 , _12, _13, _14, _15,

_21, _22, _23, _24 _25,

_31, _32, _33, _34, _35,

_41, _42, _43, _44, _45,

_51, _52, _53, _54, _55

};

float m1[25];

float m2[5][5];

};

}BINGO;

void main(void)

{

// 객체지향 프로그래밍 

//c에서의 기본자료형  - char short int float 등등등 

//c에서의 사용자 정의 자료형  - 구조체, 공용체, 열거체

공용체는 union 

uInfo info;

info.cTest = 5;

info.iTest = 10;

info.fTest = 19.2f;

info.dTest = 20.9;

cout << sizeof(info) << endl;

cout << info.cTest << endl;

cout << info.iTest << endl;

cout << info.dTest << endl;

//가장큰 멤버 기준으로 메모리 공유 

//공용체는 메모리가 공유된다는 특징이 있다 쓸대없어보이지만 쓸곳이있음

BINGO tbingo;

for(int i  = 0; i < 25; ++i)

{

tbingo.m1[i] = i;

}


for(int i  = 0; i < 25; ++i)

{

cout <<tbingo.m1[i] ;

}


for(int i = 0 ; i < 5; ++i)

{

for(int j = 0; j < 5; ++j)

{

cout << tbingo.m2[i][j];

}

cout << endl;

}

cout << tbinfo._11 << endl; //멤버접근가능

}


////////////////////////////////////////////////////

//클래스//

c++에서 생긴 사용자 정의 자료형 

data, method 로 구분 // 멤버변수 + 멤버함수

객체지향 프로그래밍 - 프로그래밍을 사람이 사는 실세계로 옮겨놓은 형태

자신을 나타내는 정보와 실행하는 기능을 포함하고있다.

객체지향 프로그래밍에서는 클래스는 일종의 틀이다


인간이라는 클래스가 있다면 실제학생들이나 선생님들이 실체화된 객체

객체는 구체적으로 실체가 있는것

클래스는 객체를 추상적으로 표현한것이다 


// 객체지향 프로그래밍 특징

1. 추상화 - 실체를 개념화 시킨 클래스 정의 작업 . 어떤 클래스를 설계할때 포함되어야할 특성이나 기능들을 개념화시키는것


2. 캡슐화 - 외부에 노출이 되어야 하는 부분과 그렇지 않은 부분들로 구별하는 작업


클래스는 이전의 구조체와 비슷함 이제는 멤버함수가 포함될것이다 


접근제어키워드 ? 

typedef struct tagInfo

{

//public: 구조체 에서는 이것이 접근 키워드

char    szName[20];

int    iAge;

}INFO;


class cObj

{

//private: 클래스에서는 기본접근제어 키워드 아무것도없으면 private

public:

void    Render(void)

{

cout << szName << endl;

cout << iAge << endl;

}

void    SetName(char*    pName)

{

strcpy_s(szName,sizeof(szName),pName);

}

void    SetAge(int    _iAge)

{

iAge = _iAge;

}

char*    GetName(void)

{

return szName;

}

int    GetAge(void)

{

return iAge;

}

pirvate:

char szName[20];

int iAge;

};

void main(void)

{

INFO    tInfo;

strcpy_s(tInfo.szName , sizeof(char) * 20 , "JUUU");

tInfo.iAge = 20;


cObj obj;

strcpy_s( obj.szName , sizeof(char) * 20 , "JUUU");

obj.iAge = 20;
//private 이라서 접근이 안된다


//접근불가능한 내부멤버에 접근할수있도록 우리가 만들어 제공하는 함수를 인터페이스 함수라고한다

obj.SetName("jusin");

obj.SetAge(20);

obj.Render();


cout << obj.GetName() << endl;

cout << obj.GetAge() << endl;


접근제어 키워드 3가지 

1. private - 자기자신 클래스 내부에서만 접근이 가능 

2. public - 자기자신 클래스 내부와 외부등 모든곳에서 접근이 가능 

3. protected - 자신의 클래스 내부 상속받은 자식클래스 내부 


3.상속성

4.다형성


1.은닉화 - 프로그램의 안정적인 구동을 위해 클래스 외부에서 직접적으로 클래스 멤버변수클래스 멤버함수에 접근할수 없도록만드는 것이다 

접근제어 키워드를 통해서 값을 직접적으로 변형할수 없도록 하는것이다

acess metod 를 제공해야한다

2.캡슐화 - 관련된 데이터와 함수를 하나로 묶는것이다. 클래스 내의 비슷한 특성을 묶어서 공개할 정보와 숨길정보를 구분하여

인터페이스는 외부에 공개하고 내부내용은 숨기는것이다.

3.상속성 - 보편적인 것들을 상위계층에 두고 각각이 가지고있는 특수한 기능들 혹은 개별적인 기능들을 하위에 두는것을 상속성, 계층성이라고한다

자동차는 부모클래스 ..... 승용차 화물차 버스는 자식클래스

4.다형성 - 


}

'IT 컴퓨터_프로그램 > c++' 카테고리의 다른 글

깊은복사 얕은복사  (0) 2015.10.06
static  (0) 2015.10.06
함수 오버로딩  (0) 2015.10.05
const  (0) 2015.10.05
클래스2  (0) 2015.10.01

댓글