뭐, 월드컵 하고 있는데 짜달시리 올릴게 없어서. 필기 했던거 올린다. 지울 겸.
짜증난다.
26살.
눈치보고.
집에서 TV도 못보고.
훗.
하긴 오래전에 좋아하던거 다 버렸지.
나 중학교 고등학교 때 같이 축구하던 애들...
정말 하루도 안 빠지고 했다고 해도 과언이 아니다.
하지만. 나는 축구를 못한다.
공이 싫다.
나는 쌓아왔던거, 뭐 지킨다는 거 다 싫다.
현재가 좋다.
추억은 슬픈 것이다. 기억하기도 싫고. 싫어한다.
슬퍼서 잊을려고 ?
슬픈 추억은 아름답다고?
그런 추억들이 나에게 큰 부분을 차지한다고?
셧더 뻑이다.
한잔해야지.
oop 란?
짜증난다.
26살.
눈치보고.
집에서 TV도 못보고.
훗.
하긴 오래전에 좋아하던거 다 버렸지.
나 중학교 고등학교 때 같이 축구하던 애들...
정말 하루도 안 빠지고 했다고 해도 과언이 아니다.
하지만. 나는 축구를 못한다.
공이 싫다.
나는 쌓아왔던거, 뭐 지킨다는 거 다 싫다.
현재가 좋다.
추억은 슬픈 것이다. 기억하기도 싫고. 싫어한다.
슬퍼서 잊을려고 ?
슬픈 추억은 아름답다고?
그런 추억들이 나에게 큰 부분을 차지한다고?
셧더 뻑이다.
한잔해야지.
oop 란?
1. Object oriented Programming 의 약로 
Object 중심의 프로그램 개발 방식이다. 
기존의 절차적 언어 방식에서는 data와 그것의 처리 절차인 함수를 
별도로 관리하여 많은 문제점을 발생시킨다. 
oop는 data와 함수를 하나로 묶어 object라 부르고 
프로그램을 그 object 중심으로 작성해 나가는 것이다. 
2. oop의 4대 특징
1) 추상화 (Abstraction) 
(1) 복잡한 것을 간단하게 하는것. 
(2) 세부적인사항은 무시하고 본질적인 특징에만 집중하는것. 
data추상화 : int Struct data (년, 월, 일 구조를 가짐.) 
절차적 추상화 : clrdcr() : "화면을 지운다" 라는 본질적 특징만 알면된다. 
2) 은닉화 (Encapsulation) 
(1) 관련있는 정보와 그것의 처리방법을 하나로 묶은것. 
(2) 외부로부터 감추어 두는것 : Data 보호. 
추상화 + 은닉화 ==> 추상적 데이타형 (Abstruct Data Type) : ADT ==> 클래스 
3) 상속성(Inheritance) 
다른 클래스가 갖는 특징들을 물려받아 사용하는것. 
4) 다향성 (Polymorphism) 
같은 message에 대해 object가 다른 반응을 보이는것. 
☆클래스☆ : 기억공간들과 함수들을 함께 모아놓고 관리하기 위한 자료형
(1) 접근지정자를 두어 변수나 함수들을 임의로 사용하지 못하게 설정할 수 있는 기능을 가짐. 
(2) 이미 작성해둔 Class 자료형을 물려받아 사용. 
(3) 같은 이름의 함수를 선조와 후손이 동시에 존재시킴으로써 상태에 따라 통일이름을 가지고 다른 처리. 
클래스 사용목적: 기억장소와 함수를 한덩어리로 관리해서 자료처리를 더욱 효과적으로 하기 위함
☆형식1☆
Class 클래스 이름 
{ 
자료형 변수1; 
자료형 변수2; 
. 
. 
. 
자료형 변수N; 
접근지정자 
클래스 이름(){내용} 
~클래스 이름(){내용} 
결과형 함수명1(){내용} 
결과형 함수명2(){내용} 
. 
. 
. 
}; 
☆형식2☆
class 클래스 이름 
{ 
자료형 변수1; 
자료형 변수2; 
. 
. 
. 
자료형 변수N; 
접근지정자 
클래스 이름(){내용} 
~클래스 이름(){내용} 
결과형 함수명1(){내용} 
결과형 함수명2(){내용} 
. 
. 
. 
}; 
클래스 이름 ::클래스 이름(){내용}
클래스 이름 ::클래스 이름(){내용} 
결과형 클래스 이름::함수명1(){내용} 
결과형 클래스 이름::함수명2(){내용} 
. 
. 
. 
결과형 클래스 이름::함수명n(){내용} 
☆예제☆
class Score 
{ 
char name[20]; 
int kor,eng; 
double avg; 
}; 
void main() 
{ 
Score a; 
strcpy(a.name,"홍길동"); 
cout<<"name is"<
} 
☆접근 지정자(Access Specifier)☆
클래스 자료형 내부에 선언된 맴버들을 어떤 곳에서는 사용 할수 있게 하고 
어떤 곳에서는 사용하지 못하게 하는 예약어. 
☆접근지정자의 종류☆
1)public :맴버 변수나 맴버 함수가 public으로 선언 되어져 있을 경우에는 클래스내에서 
뿐만아니라 어떤 함수에서도 사용할 수 있다.(접근가능) 
2) private : 멤버변수나 멤버함수가 private로 선언되어져 있으면 해당 멤버들은 
자신의 클래스내의 멤버변수나 멤버함수 속에서만 사용할수 있다 
(단, friend로 지정된 함수와 friend로 지정된 클래스에서는 private 라고 지정된 멤버에도 접근할수 있다.) 
3) protected : 멤버들은 자신의 클래스내의 멤버함수 속과 후손 클래스내의 멤버함수 
속에서 사용이 가능 
마지막에 " getch() " 라고 써주면 엔터는 치기 전까지 종료되지 않는다.
*const 멤버함수
- 멤버함수의 머릿부 뒤에 const라는 예약어가 기재된 멤버함수를const멤버함수가 한다. 
const멤버함수로 선언하게 되면 그 멤버함수속에서는 멤버변수의 값을 이용만 할수 있고 
변경은 불가능 하다. const형 멤버함수 속에서는 일반 멤버함수(const로 지정되지 않은 멤버함수) 
를 호출하지 않는 것을 원칙으로 한다. (이유: 일반 멤버함수 쪽으로 가서 멤버변수의 값을 임의로 
바꾸는 경우가 발생할 수도 있기 때문이다.) 
①const 멤버함수 기재형식 
⑴class클래스 이름 
        { 
                접근지정자: 
                        자료형 멤버변수; 
                접근지정자: 
                        결과형 멤버변수1() const 
                        { 
                                내용1 
                        } 
        };    <-- 클래스 끝 
