사자자리

[C++] 추상화와 클래스 본문

C++/C++ 이론

[C++] 추상화와 클래스

renne 2022. 8. 17. 23:04

추상화

 - 어떤 객체의 공통된 특징을 간결한 방식으로 이해하기 쉽게 표현하는 것

 

클래스

 - 추상화를 사용자 정의 데이터형으로 변환해주는 수단

 

데이터 은닉

 - 데이터에 직접 접근하지 못하는 것

 - private 멤버의 값을 변경하려면, 반드시 public에 선언된 함수를 통해서 변경해야 한다.

 

private public
 - 비공개 멤버
 - 클래스 내에서만 접근 가능
 - 공개 멤버
 - 클래스 외부에서도 접근 가능

 

//Stock.h
#ifndef STOCK
#define STOCK
#include <iostream>
using namespace std;

class Stock
{
private:
	string name;
	int shares;
	float share_val;
	double total_val;
	void set_total() { total_val = shares * share_val; }

public:
	void acquire(string, int, float);
	void buy(int, float);
	void sell(int, float);
	void update(float);
	void show();
	Stock();
	~Stock();
};
#endif // !STOCK
//func.cpp
#include "Stock.h"
//사용 범위 결정 연산자 ::
void Stock::acquire(string co, int n, float pr) {
	name = co;
	shares = n;
	share_val = pr;
	set_total();
}

void Stock::buy(int n, float pr) {
	shares += n;
	share_val = pr;
	set_total();
}
void Stock::sell(int n, float pr) {
	shares -= n;
	share_val = pr;
	set_total();
}
void Stock::update(float pr) {
	share_val = pr;
	set_total();
}
void Stock::show() {
	cout << "회사 명 : " << name << endl;
	cout << "주식 수 : " << shares << endl;
	cout << "주가 : " << share_val << endl;
	cout << "주식 총 가치 : " << total_val << endl;
}

Stock::Stock() {
}

Stock::~Stock()
{

}
//main.cpp
#include <iostream>
#include "Stock.h"

int main() {
	Stock temp;
	temp.acquire("Regulus", 100, 1000);
	temp.show();
	temp.buy(10, 1200);
	temp.show();
	temp.sell(5, 800);
	temp.show();

	return 0;
}

'C++ > C++ 이론' 카테고리의 다른 글

[C++] this 포인터와 클래스 객체 배열  (0) 2022.08.17
[C++] 클래스 생성자와 소멸자  (0) 2022.08.17
[C++] 분할 컴파일: #ifndef & #endif  (0) 2022.08.17
[C++] 함수의 활용  (0) 2022.08.05
[C++] 함수  (0) 2022.08.03
Comments