#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
클래스란?
추상화를 사용자 정의 데이터형으로 변환해주는 수단
추상화란 무엇인가?
어떠한 객체를 사실적으로 표현하는 것이 아니라,
공통된 특징을 간결한 방식으로, 이해하기 쉽게 표현하는 것
1. 클래스 선언
class 클래스이름
{
접근제어지시자1:
멤버변수1의타입 멤버변수1의이름;
멤버변수2의타입 멤버변수2의이름;
...
멤버함수1의 원형
멤버함수2의 원형
...
};
2. 클래서 매소드 정의
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();
};
private과 public은 클래스의 멤버에 대한 접근을 제어하는것이다.
private의 값을 변경하고 싶다면 public을 통해서 변경해야 한다.
public의 멤버함수를 통해서만 접근할 수 있기 때문에
직접적인 접근을 막는다.
이것을 데이터 은닉이라고 하며 추상화의 예 중에 하나다.
3.멤버 함수의 정의
클래스에서 멤버 함수를 정의하는 방법은 일반 함수의 정의와 크게 다르지 않습니다.
C++에서는 멤버 함수를 클래스의 선언 안이나 밖에서 모두 정의할 수 있도록 허용합니다.
void Book::Move(int page) { current_page_ = page; }
반환타입 클래스이름::멤버함수이름(매개변수목록) { 함수의 몸체; }
클래스의 선언 밖에서 멤버 함수를 정의할 때에는 범위 지정 연산자(::)를 사용하여 해당 함수가 어느 클래스에 속하는지를 명시해야 합니다.
전체 코드
#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();
};
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()
{
}
int main() {
Stock temp;
temp.acquire("Panda", 100, 1000);
temp.show();
temp.buy(10, 1200);
temp.show();
temp.sell(5, 800);
temp.show();
return 0;
}
분할 컴파일
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
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 "Stock.h"
int main() {
Stock temp;
temp.acquire("Panda", 100, 1000);
temp.show();
temp.buy(10, 1200);
temp.show();
temp.sell(5, 800);
temp.show();
return 0;
}
'[C++]코딩연습장' 카테고리의 다른 글
C++ [분할컴파일] (0) | 2021.02.22 |
---|---|
C++ [참조 변수] [함수 템플릿] (0) | 2021.02.21 |
C++ [Function] (0) | 2021.02.21 |
C++ [포인터와 메모리 해제] [포인터 연산] [동적 구조체] (0) | 2021.02.21 |
C++ [구조체] (0) | 2021.02.21 |