본문 바로가기
C++

[UML/C++] 클래스 다이어그램을 활용한 간단한 프로그래밍

by cod1ng 2023. 11. 8.

UML(Unified Modeling Language)란?

소포트웨어 시스템을 개발하는 과정에서 산출물의 명세화,시각화,문서화할 때 사용하는 모델링 언어로써 하나의 시스템을 표현하기 위한 표준적인 방법을 제공하기 위해서 만들어 졌다고 하는데 즉 쉽게 말하자면 우리가 어떠한 다이어그램을 제공받으면 전세계 어디서든 똑같이 코딩을하게 기준 점을 제시하는 것이다 그래서 사용하는 모델표준언어라고 생각하면 된다

예를 들어 이러한 클래스 다이어그램이 있다고 가정해보자

참고로 -는 private +는 public을 표현한 것이다 ,

왜냐하면 쉽게 생각했을때 우리가 계좌가 있는대 계좌번호랑 이름 잔액 개설일을 마음대로 수정해도 되는가? 절대 그렇지 않다 그리고 우리가 은행에 갔을때 은행에 가는 이유가 ATM 기기에는 입금,출금 등의 기능이 있어서 가는 것이기 때문에다 접근을 허용한다

#include <iostream>
using namespace std;

class Account
{
private:
	int number;
	string name;
	int balance;
	string date;

	//생성자 & 소멸자
public:
	Account(int _number, string _name, int _balance, string _date) // 생성자는 자기 자신을 초기화함 그러므로 
	{                                                            // 기존 변수이름과 살짝 다르게 해줌 
		number = _number;
		name = _name;
		balance = _balance;
		date = _date;
	}
	Account(int _number, string _name, string _date)
	{
		number = _number;
		name = _name;
		balance = 0;
		date = _date;
	}
	~Account() {}

	//Get 메서드 //return 과 타입형 동일 ! 
public:
	int get_number()  { return number;   }
	string get_name() { return name;    }
	int get_balance() { return balance; }
	string get_date() { return date;    }
	//Set 메서드
private:
	void set_number(int value)  { number = value;  }
	void set_name(string value) { name = value;    }
	void set_balance(int value) { balance = value; }
	void set_date(string value) { date = value;    }
	//메서드
public:
	bool input_money(int money)
	{
		if (money <= 0)
			return false;
		balance = balance + money;
		return true;
	}
	bool ouput_money(int money)
	{
		if (money <= 0)
			return false;
		if (money > balance)
			return false;
		balance = balance - money;
		return true;
	}
	void Print()
	{
		cout << number << "\t";
		cout << name << "\t";
		cout << balance << "원\t";
		cout << date << endl;
	}
};
void exam1()
{
	Account acc1(1111, "홍길동", 1000, "2023-11-06");
	Account acc2(2222, "김길동",  "2023-11-09"); // 잔액은 초기화 안해서 0으로 생성자에 의해 초기화

	acc1.Print();
	acc2.Print();

	acc1.input_money(1000);
	acc2.input_money(5000);

	acc1.Print();
	acc2.Print();
}
void exam2()
{
	Account* acc1 = new Account(1111, "홍길동", 1000, "2023-11-06");
	Account* acc2 = new Account(2222, "김길동", "2023-11-09"); 

	acc1->Print(); //역참조
	acc2->Print(); 

	acc1->input_money(1000);
	acc2->input_money(5000);

	acc1->Print();
	acc2->Print();

	delete acc1;
	delete acc2;

}
int main()
{
	exam2();

	return 0;
}

#include <iostream>
using namespace std;

class Account
{
private:
int number;
string name;
int balance;
string date;

//생성자 & 소멸자
public:
Account(int _number, string _name, int _balance, string _date) // 생성자는 자기 자신을 초기화함 그러므로 
{                                                            // 기존 변수이름과 살짝 다르게 해줌 
number = _number;
name = _name;
balance = _balance;
date = _date;
}
Account(int _number, string _name, string _date)
{
number = _number;
name = _name;
balance = 0;
date = _date;
}
~Account() {}

//Get 메서드 //return 과 타입형 동일 ! 
public:
int get_number()  { return number;   }
string get_name() { return name;    }
int get_balance() { return balance; }
string get_date() { return date;    }
//Set 메서드
private:
void set_number(int value)  { number = value;  }
void set_name(string value) { name = value;    }
void set_balance(int value) { balance = value; }
void set_date(string value) { date = value;    }
//메서드
public:
bool input_money(int money)
{
if (money <= 0)
return false;
balance = balance + money;
return true;
}
bool ouput_money(int money)
{
if (money <= 0)
return false;
if (money > balance)
return false;
balance = balance - money;
return true;
}
void Print()
{
cout << number << "\t";
cout << name << "\t";
cout << balance << "원\t";
cout << date << endl;
}
};
void exam1()
{
Account acc1(1111, "홍길동", 1000, "2023-11-06");
Account acc2(2222, "김길동",  "2023-11-09"); // 잔액은 초기화 안해서 0으로 생성자에 의해 초기화

acc1.Print();
acc2.Print();

acc1.input_money(1000);
acc2.input_money(5000);

acc1.Print();
acc2.Print();
}
void exam2()
{
Account* acc1 = new Account(1111, "홍길동", 1000, "2023-11-06");
Account* acc2 = new Account(2222, "김길동", "2023-11-09"); 

acc1->Print(); //역참조
acc2->Print(); 

acc1->input_money(1000);
acc2->input_money(5000);

acc1->Print();
acc2->Print();

delete acc1;
delete acc2;

}
int main()
{
exam2();

return 0;
}