(load "interface pour transmission de message_table.scm") ;;; ------- classe speaker --- (creer-classe 'speaker #f '(name) `((say . ,(lambda (self stuff) (display stuff) (newline))))) (define (make-speaker name) (new 'speaker (cons 'name name))) ;;; ------------------- (define Georges (make-speaker "Georges")) (printf "~%~%Test avec Georges~%") (ask Georges 'say '(Le ciel est bleu)) ;;; ------ classe lecturer ----- (creer-classe 'lecturer 'speaker null `((lecture . ,(lambda (self stuff) (ask self 'say stuff) (ask self 'say '(Vous ne devriez pas prendre des notes)))))) (define (make-lecturer name) (new 'lecturer (cons 'name name))) ;;; ------ classe lecturer ----- (define barbara (make-lecturer "Barbara")) (printf "~%~%Test avec Barbara~%") (ask barbara 'say '(Le ciel est bleu)) (newline) (ask barbara 'lecture '(Le ciel est bleu)) ;;; ------ classe arrogant-lecturer ----- (creer-classe 'arrogant-lecturer 'lecturer null `((say . ,(lambda (self stuff) (ask (ask self 'super) 'say (append '(Il est evident que) stuff)))))) (define (make-arrogant-lecturer name) (new 'arrogant-lecturer (cons 'name name))) ;;; ----------- (define Pierre (make-arrogant-lecturer "Pierre")) (printf "~%~%Test avec Pierre~%") (ask Pierre 'say '(Le ciel est bleu)) (newline) (ask Pierre 'lecture '(Le ciel est bleu)) (ask Pierre 'name) ;(ask Pierre 'sing) ;(ask (new 'arrogant-lecturer) 'name)