brunch

You can make anything
by writing

C.S.Lewis

by 공인식 Aug 11. 2024

프랜차이즈는 클래스다.

프랜차이즈 이야기를 시작하려고 하면서 치킨집 이름을 검색했는데, 유명한 것을 피해 떠오르는 이름 몇 개도 이미 사용하는 있을 정도로 우리나라에는 치킨집이 참 많다. 공정거래위원회 가맹사업 통계 발표 자료의 가맹점 6개 카테고리 중 하나를 당당히 차지하고 있을 만큼, ‘치킨집’은 우리가 외식을 할 때나 배달 주문을 할 때 금방 떠올릴 수 있는 숙한 프랜차이즈다.


영 단어 ‘Class’에는 많은 의미가 있어서 사람에 따라 익숙한 제각각의 의미를 제일 먼저 떠올리게 될 텐데, 개발자라면 영 단어가 가진 의미 대신 본인이 사용하는 언어가 Class를 지원하는지 그렇지 않은지 등의 것들을 먼저 떠올릴 수 있다.


프랜차이즈와 클래스의 유사점

치킨 프랜차이즈는 ‘닭을 튀겨 판매하기 위해 최적화된 시장 정보와 사업 방법을 제공’한다.
프로그래밍 언어에서의 Class는 ‘특정 역할을 수행하기 위해 생성되어 재 사용 가능한 정보와 기능을 제공’한다.


어떤가? 프랜차이즈의 역할과 Class의 역할은 매우 비슷하다. 닭을 튀겨 판매하는 것은 프로그래밍된 것이 실행되는 과정으로 볼 수 있으며, 시장 정보와 사업 방법을 Class의 속성과 메서드에 매칭시킬 수 있다. 프랜차이즈는 ‘사업 행위에 최적화된 시장 정보와 사업 방법을 제공’한다. 이때, 가맹본부는 Class 혹은 생성자가 되고, 가맹점은 Class의 인스턴스(Class의 사본)로 볼 수 있다. Class 하나가 제대로 설계되었다면 여러 인스턴스들도 제대로 동작할 것이고, 마찬가지로 가맹점에서 문제가 발생한다면 가맹점 자체도 점검이 필요하겠지만 가맹본부의 사업 설계 또한 점검이 필요할 수 있다.


클래스(Class)

프랜차이즈도 하나의 회사다. 아래 JavaScript 코드는 ‘회사(Company)’라는 클래스의 모양과, 프랜차이즈 클래스가 그 클래스를 어떻게 상속받아 또 다른 하나의 클래스가 되는지 보여주는 아주 간단한 예시다.


``` javascript

class Company {
     constructor(name, area) {
         this.name = name;
         this.area = area;
     }
}

class Franchise extends Company {
     constructor(name, area, source) {
         super(name, area);
         this.source = source;
     }
}

// 내 회사는 계육을 취급하는 요식업계의 프랜차이즈 본부로, 이름은 ‘개가 쫓던 닭 치킨’이다.
const myCompany = new Franchise('개가 쫓던 닭 치킨', '요식업', '계육');

```


클래스 상속

비개발자가 클래스에 대한 이해 없이도 ‘하나의 가맹점 운영 경험으로 또 다른 가맹점을 쉽게 운영할 수 있다’ 면, 프로그래밍에서 클래스가 하는 역할 또한 은연중에 터득하게 된 것이다. 그리고 더 나아가 ‘가맹본부 하나 할 수 있겠는데?’ 하는 상태가 될 수도 있다. 하나 이상의 클래스가 상속된 것이다.


아, 치킨 가맹본부를 나도 하나 만들겠다며 홍보를 위해 이런 이야기를 하는 것은 아니다. 인상 깊게 본 영화나 드라마의 클래스를 모방해(상속받아) 내 작품을 만들어 보고 싶은 생각은 있어도.


요즘, OTT 시장에서 우리나라 콘텐츠의 인기가 정말 대단하다는 것을 느낀다. 문화 콘텐츠의 제작 방식 또한 프로그래밍에서의 클래스에 대한 이해가 수반된다면 더욱 쉽고 빠르게 양질의 콘텐츠가 제작되는 환경이 마련될 수 있지 않을까 짐작된다. 어쩌면 이미 상속과 복제가 가능한 괜찮은 클래스가 존재하기 때문에 지금과 같은 경쟁력을 가졌는지도 모르고.

이전 01화 패션은 변수 선언하기다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari