좋은 클래스 = 정보은닉(클래스 내의 데이터에 바로 접근할 수 있는 것) , 캡슐화.
클래스간의 결합도가 낮을 수록 좋은 클래스.
클래스의 정의 - 객체를 만들기 위해서 제일 먼저 하는 일은 클래스를 정의 하는 것.
붕어빵을 만들기 위해서 붕어빵 틀을 만든다고 생각하면 된다.
클래스를 선언하는 예제>
#include <iostream>
using namespace std;
class Point //클래스를 정의한다.
{
public: //메인함수에 직접적으로 접근 가능하다.
int x, y; //멤버 변수들
void Print() //멤버 함수
{
cout << "(" << x << " , " << y << ")\n";
}
};
int main() //객체는 대부분 메인 함수에서 선언한다.
{
return 0; //아직 하는 일 없음.
}
클래스를 선언한 후 객체를 생성하는
예제>
객체는 pt1, pt2이다 . 여기서 public 를 삭제하면 메인함수에서 객체에 접근할 수 없다.
#include <iostream>
using namespace std;
class Point //클래스를 정의한다.
{
public:
int x, y; //멤버 변수들
void Print() //멤버 함수
{
cout << "(" << x << " , " << y << ")\n";
}
};
int main()
{
Point pt1 ,pt2; //객체를 생성한다.
pt1.x = 100; //pt1 , pt2를 초기화 한다.
pt1.y = 100; //. 연산자를 이용해서 접근.
pt2.x = 200;
pt2.y = 200;
pt1.Print(); /pt1 ,pt2 내용을 출력한다.
pt2.Print();
return 0; //아직 하는 일 없음.
}
멤버 함수 - 오보로딩 가능(함수 이름을 같은 것을 사용해도 구별할 수 있다는 것, 인자로 구별), 클래스의 정의 안에서 선언된 함수.
함수의 선언은 클래스 내부에서 하고 정의는 클래스 외부에서 한다.
#include <iostream>
using namespace std;
class Point
{
public: //멤버변수
int x ,y;
void Print(); //멤버함수
};
void Point::Print()
{
cout<<"("<<x<<","<<y<<")\n";
}
int main()
{
Point pt1 , pt2; //객체를 생성한다.
pt1.x = 100; //pt1, pt2 초기화
pt1.y = 100;
pt2.x = 200;
pt2.y = 200;
Point pt3 = pt1;
pt3.Print();
pt3 = pt2;
pt3.Print();
return 0;
}
맴버함수를 정의할 때 들어가는 매개변수는 맴버함수에 들어가는 변수와는 다른 이름을 사용해야 한다.
'About 프로그래밍!!! > C++' 카테고리의 다른 글
반드시 생성자가 있어야 하는 경우&생성자를 사용해 임시객체 만들기 (0) | 2010.06.16 |
---|---|
문제풀이& 클래스,생성자 복습 (0) | 2010.06.16 |
복사 생성자 (0) | 2010.06.15 |
매겨변수가 있는 생성자 (0) | 2010.06.15 |
객체생성과 생성자의 역할 (0) | 2010.06.15 |