안녕하세요 엘체프 GG 입니다.

머리에는 안들어오지만 벌써 C++ 들어 왔네요.

객체지향이 시작되는데... 소스만 끄적여 볼꼐요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#pragma once
class Point
{
     
private : 
    int x, y;// 캡슐화(
public:
    int x, y;//x,y좌표 맴버(필드)변수선언
    //생성자,소멸자: 맴버 메서드(함수)
    //reture 자료형을 표시(x)
    //반드시 클래스와 동명!!
    //자바에서는 소멸자(X)
    //생성자(constructor)
    //소멸자(destructor)
    //기본 생성자,소멸자 묵시적 (implicit) 선언 가능.
 
    Point();//기본 생성자(구축자)
    ~Point(); //기본 소멸자
    //기본 생성자,소멸자 안 써도 된다. 
 
    //생성자 오버로딩(overloding)
    Point(int x, int y);
    
    //일반 맴버 메서드 : 추상 메서드(함수의 선언부) :
    //함수의 몸통이 없고 선언부만 있는 함수
    //메뉴, 설계도의 역활
    void setPosition(int _x, int _y);
    void Move(int _x, int _y);
    void Show(void);
};
 
----------------------------------------------------------------------------------------------------
 
#include <iostream>
//c언어의 stude.h와 같은 역활의 header
#include "Point.h"
 
using namespace std//
 
//header 파일(추상부) --> 몸통(body) : 구현부, 구체부, 실체화, 구상
//implementaion, realization, concrete
//기본 생성자
Point::Point(void)
{
    cout << "기본생성자 입니다." << endl;
}
 
 
Point::~Point(void)
{
    cout << "기본 소멸자 입니다." << endl;
}
//set-method = setter : 설정(대입)하는 함수
void Point::setPosition(int _x, int _y){
 
    cout << "SetPosition 임돠" << endl;//log기록
    x = _x;//맴버 필드 <--인자(대입)
    y = _y;
 
}
 
void Point::Move(int x, int y){
 
    cout << "Move 함수임돠" << endl;
    this->+= x; //증가 이동 한다.
    this->+= y;
}
 
void Point::Show(void){
    cout << "Show 출력하는놈이다" << endl;
    cout << "(" << x <<"," <<y<<")" << endl;
}
 
Point::Point(int x, int y){
    cout << "오버로딩된 생성자" << endl;
    this->= x;
    this->= y;
}
 
------------------------------------------------------------------------------------------------------------
 
 
#include <iostream>
#include "Point.h"
 
using namespace std;
 
int main(void){
    Point p1, p2(10,10);
    // 객체 변수(인스턴스) 선언,생성
    //p1 : 기본 생성자 묵시적 사용
    //p2(10,10) : 오버로딩된 생성자
    //메서드명 묵시적 사용, 인자는 명시적 사용
    //Java : Point p1 = new Point();, new,생성자가 명시적으로 사용되어야함!
    //C++ 생성자가 미사용(X), 객저 생성시 묵시적 언급!
 
    p1.setPosition(2030);
    //p1.x = 20;//초기화에 20을 대입
    //p1.y = 30;
 
    p1.Move(100100);
    p2.Move(200200);
 
    p1.Show();
    p2.Show();
 
    system("PAUSE");
    return 0;
}
 
 
cs



이상 감사합니다.

'스터디 > C,C++' 카테고리의 다른 글

C++ 문자열 경사면 인쇄하기  (9) 2018.02.19
C++ 클래스 실습과제  (7) 2018.02.19
C 문자열 거꾸로 출력하기  (8) 2018.02.12
C 문자열 자르기 문제  (7) 2018.02.12
구조체  (6) 2018.02.05

+ Recent posts