728x90

OOP: Object Oriented Programing
Class: 구조체가 확장 된 것 

타입이 다른 변수 뿐만 아니라 함수까지 포함 ㄱㄴ

 

#include <iostream>

using namespace std;

class Car {
	bool poweron;
	string colour;
	int wheel;
	int speed;
	bool wiperon;
};
int main() {

	return 0;


}

 

함수 오버로딩(overloading)

 

중복가능: 다중정의

- 인수의 자료형이나 개수가 다름 동일한 이름의 함수를 여러개 정의하고 사용할수 있음

- 매개변수의 선언 형태를 이용하여 찾는다

- 매개변수의 자료형이나 개수가 달라야함

 

매개변수와 부분적 디폴트값 설정

- 반드시 오른쪽 매개변수의 디폴트값부터 채우는 형태로 정의해야함

- 함수에 전달되는 인수는 왼쪽에서부터 오른쪽으로 채워짐

 

 

요약

클래스

- 객체가 아니라 객체의 설계도이다

- 변수와 형은 같음

- 자체로는 값저장 ㅂㄱㄴ

특징 4가지

1. 캡슐화

- 클래스 안에 속하는 여러 변수나 함수를 하나의 클래스로 묶어줌

 

2. 은닉화

- 클래스 안에 속하는 변수나 함수는 원하는 부분만 외부에 공개하거나 비공개 할수 있음

(public, private)

 

3. 상속성

- 클래스간의 부모, 자식관계 형성 ㄱㄴ

- 자식 클래스는 부모 클래스의 멤버 강속가능. 근데 private은 ㅂㄱㄴ

 

4. 다형성

- 부모자식간에 형변환 성질

 

 

class접근 지정자

public

- 모든 맴버 접근, 멤버 변수 사용 ㄱㄴ

 

private

- 멤버 변수나 함수 외부 사용 ㅂㄱㄴ

- 클래스 맴버 함수 안에서는 사용 ㄱㄴ

 

protected 생성자 (Constructor)

- private와 같은 속성

- 상속관계일때 상위클래스의 멤버를 하위 클래스에서 private속성으로 사용 ㄱㄴ

 

Instance(인스턴스)

- 클래스로 실제 객체 만들기

- 메모리에 공간 만들기

- 변수 명 필요함

기본 형식 - 클래스명 변수명; //메모리에 객체가 만들어져 있는 주소가 담겨져있다

 

 

예제:

#include <iostream>

using namespace std;


class TV {

public: //어디서든 접근/사용가능한 함수
	bool poweron; //bool: 참거짓 나타냄 거짓=0 참=1
	int channel;
	int volume;

	void on() {
		poweron = true;
		cout << "TV 전원이 켜집니당" << endl;
	}
	void off() {
		poweron = false;
		cout << "전원꺼짐" << endl;
	}

	void setchannel(int ch)
	{
		if (ch >= 1 && ch <= 900)
		{
			channel = ch;
			cout << "채널이" << ch << "로 바뀌었습니다" << endl;
		}
	}

	void setvolume(int vol)
	{
		if (vol >= 0 && vol <= 30)
		{
			volume = vol;
			cout << "볼륨이" << vol << "로 바뀌었습니다" << endl;
		}
	}

};

int main() {
	TV samsung;//메모리에 삼성이라는 객체명으로 인스턴스화

	samsung.poweron = true;
	samsung.channel = 20;
	samsung.volume = 5;

	cout << "기본 전원 상태는: " << samsung.poweron << endl;
	cout << "기본 채녈 번호는: " << samsung.channel << endl;
	cout << "기본 볼륨 크기는: " << samsung.volume << endl;
	cout << "------------------------" << endl;

}

 

같은 변수나 함수를 계속 사용할수 있다

	TV LG;

	LG.poweron = false;
	LG.channel = 100;
	LG.volume = 30;

	cout << "기본 전원 상태는: " << LG.poweron << endl;
	cout << "기본 채녈 번호는: " << LG.channel << endl;
	cout << "기본 볼륨 크기는: " << LG.volume << endl;
	cout << "------------------------" << endl;

이렇게 lg도 추가가능

 

 

함수도 끌어다 쓸 수 있다. 

#include <iostream>

using namespace std;


class TV {

public: //어디서든 접근/사용가능한 함수
	bool poweron; //bool: 참거짓 나타냄 거짓=0 참=1
	int channel;
	int volume;

	void on() {
		poweron = true;
		cout << "TV 전원이 켜집니당" << endl;
	}
	void off() {
		poweron = false;
		cout << "전원꺼짐" << endl;
	}

	void setchannel(int ch)
	{
		if (ch >= 1 && ch <= 900)
		{
			channel = ch;
			cout << "채널이" << ch << "로 바뀌었습니다" << endl;
		}
	}

	void setvolume(int vol)
	{
		if (vol >= 0 && vol <= 30)
		{
			volume = vol;
			cout << "볼륨이" << vol << "로 바뀌었습니다" << endl;
		}
	}

};

int main() {

	TV samsung;//메모리에 삼성이라는 객체명으로 인스턴스화

	samsung.poweron = true;
	samsung.channel = 20;
	samsung.volume = 5;

	cout << "기본 전원 상태는: " << samsung.poweron << endl;
	cout << "기본 채녈 번호는: " << samsung.channel << endl;
	cout << "기본 볼륨 크기는: " << samsung.volume << endl;
	cout << "------------------------" << endl;

	TV LG;

	LG.poweron = false;
	LG.channel = 100;
	LG.volume = 30;

	cout << "기본 전원 상태는: " << LG.poweron << endl;
	cout << "기본 채녈 번호는: " << LG.channel << endl;
	cout << "기본 볼륨 크기는: " << LG.volume << endl;
	cout << "------------------------" << endl;

	LG.setchannel(150);
	LG.on();
	LG.setvolume(20);

}

 

728x90

'언어는 과-학인가요? > C++' 카테고리의 다른 글

Protected, Private, Public 함수 : 이동시키기  (0) 2020.10.31
상속  (0) 2020.10.31
생성자와 소멸자 (constructor and destructor)  (0) 2020.10.24
Namespace (이름공간)/ String  (0) 2020.10.10
C++ 입문  (0) 2020.10.10

+ Recent posts