기록장

[C++] 객체지향과 절자지향 코드 비교 (TV 전원, 볼륨, 채널) 본문

코딩 공부/C++

[C++] 객체지향과 절자지향 코드 비교 (TV 전원, 볼륨, 채널)

민j 2023. 3. 19. 16:43
#include <iostream>
using namespace std;

void turnOn(bool & on) {
	on = true;
}
void turnOff(bool & on) {
	on = false;
}
void setChannel(bool & on, int & channel, int & newChannel) {
	if (on && newChannel >= 1 && newChannel <= 120)
		channel = newChannel;
}
void setVolume(bool & on, int & volumeLevel, int newVolumeLevel) {
	if (on && newVolumeLevel >= 1 && newVolumeLevel <= 7)
		volumeLevel = newVolumeLevel;
}
void channelUp(bool & on, int & channel) {
	if (on && channel < 120)
		channel++;
}
void channelDown(bool & on, int & channel) {
	if (on && channel > 1)
		channel--;
}
void volumeUp(bool & on, int & volumeLevel) {
	if (on && volumeLevel < 7)
		volumeLevel++;
}
void volumeDown(bool & on, int & volumeLevel) {
	if (on && volumeLevel > 1)
		volumeLevel--;
}

int main()
{
	// tv1
	bool tv1On = false;
	int tv1Channel = 1;
	int tv1VolumeLevel = 1;

	turnOn(tv1On);
	int newChannel = 30;
	setChannel(tv1On, tv1Channel, newChannel);
	int newVolume = 3;
	setVolume(tv1On, tv1VolumeLevel, newVolume);

	// tv2
	bool tv2On = false;
	int tv2Channel = 1;
	int tv2VolumeLevel = 1;

	turnOn(tv2On);
	channelUp(tv2On, tv2Channel);
	channelUp(tv2On, tv2Channel);
	volumeUp(tv2On, tv2VolumeLevel);

	cout << "tv1's channel is " << tv1Channel
		<< " and volume level is " << tv1VolumeLevel << endl;
	cout << "tv2's channel is " << tv2Channel
		<< " and volume level is " << tv2VolumeLevel << endl;
	
	return 0;
}

절차지향 코드.

 

#include <iostream>
using namespace std;

class TV
{
public:
	int channel;
	int volumeLevel;
	bool on;

	TV()
	{
		channel = 1;
		volumeLevel = 1;
		on = false;
	}
	void turnOn() {
		on = true;
	}
	void turnOff() {
		on = false;
	}
	void setChannel(int newChannel) {
		if (on && newChannel >= 1 && newChannel <= 120)
			channel = newChannel;
	}
	void setVolume(int newVolumeLevel) {
		if (on && newVolumeLevel >= 1 && newVolumeLevel <= 7)
			volumeLevel = newVolumeLevel;
	}
	void channelUp() {
		if (on && channel < 120)
			channel++;
	}
	void channelDown() {
		if (on && channel > 1)
			channel--;
	}
	void volumeUp() {
		if (on && volumeLevel < 7)
			volumeLevel++;
	}
	void volumeDown() {
		if (on && volumeLevel > 1)
			volumeLevel--;
	}
};

int main()
{
	TV tv1;
	tv1.turnOn();
	tv1.setChannel(30);
	tv1.setVolume(3);

	TV tv2;
	tv2.turnOn();
	tv2.channelUp();
	tv2.channelUp();
	tv2.volumeUp();

	cout << "tv1's channel is " << tv1.channel
		<< " and volume level is " << tv1.volumeLevel << endl;
	cout << "tv2's channel is " << tv2.channel
		<< " and volume level is " << tv2.volumeLevel << endl;

	return 0;
}

객체지향 코드