home *** CD-ROM | disk | FTP | other *** search
- ; From: Dat Thuc Nguyen
- ; Newsgroups: comp.protocols.kermit.misc
- ; Subject: Inheritance in Kermit 95
- ; Date: Mon, 29 Mar 1999 15:57:20 GMT
- ; URL: http://www.smalltickle.com
- ;
- ; NO OBJECT-ORIENTED PROGRAMMING LEAVES HOME WITHOUT INHERITANCE.
- ; THE FOLLOWING SCRIPT DISPLAYS INHERITANCE IN KERMIT 95.
- ;
- ; CLASS PERSON IS THE BASE CLASS.
- ;
- ; CLASS EMPLOYEE DERIVES FROM CLASS PERSON. CLASS EMPLOYEE HAS
- ; ALL ATTRIBUTES AND BEHAVIOR OF CLASS PERSON AND SOME EXTRAS
- ;
- ; CLASS MANAGER DERIVES FROM CLASS EMPLOYEE. CLASS MANAGER HAS
- ; ALL ATTRIBUTES AND BEHAVIOR OF CLASS EMPLOYEE AND SOME EXTRAS
- ;
- ; THE KEY OF OBJECT-ORIENTED PROGRAMMING IN KERMIT 95 IS
- ; THE PROPER USAGE OF:
- ;
- ; ASSIGN : ASSIGN EXPANDS ONLY R-VALUE VARIABLE.
- ; _ASSIGN : _ASSIGN EXPANDS BOTH L-VALUE AND R-VALUE VARIABLES.
- ; DEFINE : DEFINE EXPANDS NEITHER L-VALUE NOR _R-VALUE VARIABLES.
- ; _DEFINE : _DEFINE EXPANDS ONLY L-VALUE VARIABLE.
- ;
- define PERSON {
- local self
- assign self \%1
- _assign \m(self).age \%2
- _assign \m(self).job \%3
- _assign \m(self).introduce {
- echo My name is \fcap(\%1)
- echo I am \\m(\m(self).age) years old
- echo I am a(n) \\m(\m(self).job)
- }
- _assign \m(self).destroy {
- _define \m(self).age
- _define \m(self).job
- _define \m(self).introduce
- _define \m(self).destroy
- }
- }
-
- define EMPLOYEE {
- local self super \%s
- assign self \%1
- assign super person ; DERIVES FROM PERSON
- \m(super) {\%1} {\%2} {\%3} ; CREATE BASE COMPONENTS
- assign \%s \m(self).introduce ; SAVE SUPER CLASS METHOD
- ; introduce
- _assign \m(self).introduce { ; OVERLOAD METHOD introduce
- \m(\%s) ; EXEC SUPER CLASS METHOD FIRST
- echo I work for \%4 ; AND THIS EXTRA
- }
- }
-
- define MANAGER {
- local self super \%s
- assign self \%1
- assign super employee ; DERIVES FROM EMPLOYEE
- \m(super) {\%1} {\%2} {\%3} {\%4} ; CREATE BASE COMPONENTS
- assign \%s \m(self).introduce ; SAVE SUPER CLASS METHOD
- _assign \m(self).introduce { ; OVERLOAD METHOD introduce
- \m(\%s) ; EXEC SUPER CLASS METHOD FIRST
- echo I am a manager ; AND THIS EXTRA
- }
- _define \m(self).fire { ; ADD THE NEW METHOD fire
- echo {\%1, you are fired}
- }
- _define \m(self).offer { ; ADD THE NEW METHOD hire
- echo {\%1, I would like to offer you \%2}
- }
- }
-
- ; JANE IS A 27 YEARS YOUNG STUDENT
- person Jane 27 student
- Jane.introduce
- echo
-
- ; MARK IS A 36 YEARS OLD PROGRAMMER WORKING FOR BT&T
- employee Mark 36 programmer BT&T
- Mark.introduce
- echo
-
- ; MARIO IS A 24 YEARS OLD PROGRAMMERS WORKING FOR METAS
- employee Mario 24 programmer METAS
- Mario.introduce
- echo
-
- ; BOB IS A 47 YEARS OLD ENGINEER WORKING FOR METAS AS A MANAGER
- manager Bob 47 Engineer METAS
- Bob.introduce
- echo
-
- ; MARIO KNOWS NO DIFFERENCE BETWEEN DEFINE AND _DEFINE.
- ; Bob DECIDES TO FIRE HIM:
- Bob.fire Mario
- echo
-
- ; MARK KNOWS THE DIFFERENCE BETWEEN ASSIGN AND _ASSIGN.
- ; Bob DECIDES TO MAKE HIM AN OFFER:
- Bob.offer Mark 100K
- echo
-
- end
-