②class 클래스 이름 
{ 
        접근지정자: 
                자료형 멤버변수; 
        접근지정자: 
                결과형 멤버함수1() const 
}; <--클래스 끝 
결과형 클래스이름::멤버함수1() const 
{ 
        내용1  <-- 멤버변수값을 이용할 수는 있고 변경시킬수는 없다. 
} 
생성자(constructor)함수 - 362p
①생성자 함수라는 것은 오브젝트가 생성되어질때 자동적으로 호출되어지는 함수. 즉, 오브젝트가 메모리상에 기억공간을 확보할 때 저절로 호출되어지는 함수. 생성자 함수가 제공되어지는 가장 큰 목적은 오브젝트가 생성될때 각 멤버 변수에 확실한 초기값을 부여하기 위함.(즉, 멤버변수에 gabage값 기억되는것. 방지) 
②생성자 함수는 오브젝트가 만들어질때 자동으로 호출되는 멤버함수이다. 
③사용자가 강제로 호출할수 없다. 
④결과형을 기재하지 않는다.(결과값을 리턴 시키지 못한다.) 
⑤생성자 함수 이름은 클래스 이름과 동일하게 기재한다. 
⑥생성자 함수는 매개변수를 가질수 있으며 오버로드 함수화 시킬 수 있고 매개변수에 초기값을 부여할 수도 있다. 
⑦매개변수도 없고 함수의 내용도 없는 것을 디폴트 생성자 함수라하며 사용자가 생성자함수를 만들지 않았을 때는 디폴트 생성자가 있는 것으로 취급. 단,사용자가 생성자 함수를 하나라도 만들게 되면 디폴트 함수는 없는것으로 취급. 
⑧생성자함수의 접근 지정자는 반드시 public으로한다. 
⑨생성자함수뒤에 :(콜론)연산자를 기재하여 멤버변수에 간단하게 초기값을 부여하거나 상속되었을 경우에는 선조 클래스의 생성자에 초기값을 넘겨주는 형식을 기재할수 있다. 
⑩생성자 함수는 절대로 const하수화 시킬수 없다. 
⑪생성자 함수의 호출시기는 기억류에 따라 차이가 있다. 
⑫생성자 함수의 매개변수로 자신의 클래스 자료형으로 이루어진 포인터나 레퍼런스 오브젝트를 한개만 기재했을때 이를 복사, 생성자 함수라 한다. 
⑬복사 생성자 함수를 만들지 않으면 디폴트 복사 생성자함수가 존재하는것으로 처리 
⑭복사 생성자 함수는 오브젝트 생성시에 자신의 클래스형으로 이루어진 오브젝트를 인수로서 매개변수에 넘길 경우나 멤버함수를 호출한후에 복귀할 때 자신의 클래스 형으로 된 오브젝트 자료형을 리턴 받을 때 호출되어진다. 
생성자의 모양
#include
class Test
{ 
        int su; 
public: 
        Test(); 
        Test(int); 
        Test(int,int); 
        Test(Test&); 
}; 
Test::Test(){su=0;}
Test::Test(int a){su=a;} 
Test::Test(int a, int b){su=a+b;} 
Test::Test(Test &M){su=M.su;} 
void main(){}
*/ 
/* 
#include  
#include  
#include   //turbo c에서만 사용  
class Na
{ 
        int kor; 
        int eng; 
public: 
        Na(){} 
void Disp()
        { 
                cout<<"국어="<
                cout<<"영어="<
        } 
}; 
void main()
{ 
        Na kim; 
        kim.Disp(); 
        kim.Na();         //?생성자 함수가 오류나는 부분(선언된kim으로부터의 클래스 벗어나면 실행된다.?) 
} 
2. 소멸자(Destruction)함수
오브젝트가 메모리에서 없어질 때 자동적으로 호출.
① 소멸자 함수의 함수 이름은 클래스 이름과 동일한 이름으로 기재하며
 소멸자 함수는 함수명 앞에 ~(틸드) 기호를 기재하여 선언. 
② 접근지정자는 public 
③ 결과형 기재 안한다. 
④ const 함수화 시킬수 없다. 
⑤ 하나의 클래스에서 한개밖에 기재할 수 없으며 소멸자 함수는 매개변수를 가질수 없다. 
⑥ 사용자가 강제로 호출할 수 없다. 
⑦ 소멸자 함수의 호출시기는 생성자 함수의 호출 시기의 역순이다. 
⑧ 동적으로 할당된 메모리들을 오브젝트 소멸과 함께 자유공간으로 돌려줄 때 사용. 
*포함오브젝트(Embeded Object) 
- for문속에 for문이 있는 경우를 다중 for문이라고 하고 
 구조체속에 구조체가 있는 경우를 다중 구조체라 하듯이 
 오브젝트 속에 또 다른 오브젝트가 존재하는 경우를 다중 오브젝트라 한다. 
 삽입오브젝트. 포함 오브젝트라 부름. 
- 만드는 법: 어떤 클래스내의 멤버변수의 자료형을 클래스 자료형으로 만듬. 
- 포함 오브젝트가 존재할 경우에는 포람 오브젝트의 생성자가 먼저 수행 
- 포함 오브젝트의 생성자함수의 매개변수에 초기값을 넘겨주고자 할 때는 
 포함오브젝트를 포함하고 있는 클래스내의 생성자 함수 머릿부 뒤에서 
 : 포함오브젝트이름(값1, 값2...)와 같은 형태로 
- 반복적으로 등장하는 멤버변수의 집단들이 존재할 경우 포함 오브젝트를 주로 이동함 
- 형식 - 
class 클래스이름1 
{ 
        자료형 변수1; 
        자료형 변수2; 
        . 
        . 
        접근지정자: 
        결과형 함수명1(){내용;} 
}; 
class 클래스이름2
{ 
        . 
        . 
        자료형 변수 x; 
        클래스 이름1 변수 y; 
        접근지정자: 
        결과형 함수명2(){내용;} 
}; 
§복사 생성자 함수의 자동호출시기 
class 클래스이름
{ 
        자료형 변수; 
public: 
        클래스이름(클래스이름 &매개변수1){내용} 
        결과형 함수명1(클래스이름 매개변수2){내용} 
        클래스이름 함수명2() 
        { 
                return(오브젝트); 
        } 
        결과형 함수명3() 
        { 
                클래스이름 오브젝트1; 
                클래스이름 오브젝트2(오브젝트1); 
                클래스이름 오브젝트3=오브젝트2; 
        } 
}; 
void main()
{ 
        클래스이름 오브젝트4; 
        클래스이름 오브젝트5(오브젝트4); 
        클래스이름 오브젝트6=오브젝트5; 
} 
#include  
#include  
class SUNGJUK 
{ 
char irum[11]; 
int nai; 
public: 
void Set(char*s); 
void Set(int n); 
void Set(char*s1, int n1); 
void Disp(int)const; 
}; 
inline void SUNGJUK::Set(char*s) 
{ 
strcpy(irum,s); 
} 
inline void SUNGJUK::Set(int n) 
{ 
nai=n; 
} 
inline void SUNGJUK::Set(char*s1,int n1) 
{ 
Set(s1); 
Set(n1); 
} 
inline void SUNGJUK::Disp(int N=0)const 
{ 
if(N==0)cout<<"이름 = "<
<<"나이 = "<
if(N==1)cout<<"이름 = "<
if(N==2)cout<<"나이 = "<
} 
void main() 
{ 
class SUNGJUK kim; 
kim.Set("최형구",21); 
kim.Disp(); 
kim.Disp(1); 
kim.Disp(2); 
} 
결과 : 이름 : 최형구 나이:21
        이름 : 최형구 
        나이 : 21 
#include
#include  
class SUNGJUK 
{ 
        int kor; 
        int eng; 
public: 
        void SetK(int k, int e) 
        { 
                kor = k; 
                eng = e; 
        } 
        void SetE(int k1, int e1) 
        { 
                SetK(k1,e1); 
        } 
        void Disp() 
        { 
                cout<<"※국어점수 = "<
                cout<<"※영어점수 = "<
        } 
}; 
void main() 
{ 
        class SUNGJUK kim; 
        kim.SetE(80,85); 
        kim.Disp(); 
        getch(); 
} 
결과 : ※국어점수 = 80 
       ※영어점수 = 90 
#include
#include  
#include  
class SUNGJUK 
{ 
        char irum[11]; 
        int nai; 
public: 
        void Set(char*s); 
        void Set(int n); 
        void Set(char*s1, int n1); 
        void Disp(); 
        void Erasespace(); 
}; 
inline void SUNGJUK::Set(char*s) 
{ 
        strcpy(irum,s); 
} 
inline void SUNGJUK::Set(int n) 
{ 
        nai = n; 
} 
inline void SUNGJUK::Set(char*s1, int n1) 
{ 
        Set(s1);Set(n1); 
} 
inline void SUNGJUK::Disp() 
{ 
        cout<<"이름 = "<
        cout<<"나이 = "<
} 
inline void SUNGJUK::Erasespace() 
{ 
        char imsi[11]; 
        int a = 0, b = 0; 
        while(irum[a] != NULL) 
        { 
                if irum[a] != 32 
                { 
                        imsi[b] = irum[a]; b++ ; 
                } 
                a++; 
        } 
        imsi[b]=NULL; 
        strcpy(irum,imsi); 
} 
void main() 
{ 
        class SUNGJUK kim; 
        kim.Set("최형구",21); 
        kim.Disp(); 
        kim.Erasespace(); 
        kim.Disp(); 
} 
#include
using namespace std; 
int main() 
{ 
        int pennies = 8; 
        int dime = 4; 
        int quarters = 3; 
        double total = pennies *0.01 + dime * 0.10 + quarters*0.25; 
        cout<<"total(합계) value = "<
        return 0; 
} 
결과 : total(합계) value = 1.23
#include  
#include  
#include  
#include  
class Na
{ 
        int kor; 
        int eng; 
public:
        Na(){kor=eng=0;} 
        Na(int k){kor=k; eng=0;} 
        Na(int k, int e){kor=k; eng=e;} 
void Disp()
        { 
                cout<<"국어="<
                cout<<"영어="<
        } 
}; 
void main() 
{ 
        Na kim; 
        Na Lee(50); 
        Na Park(80,90); 
        kim.Disp(); 
        Lee.Disp(); 
        Park.Disp(); 
} 
#include  
#define P(x) cout<<"here is "<
class na{ 
        int kor; int eng; 
public: 
        na(int k=0,int e=0){kor=k;eng=e;} 
        na(na&); 
        void Disp() 
        { 
                cout<<"국어 = "<
        } 
        na Get(na k) 
        { 
                na im; 
                P(4); 
                na im1(im); 
                P(5); 
                na im2=im; 
                P(6); 
                return(im); 
        } 
}; 
na :: na(na &B) 
{ 
        static int a=0; 
        cout<<"Called Copy Constructor.Now is = "<<++a<<"\n"; 
} 
void main() 
{ 
        na M1(70,80); 
        na M2,M3; 
        P(1); 
        na M4(M1); 
        P(2); 
        na M5=M4; 
        M2=M5; 
        P(3); 
        M3=M1.Get(M2); 
        P(7); 
} 
결과 : here is 1 
      Called Copy Constructor.Now is =1 
here is 2 
      Called Copy Constructor.Now is =2 
here is 3 
      Called Copy Constructor.Now is =3 
here is 4 
      Called Copy Constructor.Now is =4 
here is 5 
      Called Copy Constructor.Now is =5 
here is 6 
      Called Copy Constructor.Now is =6 
here is 7 
#include  
#include  
#include  
#include  
class NA
{ 
        int kor; 
        int eng; 
public:
        NA(int k=0, int e=0){kor=k; eng=e;} 
        NA(NA &B){kor=B.kor; eng=B.eng;} 
void Disp()
        { 
                cout<<"국어="<
        } 
NA get()
        { 
                NA im; 
                im.kor=kor; 
                im.eng=eng; 
                return(im); 
        } 
}; 
void main()
{ 
        NA kim(50); 
        NA lee(80,90); 
        NA park(lee); 
        kim.Disp(); 
        lee.Disp(); 
        park.Disp(); 
        kim=lee.get(); 
} 
#include
#define P(x) cout<<"here is "<
class NA
{ 
        int kor; 
        int eng; 
public: 
        NA(int k=0, int e=0) 
        { 
                kor=k; eng=e; 
        } 
        NA(NA&); 
void disp()
        { 
                cout<<"국어="<
        } 
NA get(NA k)
        { 
                NA im; 
                P(4); 
                NA im1(im); 
                P(5); 
                NA im2=im; 
                P(6); 
                return(im); 
        } 
}; 
NA::NA(NA &B)
{ 
        static int a=0; 
        cout<<"Called copy constructor Now is="<<++a<<"\n"; 
} 
void main()
{ 
        NA M1(70,80); 
        NA M2,M3; 
        P(1); 
        NA M4(M1); 
        P(2); 
        NA M5=M4; 
        M2=M5; 
        P(3); 
        M3=M1.get(M2); 
        P(7); 
} 
#include
class DA 
{ 
        int kor; 
        int eng; 
public: 
        DA() 
        { 
                cout<<"오브젝트가 생성됨\n"; 
                kor=eng=0; 
        } 
        ~DA() 
        { 
                cout<<"오브젝트가 소멸됨\n"; 
        } 
        void disp() 
        { 
                cout<<"국어="<
        } 
}; 
void KK() 
{ 
        DA kim; 
} 
void main() 
{ 
        KK(); 
    DA kim; 
        kim.disp(); 
} 
#include  
class na 
{ 
        double h; 
        double w; 
        double ws; 
public:
        void g(float h, float w) 
        { 
                ws=(h-100)*0.9; 
                if(w < ws-5) 
                cout<<"당신은 허약입니다.\n"; 
                else if(w > ws+5) 
                cout<<"당신은 비만입니다.\n"; 
                else 
                cout<<"당신은 정상입니다.\n"; 
        } 
}; 
void main()
{ 
        na qwe; 
        qwe.g(170,50); 
} 
*박스 만들기 
#include  
#include  
#include  
#include  
class Box 
{ 
        int x1,y1,x2,y2; 
        char ch; 
public: 
        Box(int a=1, int b=1, int c=79, int d=24, char e='*') 
        { 
                x1=a; 
                y1=b; 
                x2=c; 
                y2=d; 
                ch=e; 
        } 
        Box(char c) 
        { 
                ch=c='*'; 
                x1=1; 
                y1=1; 
                x2=79; 
                y2=24; 
        } 
        ~Box(){} 
        void Draw() const; 
        void Set(int, int, int, int, char); 
        void Clear(); 
}; 
void Box::Draw() const 
{ 
        for(int x=x1; x<=x2; x++) 
        { 
                gotoxy(x,y1); 
                cout<
                gotoxy(x,y2); 
                cout<
        } 
        for(int y=y1; y<=y2; y++) 
        { 
                gotoxy(x1,y); 
                cout<
                gotoxy(x2,y); 
                cout<
        } 
} 
void Box::Set(int a,int b,int c, int d, char e) 
{ 
        Clear(); 
                x1=a,y1=b,x2=c,y2=d,ch=e; 
                Draw(); 
} 
void Box::Clear() 
{} 
void main() 
{ 
        Box Go; 
        Go.Draw(); 
        Go.Set(3,3,70,20,'#'); 
} 
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.