Path: news.net.uni-c.dk!not-for-mail From: nospam2159@cs.au.dk (Peter von der =?iso-8859-1?q?Ah=E9?=) Newsgroups: daimi.beta,daimi.dpass Subject: Re: Cycles imellem Units Followup-To: daimi.beta Date: 19 Oct 2002 17:55:47 +0200 Organization: University of Aarhus, Department of Computer Science (DAIMI) Lines: 67 Sender: nospam2159@horse02.cs.au.dk Message-ID: References: <3DA960C9.544587ED@cs.au.dk> <3DA98B60.FC693674@cs.au.dk> NNTP-Posting-Host: horse02.cs.au.dk Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.net.uni-c.dk 1035042968 10308 130.225.18.242 (19 Oct 2002 15:56:08 GMT) X-Complaints-To: usenet@news.net.uni-c.dk NNTP-Posting-Date: Sat, 19 Oct 2002 15:56:08 +0000 (UTC) X-Attribution: Ahe User-Agent: Gnus/5.090002 (Oort Gnus v0.02) Emacs/20.7 Xref: news.net.uni-c.dk daimi.beta:10583 daimi.dpass:904 >>>>> "JE" == Jacob Eskildsen writes: JE> Dernaest, har jeg proevet at lave et interface/implementations JE> del, som burde kunne faa det til at virke. Det kan jeg dog heller JE> ikke. Der er noget du har misforstået. Der er ikke interfaces i BETA. Der er kun en ting og det er "patterns". BETA er ikke Java. Fragmentsystemet er ikke ligesom noget du kender fra Java eller C. I Java er en classes næsten synonym med en fil, det er ikke tilfældet i BETA. Du kan ikke umiddelbart have to klasser der skal kende til hinanden i forskellige filer. Tilgengæld kan du "gemme" implementationsdetaljerne næsten som du lyster, fx: foo.bet: ORIGIN '~beta/basiclib/betænv'; INCLUDE 'classes'; -- program: descriptor -- (# aClass1: ^class1; aClass2: ^class2; do &class1->aClass2[]; (* OTL: Hvorfor er dette korrekt? *) aClass2.method #) classes.bet: ORIGIN '~beta/basiclib/betænv'; BODY 'class1' 'class2'; -- lib: attributes -- class1: (# aClass2: ^Class2; method:(# <> #) <> exit aClass2[] #); class2: (# aClass1: ^Class1; method:(# <> #) <> exit aClass1[] #) class1.bet: ORIGIN 'classes'; -- Class1doPart: doPart -- do &Class2[]->aClass2[] -- Class1method: doPart -- do 'Method on Class1 called' -> putLine class2.bet: ORIGIN 'classes'; -- Class2doPart: doPart -- do &Class1[]->aClass1[] -- Class2method: doPart -- do 'Method on Class2 called' -> putLine -- YMMV