ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐ŸŽ€ ํƒ€์ž…๊ณผ ์ธ์Šคํ„ด์Šค 

ํƒ€์ž…( type)๋Š” ์ถ”์ƒํ™” ๋œ ๊ฒƒ์ด๊ณ  ์ธ์Šคํ„ด์Šค (instance) ๋Š” ํƒ€์ž…์„ ์‹ค์ฒดํ™”ํ•œ ๊ตฌ์ฒด์ ์ธ ์‹ค์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

์˜ˆ์‹œ๋กœ ์›์„ ํ•˜๋‚˜์˜ ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๊ณ  ์ข…์ด ์œ„์— ์—ฌ๋Ÿฌ ํฌ๊ธฐ์˜ ์›์„ ๊ทธ๋ฆฌ๋ฉด ์ด๋Ÿฌํ•œ ์›๋“ค์ด ์ธ์Šคํ„ด์Šค๊ฐ€ ๋œ๋‹ค.  

 

 

๐ŸŽ€ ๊ฐ์ฒด ์ง€ํ–ฅ์— ํ•„์š”ํ•œ ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ 

์ƒˆ๋กœ์šด ์ž๋ฃŒํ˜• (ํƒ€์ž…)์„  ๋งŒ๋“ค๋•Œ๋Š” ํด๋ž˜์Šค (class)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ํƒ€์ž…์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์Šคํ„ด์Šค์ธ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ธ์Šคํ„ด์Šคํ™” (instantiation) ๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ• ๋•Œ๋Š” 1) ํด๋ž˜์Šค ์ •์˜ 2) ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์ •์˜ 3) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ( ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„) ์ด ํ•„์š”ํ•˜๋‹ค. 

#include <iostream>
using namespace std;
//ํด๋ž˜์Šค ์ •์˜
class Circle //ํ—ค๋”
{
private:  
	double radius; //๋ฐ์ดํ„ฐ๋ฉค๋ฒ„ ์„ ์–ธ
public: // ๋ชจ๋“  ๊ณณ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
	double getRadius() const; // ๋ฉค๋ฒ„ํ•จ์ˆ˜ ์„ ์–ธ
	double getArea() const;
	double getPerimeter() const;
	void setRadius(double value);
}; //ํด๋ž˜์Šค ์ •์˜ ๋์—๋Š” ๋ฐ˜๋“œ์‹œ ์„ธ๋ฏธ์ฝœ๋ก ์ด ์œ„์น˜

//๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์ •์˜
double Circle::getRadius() const
{
	return radius;
}

double Circle::getArea() const
{
	const double PI = 3.14;
	return(PI * 3.14 * radius);
}

double Circle::getPerimeter() const
{
	const double PI = 3.14;
	return(2 * PI * radius);
}

void Circle::setRadius(double value)
{
	radius = value;
}
//์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ : ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šค ํ™”ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ํ™œ์šฉ
int main()
{
	//์ฒซ ๋ฒˆ์งธ circle ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ํ˜ธ์ถœ
	cout << "Circle 1: " << endl;
	Circle circle1; // ๊ฐ์ฒด ์ธ์Šคํ„ด์Šคํ™”
	circle1.setRadius(10.0); // ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’ ์ดˆ๊ธฐํ™” 
	cout << "Radius: " << circle1.getRadius() << endl;
	cout << "Area: " << circle1.getArea() << endl;
	cout << "Perimeter: " << circle1.getPerimeter() << endl;
	return 0;
}

 

๐ŸŽ€ ํด๋ž˜์Šค ์ •์˜ 

ํด๋ž˜์Šค ์ •์˜๋Š” ํ—ค๋”, ๋ณธ๋ฌธ, ์„ธ๋ฏธ์ฝœ๋ก ์ด๋ผ๋Š” ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํด๋ž˜์Šค ํ—ค๋”๋Š” class๋ผ๋Š” ํ‚ค์›Œ๋“œ ๋’ค์— ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ๋งŒ๋“ ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•์€ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•ด๋„ ๊ด€๊ณ„๋Š” ์—†์œผ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค ์ด๋ฆ„์˜ ๊ฒฝ์šฐ๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋ž˜์Šค์™€ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

์ ‘๊ทผ์ œํ•œ์ž access modifier

์ ‘๊ทผ ์ œํ•œ์ž๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐํ•จ์ˆ˜์™€ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ private ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ๋ถ™๋Š”๋‹ค. private์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ๋ถ™์œผ๋ฉด ํ•ด๋‹น ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ์ถ”์ถœํ•  ์ˆ˜๋„ ์—†๊ณ , ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์—†๋‹ค.

 

๋ฉค๋ฒ„๊ฐ€ private๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค๋ฉด, ํด๋ž˜์Šค ๋‚ด๋ถ€(๋ฉค๋ฒ„ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ) ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด, ๋ฉค๋ฒ„๊ฐ€ public์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ๊ณณ (๋™์ผํ•œ ํด๋ž˜์Šค ๋‚ด๋ถ€, ์„œ๋ธŒ ํด๋ž˜์Šค ๋‚ด๋ถ€, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๐ŸŽ€ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์ •์˜ 

๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์„ ์–ธ์€ ํ•จ์ˆ˜์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ ์€ ๊ฒƒ์ด๋ผ ๋ณ„๋„์˜ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด์ „์— ์‚ดํŽด๋ณด์•˜๋˜ ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜ ์ •์˜์™€ ๋น„์Šทํ•˜๋‚˜ 1) ๋ฉค๋ฒ„ ํ•จ์ˆ˜์—๋Š”  ํ•œ์ •์ž const๊ฐ€ ์žˆ๋‹ค๋Š” ์  2) ๋ฉค๋ฒ„ ํ•จ์ˆ˜์—๋Š” ์•ž์— ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ถ™๋Š”๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. 

 

๐ŸŽ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ 

์œ„ ์ฝ”๋“œ์—์„œ๋Š” circle1์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ–ˆ๋‹ค. ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•ด์•ผํ•œ๋‹ค. 

Circle circle1; //๊ฐ์ฒด ์ธ์Šคํ„ด์Šคํ™”

์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด circle1์ด๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์žˆ๋Š” double์ž๋ฃŒํ˜•์˜ radius๋ผ๋Š” ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ, ์ด ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์— ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๐ŸŽ€ ๋ฉค๋ฒ„ ์„ ํƒ

 

๊ฐ์ฒด์˜ ์ด๋ฆ„๊ณผ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์‚ฌ์ด์— ์ (.)์ด ์ฐํ˜€์žˆ๋‹ค. ์ด๋Š” ๋ฉค๋ฒ„ ์„ ํƒ ์—ฐ์‚ฐ์ž(member selection operator)๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