42seoul/projects

[C++] interfaces ( ์ธํ„ฐํŽ˜์ด์Šค )

moaoh 2023. 9. 13. 05:12

interfaces ( ์ธํ„ฐํŽ˜์ด์Šค )

"ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•œ ์ถ”์ƒ ํ˜•์‹”์ด๋ผ๊ณ  ๋ช…์‹œ๊ฐ€ ๋˜์–ด์žˆ๋‹ค.

#include <iostream>

class Ihello
{
public:
	virtual void print() = 0;
};

class korean : public Ihello
{
public:
	virtual void print() {
		std::cout << "์•ˆ๋…•ํ•˜์„ธ์š”." << std::endl;
	}
};

class english : public Ihello
{
public:
	virtual void print() {
		std::cout << "hello" << std::endl;
	}
};

int main(void)
{
	korean ko;
	english eng;

	ko.print();
	eng.print();
}

interfaces์˜ ๊ฐœ๋…์„ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋จผ์ € ์‚ดํŽด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค.

์œ„์— ์ฝ”๋“œ์— ๊ฒฝ์šฐ Ihello ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ ๋‚˜๋ผ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์ธ์‚ฌ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ์ผ๋•Œ

Ihello๋ฅผ ์ƒ์†๋ฐ›๋Š” korean๊ณผ english๊ฐ€ ์žˆ๋‹ค.

์ด๋Ÿด๊ฒฝ์šฐ์— korean๊ณผ english๋Š” print๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์ธ์‚ฌ๋ง์„ ์ถœ๋ ฅ์„ ํ•ด์•ผํ•˜๋‹ˆ

Ihello๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‘๋Š” ๋ฐฉ์‹์„ interfaces๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

interfaces

class ICharacter
{
public:
	virtual ~ICharacter() {}
	virtual std::string const & getName() const = 0;
	virtual void equip(AMateria* m) = 0;
	virtual void unequip(int idx) = 0;
	virtual void use(int idx, ICharacter& target) = 0;
};

interfaces์— ๊ฒฝ์šฐ ์ถ”์ƒ ํด๋ž˜์Šค์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ฐ€์ƒ ์†Œ๋ฉธ์ž์™€ ์ˆœ์ˆ˜ ๊ฐ€์ƒํ•จ์ˆ˜๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค.

 

class Ihello;
class MateriaSource;
class ICharacter

์™œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ interfaces๋กœ ์‚ฌ์šฉํ•  ํด๋ž˜์Šค๋“ค์€ ๋งŒ๋“ค๋•Œ ํด๋ž˜์Šค๋ช… ๋งจ ์•ž์— I๋ฅผ ๋ถ™์ด๋Š” ๊ทœ์น™์ด ์žˆ๋Š”๊ฑฐ ๊ฐ™๋‹ค.