From Object-Oriented to Aspect-Oriented Databases
- 格式:pdf
- 大小:115.48 KB
- 文档页数:10
The Oxford 3000 wordlist▪a, an indefinite article ▪abandon v.▪abandoned adj.▪ability n.▪able adj.▪unable adj.▪about adv.,prep.▪above prep.,adv.▪abroad adv.▪absence n.▪absent adj.▪absolute adj.▪absolutely adv.▪absorb v.▪abuse n.,v.▪academic adj.▪accent n.▪accept v.▪acceptable adj.▪unacceptable adj.▪access n.▪accident n.▪by accident▪accidental adj.▪accidentally adv.▪accommodation n.▪accompany v.▪according to prep.▪account n.,v.▪accurate adj.▪accurately adv.▪accuse v.▪achieve v.▪achievement n.▪acid n.▪acknowledge v.▪acquire v.▪across adv.,prep.▪act n.,v.▪action n.▪take action▪active adj.▪actively adv.▪activity n.▪actor, actress n.▪actual adj.▪actually adv.▪ad advertisement▪adapt v.▪add v.▪addition n.▪in addition (to)▪additional adj.▪address n.,v.▪adequate adj.▪adequately adv.▪adjust v.▪admiration n.▪admire v.▪admit v.▪adopt v.▪adult n.,adj.▪advance n.,v.▪advanced adj.▪in advance▪advantage n.▪take advantage of▪adventure n.▪advertise v.▪advertising n.▪advertisement (also ad, advert) n.▪advice n.▪advise v.▪affair n.▪affect v.▪affection n.▪afford v.▪afraid adj.▪after prep.,conj.,adv.▪afternoon n.▪afterwards (especially BrE;NAmE usually afterward) adv.▪again adv.▪against prep.▪age n.▪aged adj.▪agency n.▪agent n.▪aggressive adj.▪ago adv.▪agree v.▪agreement n.▪ahead adv.▪aid n.,v.▪aim n.,v.▪air n.▪aircraft n.▪airport n.▪alarm n.,v.▪alarming adj.▪alarmed adj.▪alcohol n.▪alcoholic adj., n.▪alive adj.▪all det.,pron.,adv.▪allow v.▪all right adj.,adv.,exclamation▪ally n., v.▪allied adj.▪almost adv.▪alone adj.,adv.▪along prep.,adv.▪alongside prep.,adv.▪aloud adv.▪alphabet n.▪alphabetical adj.▪alphabetically adv.▪already adv.▪also adv.▪alter v.▪alternative n.,adj.▪alternatively adv.▪although conj.▪altogether adv.▪always adv.▪ a.m. (NAmE also A.M.) abbr.▪amaze v.▪amazing adj.▪amazed adj.▪ambition n.▪ambulance n.▪among (also amongst) prep.▪amount n., v.▪amuse v.▪amusing adj.▪amused adj.▪an a, an▪analyse (BrE) (NAmE analyze) v.▪analysis n.▪ancient adj.▪and conj.▪anger n.▪angle n.▪angry adj.▪angrily adv.▪animal n.▪ankle n.▪anniversary n.▪announce v.▪annoy v.▪annoying adj.▪annoyed adj.▪annual adj.▪annually adv.▪another det.,pron.▪answer n.,v.▪anti- prefix▪anticipate v.▪anxiety n.▪anxious adj.▪anxiously adv.▪any det.,pron.,adv.▪anyone (also anybody) pron.▪anything pron.▪anyway adv.▪anywhere adv.▪apart adv.▪apart from (also aside from especially in NAmE) prep.▪apartment n. (especially NAmE) ▪apologize (BrE also -ise) v.▪apparent adj.▪apparently adv.▪appeal n.,v.▪appear v.▪appearance n.▪apple n.▪application n.▪apply v.▪appoint v.▪appointment n.▪appreciate v.▪approach v.,n.▪appropriate adj.▪approval n.▪approve (of) v.▪approving adj.▪approximate adj.▪approximately adv.▪April n. (abbr. Apr.) ▪area n.▪argue v.▪argument n.▪arise v.▪arm n.,v.▪arms n.▪armed adj.▪army n.▪around adv.,prep.▪arrange v.▪arrangement n.▪arrest v.,n.▪arrival n.▪arrive v.▪arrow n.▪art n.▪article n.▪artificial adj.▪artificially adv.▪artist n.▪artistic adj.▪as prep.,adv.,conj.▪ashamed adj.▪aside adv.▪aside from apart from ▪ask v.▪asleep adj.▪fall asleep▪aspect n.▪assist v.▪assistance n.▪assistant n.,adj.▪associate v.▪associated with▪association n.▪assume v.▪assure v.▪at prep.▪atmosphere n.▪atom n.▪attach v.▪attached adj.▪attack n.,v.▪attempt n.,v.▪attempted adj.▪attend v.▪attention n.▪pay attention▪attitude n.▪attorney n. (especially NAmE) ▪attract v.▪attraction n.▪attractive adj.▪audience n.▪August n. (abbr. Aug.)▪aunt n.▪author n.▪authority n.▪automatic adj.▪automatically adv.▪autumn n. (especially BrE)▪available adj.▪average adj.,n.▪avoid v.▪awake adj.▪award n.,v.▪aware adj.▪away adv.▪awful adj.▪awfully adv.▪awkward adj.▪awkwardly adv.▪baby n.▪back n.,adj.,adv.,v.▪background n.▪backwards (also backward especially in NAmE) adv.▪backward adj.▪bacteria n.▪bad adj.▪go bad▪badly adv.▪bad-tempered adj.▪bag n.▪baggage n. (especially NAmE) ▪bake v.▪balance n.,v.▪ball n.▪ban v.,n.▪band n.▪bandage n., v.▪bank n.▪bar n.▪bargain n.▪barrier n.▪base n.,v.▪based on▪basic adj.▪basically adv.▪basis n.▪bath n.▪bathroom n.▪battery n.▪battle n.▪bay n.▪be v.,auxiliary v.▪beach n.▪beak n.▪bear v.▪beard n.▪beat n.,v.▪beautiful adj.▪beautifully adv.▪beauty n.▪because conj.▪because of prep.▪become v.▪bed n.▪bedroom n.▪beef n.▪beer n.▪before prep.,conj.,adv.▪begin v.▪beginning n.▪behalf n.: on behalf of sb, on sb’s behalf (BrE) (NAmE in behalf of sb, in sb’s behalf)▪behave v.▪behaviour (BrE) (NAmE behavior) n.▪behind prep.,adv.▪belief n.▪believe v.▪bell n.▪belong v.▪below prep.,adv.▪belt n.▪bend v.,n.▪bent adj.▪beneath prep.,adv.▪benefit n.,v.▪beside prep.▪bet v.,n.▪betting n.▪better, best good, well▪between prep.,adv.▪beyond prep.,adv.▪bicycle (also bike) n.▪bid v.,n.▪big adj.▪bill n.▪bin n. (BrE)▪biology n.▪bird n.▪birth n.▪give birth (to)▪birthday n.▪biscuit n. (BrE)▪bit n. (especially BrE)▪ a bit▪bite v.,n.▪bitter adj.▪bitterly adv.▪black adj.,n.▪blade n.▪blame v.,n.▪blank adj., n.▪blankly adv.▪blind adj.▪block n.,v.▪blonde adj., n., blond adj.▪blood n.▪blow v.,n.▪blue adj.,n.▪board n., v.▪on board▪boat n.▪body n.▪boil v.▪bomb n.,v.▪bone n.▪book n.,v.▪boot n.▪border n.▪bore v.▪boring adj.▪bored adj.▪born: be born v.▪borrow v.▪boss n.▪both det.,pron.▪bother v.▪bottle n.▪bottom n.,adj.▪bound adj.: bound to ▪bowl n.▪box n.▪boy n.▪boyfriend n.▪brain n.▪branch n.▪brand n.▪brave adj.▪bread n.▪break v.,n.▪broken adj.▪breakfast n.▪breast n.▪breath n.▪breathe v.▪breathing n.▪breed v.,n.▪brick n.▪bridge n.▪brief adj.▪briefly adv.▪bright adj.▪brightly adv.▪brilliant adj.▪bring v.▪broad adj.▪broadly adv.▪broadcast v.,n.▪broken break▪brother n.▪brown adj.,n.▪brush n.,v.▪bubble n.▪budget n.▪build v.▪building n.▪bullet n.▪bunch n.▪burn v.▪burnt adj.▪burst v.▪bury v.▪bus n.▪bush n.▪business n.▪businessman, businesswoman n.▪busy adj.▪but conj.▪butter n.▪button n.▪buy v.▪buyer n.▪by prep.,adv.▪bye exclamation▪ c abbr.cent▪cabinet n.▪cable n.▪cake n.▪calculate v.▪calculation n.▪call v.,n.▪be called▪calm adj.,v.,n.▪calmly adv.▪camera n.▪camp n.,v.▪camping n.▪campaign n.▪can modal v.,n.▪cannot▪could modal v.▪cancel v.▪cancer n.▪candidate n.▪candy n. (NAmE) ▪cap n.▪capable (of) adj.▪capacity n.▪capital n.,adj.▪captain n.▪capture v.,n.▪car n.▪card n.▪cardboard n.▪care n.,v.▪take care (of) ▪care for▪career n.▪careful adj.▪carefully adv.▪careless adj.▪carelessly adv.▪carpet n.▪carrot n.▪carry v.▪case n.▪in case (of)▪cash n.▪cast v.,n.▪castle n.▪cat n.▪catch v.▪category n.▪cause n.,v.▪CD n.▪cease v.▪ceiling n.▪celebrate v.▪celebration n.▪cell n.▪cellphone (also cellular phone) n. (especially NAmE)▪cent n. (abbr. c, ct)▪centimetre (BrE) (NAmEcentimeter) n. (abbr. cm)▪central adj.▪centre (BrE) (NAmE center) n.▪century n.▪ceremony n.▪certain adj.,pron.▪certainly adv.▪uncertain adj.▪certificate n.▪chain n., v.▪chair n.▪chairman, chairwoman n.▪challenge n.,v.▪chamber n.▪chance n.▪change v.,n.▪channel n.▪chapter n.▪character n.▪characteristic adj.,n.▪charge n.,v.▪in charge of▪charity n.▪chart n.,v.▪chase v.,n.▪chat v., n.▪cheap adj.▪cheaply adv.▪cheat v.,n.▪check v.,n.▪cheek n.▪cheerful adj.▪cheerfully adv.▪cheese n.▪chemical adj.,n.▪chemist n.▪chemist’s n. (BrE)▪chemistry n.▪cheque n. (BrE) (NAmE check) ▪chest n.▪chew v.▪chicken n.▪chief adj.,n.▪child n.▪chin n.▪chip n.▪chocolate n.▪choice n.▪choose v.▪chop v.▪church n.▪cigarette n.▪cinema n. (especially BrE) ▪circle n.▪circumstance n.▪citizen n.▪city n.▪civil adj.▪claim v.,n.▪clap v., n.▪class n.▪classic adj.,n.▪classroom n.▪clean adj.,v.▪clear adj.,v.▪clearly adv.▪clerk n.▪clever adj.▪click v., n.▪client n.▪climate n.▪climb v.▪climbing n.▪clock n.▪close /kl??s, NAmE klo?s/ adj.▪closely adv.▪close /kl??z, NAmE kl??z/ v.▪closed adj.▪closet n. (especially NAmE) ▪cloth n.▪clothes n.▪clothing n.▪cloud n.▪club n.▪cm abbr.centimetre▪coach n.▪coal n.▪coast n.▪coat n.▪code n.▪coffee n.▪coin n.▪cold adj.,n.▪coldly adv.▪collapse v.,n.▪colleague n.▪collect v.▪collection n.▪college n.▪colour (BrE) (NAmE color) n., v.▪coloured (BrE) (NAmE colored) adj.▪column n.▪combination n.▪combine v.▪come v.▪comedy n.▪comfort n.,v.▪comfortable adj.▪comfortably adv.▪uncomfortable adj.▪command v.,n.▪comment n.,v.▪commercial adj.▪commission n., v.▪commit v.▪commitment n.▪committee n.▪common adj.▪in common▪commonly adv.▪communicate v.▪communication n.▪community n.▪company n.▪compare v.▪comparison n.▪compete v.▪competition n.▪competitive adj.▪complain v.▪complaint n.▪complete adj.,v.▪completely adv.▪complex adj.▪complicate v.▪complicated adj.▪computer n.▪concentrate v.▪concentration n.▪concept n.▪concern v.,n.▪concerned adj.▪concerning prep.▪concert n.▪conclude v.▪conclusion n.▪concrete adj.,n.▪condition n.▪conduct v.,n.▪conference n.▪confidence n.▪confident adj.▪confidently adv.▪confine v.▪confined adj.▪confirm v.▪conflict n.,v.▪confront v.▪confuse v.▪confusing adj.▪confused adj.▪confusion n.▪congratulations n.▪congress n.▪connect v.▪connection n.▪conscious adj.▪unconscious adj.▪consequence n.▪conservative adj.▪consider v.▪considerable adj.▪considerably adv.▪consideration n.▪consist of v.▪constant adj.▪constantly adv.▪construct v.▪construction n.▪consult v.▪consumer n.▪contact n.,v.▪contain v.▪container n.▪contemporary adj.▪content n.▪contest n.▪context n.▪continent n.▪continue v.▪continuous adj.▪continuously adv.▪contract n.,v.▪contrast n.,v.▪contrasting adj.▪contribute v.▪contribution n.▪control n.,v.▪in control (of)▪under control▪controlled adj.▪uncontrolled adj.▪convenient adj.▪convention n.▪conventional adj.▪conversation n.▪convert v.▪convince v.▪cook v.,n.▪cooking n.▪cooker n. (BrE)▪cookie n. (especially NAmE) ▪cool adj.,v.▪cope (with) v.▪copy n.,v.▪core n.▪corner n.▪correct adj.,v.▪correctly adv.▪cost n.,v.▪cottage n.▪cotton n.▪cough v.,n.▪coughing n.▪could can▪council n.▪count v.▪counter n.▪country n.▪countryside n.▪county n.▪couple n.▪ a couple▪courage n.▪course n.▪of course▪court n.▪cousin n.▪cover v.,n.▪covered adj.▪covering n.▪cow n.▪crack n.,v.▪cracked adj.▪craft n.▪crash n.,v.▪crazy adj.▪cream n.,adj.▪create v.▪creature n.▪credit n.▪credit card n.▪crime n.▪criminal adj.,n.▪crisis n.▪crisp adj.▪criterion n.▪critical adj.▪criticism n.▪criticize (BrE also -ise) v.▪crop n.▪cross n.,v.▪crowd n.▪crowded adj.▪crown n.▪crucial adj.▪cruel adj.▪crush v.▪cry v.,n.▪ct abbr.cent▪cultural adj.▪culture n.▪cup n.▪cupboard n.▪curb v.▪cure v.,n.▪curious adj.▪curiously adv.▪curl v.,n.▪curly adj.▪current adj.,n.▪currently adv.▪curtain n.▪curve n.,v.▪curved adj.▪custom n.▪customer n.▪customs n.▪cut v.,n.▪cycle n.,v.▪cycling n.▪dad n.▪daily adj.▪damage n.,v.▪damp adj.▪dance n.,v.▪dancing n.▪dancer n.▪danger n.▪dangerous adj.▪dare v.▪dark adj.,n.▪data n.▪date n.,v.▪daughter n.▪day n.▪dead adj.▪deaf adj.▪deal v.,n.▪deal with▪dear adj.▪death n.▪debate n.,v.▪debt n.▪decade n.▪decay n.,v.▪December n. (abbr. Dec.)▪decide v.▪decision n.▪declare v.▪decline n.,v.▪decorate v.▪decoration n.▪decorative adj.▪decrease v.,n.▪deep adj.,adv.▪deeply adv.▪defeat v.,n.▪defence (BrE) (NAmE defense) n.▪defend v.▪define v.▪definite adj.▪definitely adv.▪definition n.▪degree n.▪delay n.,v.▪deliberate adj.▪deliberately adv.▪delicate adj.▪delight n.,v.▪delighted adj.▪deliver v.▪delivery n.▪demand n.,v.▪demonstrate v.▪dentist n.▪deny v.▪department n.▪departure n.▪depend (on) v.▪deposit n.,v.▪depress v.▪depressing adj.▪depressed adj.▪depth n.▪derive v.▪describe v.▪description n.▪desert n.,v.▪deserted adj.▪deserve v.▪design n.,v.▪desire n.,v.▪desk n.▪desperate adj.▪desperately adv.▪despite prep.▪destroy v.▪destruction n.▪detail n.▪in detail ▪detailed adj.▪determination n.▪determine v.▪determined adj.▪develop v.▪development n.▪device n.▪devote v.▪devoted adj.▪diagram n.▪diamond n.▪diary n.▪dictionary n.▪die v.▪dying adj.▪diet n.▪difference n.▪different adj.▪differently adv.▪difficult adj.▪difficulty n.▪dig v.▪dinner n.▪direct adj.,v.▪directly adv.▪direction n.▪director n.▪dirt n.▪dirty adj.▪disabled adj.▪disadvantage n.▪disagree v.▪disagreement n.▪disappear v.▪disappoint v.▪disappointing adj.▪disappointed adj.▪disappointment n.▪disapproval n.▪disapprove (of) v.▪disapproving adj.▪disaster n.▪disc (also disk, especially in NAmE) n.▪discipline n.▪discount n.▪discover v.▪discovery n.▪discuss v.▪discussion n.▪disease n.▪disgust v.,n.▪disgusting adj.▪disgusted adj.▪dish n.▪dishonest adj.▪dishonestly adv.▪disk n.▪dislike v.,n.▪dismiss v.▪display v.,n.▪dissolve v.▪distance n.▪distinguish v.▪distribute v.▪distribution n.▪district n.▪disturb v.▪disturbing adj.▪divide v.▪division n.▪divorce n.,v.▪divorced adj.▪do v.,auxiliary v.▪undo v.▪doctor n. (abbr. Dr, NAmE Dr.) ▪document n.▪dog n.▪dollar n.▪domestic adj.▪dominate v.▪door n.▪dot n.▪double adj.,det.,adv.,n.,v.▪doubt n.,v.▪down adv.,prep.▪downstairs adv.,adj., n.▪downwards (also downward especially in NAmE) adv.▪downward adj.▪dozen n.,det.▪Dr (BrE) (also Dr. NAmE, BrE) abbr.doctor▪draft n.,adj.,v.▪drag v.▪drama n.▪dramatic adj.▪dramatically adv.▪draw v.▪drawing n.▪drawer n.▪dream n.,v.▪dress n.,v.▪dressed adj.▪drink n.,v.▪drive v.,n.▪driving n.▪driver n.▪drop v.,n.▪drug n.▪drugstore n. (NAmE)▪drum n.▪drunk adj.▪dry adj.,v.▪due adj.▪due to▪dull adj.▪dump v.,n.▪during prep.▪dust n.,v.▪duty n.▪DVD n.▪each det.,pron.▪each other (also one another) pron.▪ear n.▪early adj.,adv.▪earn v.▪earth n.▪ease n.,v.▪east n.,adj.,adv.▪eastern adj.▪easy adj.▪easily adv.▪eat v.▪economic adj.▪economy n.▪edge n.▪edition n.▪editor n.▪educate v.▪educated adj.▪education n.▪effect n.▪effective adj.▪effectively adv.▪efficient adj.▪efficiently adv.▪effort n.▪ e.g. abbr.▪egg n.▪either det.,pron.,adv.▪elbow n.▪elderly adj.▪elect v.▪election n.▪electric adj.▪electrical adj.▪electricity n.▪electronic adj.▪elegant adj.▪element n.▪elevator n. (NAmE)▪else adv.▪elsewhere adv.▪email (also e-mail) n.,v.▪embarrass v.▪embarrassing adj.▪embarrassed adj.▪embarrassment n.▪emerge v.▪emergency n.▪emotion n.▪emotional adj.▪emotionally adv.▪emphasis n.▪emphasize (BrE also -ise) v.▪empire n.▪employ v.▪unemployed adj.▪employee n.▪employer n.▪employment n.▪unemployment n.▪empty adj.,v.▪enable v.▪encounter v.,n.▪encourage v.▪encouragement n.▪end n.,v.▪in the end▪ending n.▪enemy n.▪energy n.▪engage v.▪engaged adj.▪engine n.▪engineer n.▪engineering n.▪enjoy v.▪enjoyable adj.▪enjoyment n.▪enormous adj.▪enough det.,pron.,adv.▪enquiry (also inquiry especially in NAmE) n.▪ensure v.▪enter v.▪entertain v.▪entertaining adj.▪entertainer n.▪entertainment n.▪enthusiasm n.▪enthusiastic adj.▪entire adj.▪entirely adv.▪entitle v.▪entrance n.▪entry n.▪envelope n.▪environment n.▪environmental adj.▪equal adj.,n.,v.▪equally adv.▪equipment n.▪equivalent adj.,n.▪error n.▪escape v.,n.▪especially adv.▪essay n.▪essential adj.,n.▪essentially adv.▪establish v.▪estate n.▪estimate n.,v.▪etc. (full form et cetera)▪euro n.▪even adv.,adj.▪evening n.▪event n.▪eventually adv.▪ever adv.▪every det.▪everyone (also everybody) pron.▪everything pron.▪everywhere adv.▪evidence n.▪evil adj.,n.▪ex- prefix▪exact adj.▪exactly adv.▪exaggerate v.▪exaggerated adj.▪exam n.▪examination n.▪examine v.▪example n.▪excellent adj.▪except prep.,conj.▪exception n.▪exchange v.,n.▪in exchange (for)▪excite v.▪exciting adj.▪excited adj.▪excitement n.▪exclude v.▪excluding prep.▪excuse n.,v.▪executive n.,adj.▪exercise n.,v.▪exhibit v., n.▪exhibition n.▪exist v.▪existence n.▪exit n.▪expand v.▪expect v.▪expected adj.▪unexpected adj.▪unexpectedly adv.▪expectation n.▪expense n.▪expensive adj.▪experience n.,v.▪experienced adj.▪experiment n.,v.▪expert n.,adj.▪explain v.▪explanation n.▪explode v.▪explore v.▪explosion n.▪export v.,n.▪expose v.▪express v.,adj.▪expression n.▪extend v.▪extension n.▪extensive adj.▪extent n.▪extra adj.,n.,adv.▪extraordinary adj.▪extreme adj.,n.▪extremely adv.▪eye n.▪face n.,v.▪facility n.▪fact n.▪factor n.▪factory n.▪fail v.▪failure n.▪faint adj.▪faintly adv.▪fair adj.▪fairly adv.▪unfair adj.▪unfairly adv.▪faith n.▪faithful adj.▪faithfully adv.▪Yours faithfully (BrE) ▪fall v.,n.▪fall over▪false adj.▪fame n.▪familiar adj.▪family n.,adj.▪famous adj.▪fan n.▪fancy v.,adj.▪far adv.,adj.▪further adj.▪farm n.▪farming n.▪farmer n.▪farther, farthest far ▪fashion n.▪fashionable adj.▪fast adj.,adv.▪fasten v.▪fat adj.,n.▪father n.▪faucet n. (NAmE)▪fault n.▪favour (BrE) (NAmE favor) n.▪in favour/favor (of)▪favourite (BrE) (NAmE favorite) adj.,n.▪fear n.,v.▪feather n.▪feature n.,v.▪February n. (abbr. Feb.)▪federal adj.▪fee n.▪feed v.▪feel v.▪feeling n.▪fellow n.,adj.▪female adj.,n.▪fence n.▪festival n.▪fetch v.▪fever n.▪few det.,adj.,pron.▪ a few▪field n.▪fight v.,n.▪fighting n.▪figure n.,v.▪file n.▪fill v.▪film n.,v.▪final adj., n.▪finally adv.▪finance n.,v.▪financial adj.▪find v.▪find out sth ▪fine adj.▪finely adv.▪finger n.▪finish v.,n.▪finished adj.▪fire n.,v.▪set fire to▪firm n.,adj.,adv.▪firmly adv.▪first det.,ordinal number,adv., n.▪at first▪fish n.,v.▪fishing n.▪fit v.,adj.▪fix v.▪fixed adj.▪flag n.▪flame n.▪flash v.,n.▪flat adj.,n.▪flavour (BrE) (NAmE flavor) n., v.▪flesh n.▪flight n.▪float v.▪flood n.,v.▪floor n.▪flour n.▪flow n.,v.▪flower n.▪flu n.▪fly v.,n.▪flying adj.,n.▪focus v.,n.▪fold v.,n.▪folding adj.▪follow v.▪following adj.,n.,prep.▪food n.▪foot n.▪football n.▪for prep.▪force n.,v.▪forecast n., v.▪foreign adj.▪forest n.▪forever (BrE also for ever) adv.▪forget v.▪forgive v.▪fork n.▪form n.,v.▪formal adj.▪formally adv.▪former adj.▪formerly adv.▪formula n.▪fortune n.▪forward (also forwards) adv.▪forward adj.▪found v.▪foundation n.▪frame n.,v.▪free adj.,v.,adv.▪freely adv.▪freedom n.▪freeze v.▪frozen adj.▪frequent adj.▪frequently adv.▪fresh adj.▪freshly adv.▪Friday n. (abbr. Fri.)▪fridge n. (BrE)▪friend n.▪make friends (with) ▪friendly adj.▪unfriendly adj.▪friendship n.▪frighten v.▪frightening adj.▪frightened adj.▪from prep.▪front n.,adj.▪in front (of)▪frozen freeze▪fruit n.▪fry v., n.▪fuel n.▪full adj.▪fully adv.▪fun n.,adj.▪make fun of▪function n.,v.▪fund n.,v.▪fundamental adj.▪funeral n.▪funny adj.▪fur n.▪furniture n.▪further, furthest far▪future n.,adj.▪g abbr.gram▪gain v.,n.▪gallon n.▪gamble v.,n.▪gambling n.▪game n.▪gap n.▪garage n.▪garbage n. (especially NAmE) ▪garden n.▪gas n.▪gasoline n. (NAmE)▪gate n.▪gather v.▪gear n.▪general adj.▪generally adv.▪in general▪generate v.▪generation n.▪generous adj.▪generously adv.▪gentle adj.▪gently adv.▪gentleman n.▪genuine adj.▪genuinely adv.▪geography n.▪get v.▪get on▪get off▪giant n.,adj.▪gift n.▪girl n.▪girlfriend n.▪give v.▪give sth away ▪give sth out ▪give (sth) up ▪glad adj.▪glass n.▪glasses n.▪global adj.▪glove n.▪glue n.,v.▪gm abbr.gram ▪go v.▪go down▪go up▪be going to ▪goal n.▪god n.▪gold n.,adj.▪good adj.,n.▪good at▪good for▪goodbye exclamation,n.▪goods n.▪govern v.▪government n.▪governor n.▪grab v.▪grade n., v.▪gradual adj.▪gradually adv.▪grain n.▪gram (BrE also gramme) n.(abbr.g, gm)▪grammar n.▪grand adj.▪grandchild n.▪granddaughter n.▪grandfather n.▪grandmother n.▪grandparent n.▪grandson n.▪grant v.,n.▪grass n.▪grateful adj.▪grave n.,adj.▪gray (NAmE ) grey▪great adj.▪greatly adv.▪green adj.,n.▪grey (BrE) (NAmE usually gray) adj.,n.▪grocery (NAmE usually grocery store) n.▪groceries n.▪ground n.▪group n.▪grow v.▪grow up▪growth n.▪guarantee n.,v.▪guard n.,v.▪guess v.,n.▪guest n.▪guide n.,v.▪guilty adj.▪gun n.▪guy n.▪habit n.▪hair n.▪hairdresser n.▪half n.,det.,pron.,adv.▪hall n.▪hammer n.▪hand n.,v.▪handle v.,n.▪hang v.▪happen v.▪happiness n.▪unhappiness n.▪happy adj.▪happily adv.▪unhappy adj.▪hard adj.,adv.▪hardly adv.▪harm n.,v.▪harmful adj.▪harmless adj.▪hat n.▪hate v., n.▪hatred n.▪have v., auxiliary v.▪have to modal v.▪he pron.▪head n.,v.▪headache n.▪heal v.▪health n.▪healthy adj.▪hear v.▪hearing n.▪heart n.▪heat n.,v.▪heating n.▪heaven n.▪heavy adj.▪heavily adv.▪heel n.▪height n.▪hell n.▪hello exclamation,n.▪help v.,n.▪helpful adj.▪hence adv.▪her pron.,det.▪hers pron.▪here adv.▪hero n.▪herself pron.▪hesitate v.▪hi exclamation▪hide v.▪high adj.,adv.▪highly adv.▪highlight v.,n.▪highway n. (especially NAmE) ▪hill n.▪him pron.▪himself pron.▪hip n.▪hire v.,n.▪his det.,pron.▪historical adj.▪history n.▪hit v.,n.▪hobby n.▪hold v.,n.▪hole n.▪holiday n.▪hollow adj.▪holy adj.▪home n.,adv..▪homework n.▪honest adj.▪honestly adv.▪honour (BrE) (NAmE honor) n.▪in honour/honor of▪hook n.▪hope v.,n.▪horizontal adj.▪horn n.▪horror n.▪horse n.▪hospital n.▪host n.,v.▪hot adj.▪hotel n.▪hour n.▪house n.▪housing n.▪household n.,adj.▪how adv.▪however adv.▪huge adj.▪human adj.,n.▪humorous adj.▪humour (BrE) (NAmE humor) n.▪hungry adj.▪hunt v.▪hunting n.▪hurry v.,n.▪in a hurry▪hurt v.▪husband n.▪I pron.▪ice n.▪ice cream n.▪idea n.▪ideal adj.,n.▪ideally adv.▪identify v.▪identity n.▪i.e. abbr.▪if conj.▪ignore v.▪ill adj. (especially BrE) ▪illegal adj.▪illegally adv.▪illness n.▪illustrate v.▪image n.▪imaginary adj.▪imagination n.▪imagine v.▪immediate adj.▪immediately adv.▪immoral adj.▪impact n.▪impatient adj.▪impatiently adv.▪implication n.▪imply v.▪import n.,v.▪importance n.▪important adj.▪importantly adv.▪unimportant adj.▪impose v.▪impossible adj.▪impress v.▪impressed adj.▪impression n.▪impressive adj.▪improve v.▪improvement n.▪in prep.,adv.▪inability n.▪inch n.▪incident n.▪include v.▪including prep.▪income n.▪increase v.,n.▪increasingly adv.▪indeed adv.▪independence n.▪independent adj.▪independently adv.▪index n.▪indicate v.▪indication n.▪indirect adj.▪indirectly adv.▪individual adj.,n.▪indoors adv.▪indoor adj.▪industrial adj.▪industry n.▪inevitable adj.▪inevitably adv.▪infect v.▪infected adj.▪infection n.▪infectious adj.▪influence n.,v.▪inform v.▪informal adj.▪information n.▪ingredient n.▪initial adj.,n.▪initially adv.▪initiative n.▪injure v.▪injured adj.▪injury n.▪ink n.▪inner adj.▪innocent adj.▪inquiry enquiry▪insect n.▪insert v.▪inside prep.,adv.,n.,adj.▪insist (on) v.▪install v.▪instance n.▪for instance▪instead adv.▪instead of▪institute n.▪institution n.▪instruction n.▪instrument n.▪insult v.,n.▪insulting adj.▪insurance n.▪intelligence n.▪intelligent adj.▪intend v.▪intended adj.▪intention n.▪interest n.,v.▪interesting adj.▪interested adj.▪interior n.,adj.▪internal adj.▪international adj.▪Internet n.▪interpret v.▪interpretation n.▪interrupt v.▪interruption n.▪interval n.▪interview n.,v.▪into prep.▪introduce v.▪introduction n.▪invent v.▪invention n.▪invest v.▪investigate v.▪investigation n.▪investment n.▪invitation n.▪invite v.▪involve v.▪involved in▪involvement n.▪iron n.,v.▪irritate v.▪irritating adj.▪irritated adj.▪-ish suffix▪island n.▪issue n.,v.▪it pron.,det.▪its det.▪item n.▪itself pron.▪jacket n.▪jam n.▪January n. (abbr. Jan.)▪jealous adj.▪jeans n.▪jelly n.▪jewellery (BrE) (NAmE jewelry) n.▪job n.▪join v.▪joint adj.,n.▪jointly adv.▪joke n.,v.▪journalist n.▪journey n.▪joy n.▪judge n.,v.▪judgement (also judgment especially in NAmE) n.▪juice n.▪July n. (abbr. Jul.)▪jump v.,n.▪June n. (abbr. Jun.)▪junior adj.,n.▪just adv.▪justice n.▪justify v.▪justified adj.▪k abbr.kilometre▪keen adj.▪keen on▪keep v.▪key n.,adj.▪keyboard n.▪kick v.,n.▪kid n.▪kill v.▪killing n.▪kilogram (BrE also kilogramme) (also kilo) n. (abbr. kg)。
C++面向程序对象语言(双语)选择题+答案mChapter I: Principles of Object-Oriented Programming1. Which of the following languages is not a procedure-oriented programming language?a) ALGOL(算法语言)b) COBOL(面向商业通用语言)c) FORTRAN(公式翻译程序语言)d) None of the above2. Which of the following programming approach (程序设计方法)used functions as a keyconcept to perform action-oriented tasks?(指导任务??)a) Structured(结构化)programmingb) Modular (模块化)programmingc) Procedure-oriented programming(面向对象)d) Object-oriented programming3. Identify the drawback(缺点)of using procedure-oriented programming, if any:a) Data is hidden(隐藏)from external functions(外部函数)b) New functions can be added whenever necessaryc) Does not reflect real world problemsd) All of the above4. Which is not associated(联系)with Object-oriented programming?a) Data abstraction(数据提取)b) Automatic initialization(自动初始化)c) Dynamic binding(动态绑定)d) None5. The term operator overloading(操作符重载)in C++ refers to:a) Inheritance(继承)b) Message passing (信息传递)c) Polymorphism(多态性)d) None6. Which one of the following OOP concepts enables reusability (再利用)of components(成员)?a) Inheritanceb) Encapsulation(数据分装)c) Polymorphismd) All of the above7. The concept of hierarchical classification (层次分类)is related to:a) Abstractionb) Inheritancec) Function overloading(重载)d) None8. Object-based (基于对象)programming languages do not support:i. Inheritanceii. Dynamic bindingiii. Encapsulationiv. All of the abovea) Both i and iib) iii onlyc) iv onlyd) i, ii, and iii9. C++ does not supporti. Genericity(泛型C#)ii. Early bindingiii. Garbage collection(碎片收集)iv. Multiple Inheritance(多重继承)a) i onlyb) ii onlyc) iii onlyd) ii, iii and iv10. Which of the following is an Object-oriented programming language?i. Smalltalkii. Object Pascaliii. Javaiv. All of the abovea)Both ii and iiib)i onlyc) i ii onlyd) iv onlyChapter II: Beginning With C++1. Which one of the following options is true on the topic of Simula67?i. It is the first Object-oriented programming languageii. It?s a predecessor to C++iii. It was designed for doing simulationsiv. All of the abovea) Both i and iib) i onlyc) iii onlyd) iv only2. Which of the following features (特征)that distinguish (区别)object orientedprogramming from other conventional(常规的)programming?i. Structural design(结构设计)ii. Inheritanceiii. Modular programming(模)iv. bottom-upa) i onlyb) Both ii and iiic) Both ii and ivd) iv only3. Comments (解释)in C++ starts with _______ symbol.a) //b) \\c) **d) None of the above4. The insertion operator(插入操作符)is another name fora) input operatorb) output operator(输出操作符)c) extraction operatord) None of the above5. Which header file in C++ does contain function prototypes for memory(记忆)allocation(分配)?a)b)c)d)6. What is the output of the following code?int n=10;while (n<10)cout<< “Number:”<<n+1;< p="">a) 10b) 11c) No outputd) None of the above7. Which of the following statements require the header file to be included?a) a=b/c;b) cout << a;c) c=sqrt(a);(平方根)d) Both a and c8. Identify the error, if any: char str_name …a…;a) str_name is not a valid variable nameb) Variables cannot be initialized at the time of declarationc) Missing = sign between str_name and …a?d) No error9. Name the library that must be included while using cin.a)b) (输入输出流)c)d)10. A C++ program structure is based on the concept ofa) Client-server modelb) N-Tier modelc) Both a and bd) None of the aboveChapter III: Tokens, Expre ssions and Control Structure s1. return is an example of aa) Keyword(关键字)b) Functionc) Statement (声明)d) Comment2. Which of the following is not a keyword?i. forii. friendiii. virtualiv. privatea) i onlyb) Both ii and iiic) Both i and ivd) ii, iii and iv3. Identify the valid (有效地)variable(可变的)name from the following:i. charii. var_nameiii. _varnameiv. str_name2a) Both i and iiib) Both ii and ivc) ii, iii, and ivd) i only4. Which of the following is not a user-defined data type?a) arrayb) structurec) uniond) class5. Write the equivalent C++ statement for the following expression, X= b a +*c/da) X=sqrt(a+b) *(c/d);b) X=(squareroot(a+b)*c)/d;c) X=()(b a +* c)/d;d) None of the above6. The statement int main() is a ___________.a) function prototypeb) function callc) function header lined) None of the above7. The declaration of global variables (全局变量) must be madea) inside the functionb) outside the functionc) in a function header lined) None of the above8. Identify the error, if any:double avg=tot/n;a) Declaration should not contain any expressionb) Initialization cannot be done in the declaration statementc) Dynamic initialization is not possibled) No error9. Which of the following is true about scope resolution operator?a) Qualifies a namespace member to its namespaceb) Allows you to access a global variablec) Qualifies the hidden variabled) All of the above10. Which of the following is not a member-dereferencing operator?a) ::*b) ::c) *d) *11. Which of the following is true about new operator?i. While using new operator, sizeof() operator is not needed ii. It is also not necessary to use cast operatoriii. new operator can be overloadediv. All of the abovea) Both i and iib) Both i and iiic) ii onlyd) iv only12. Identify the manipulators in C++:a) Endl(输出时换行)b) setw(设置域宽)c) Both a and bd) None of the above13. a = (b = 5); The C++ statement is an example ofa) Compound (合成)assignmentb) Embedded (嵌入)assignmentc) Chained (束缚)assignmentd) Multiple (多重)assignment14. Water-fall model is associated witha) Control structuresb) Type conversionsc) Manipulatorsd) None of the above15. Selection structure is also known bya) Branching(歧义)b) straight linec) iterationd) None of the above16. Consider the following code:cout<< “Welcome”;This is an example ofa) C++ statementb) Return typec) Functiond) Both a and cChapter IV: Functions in C++1. Which of the following is true about a function call in a C++ program?a) A function must be called atleast onceb) A function cannot be called from other functionsc) A function may be called whenever it is necessaryd) Both a and c2. Function prototyping definesa) The return type of the functionb) The identifier of the functionc) The number and type of argumentsd) All of the above3. Find if the following function prototype contains any error:double area(int )a) No errorb) Variable name is not included in the argument listc) Semicolon(分号)is not foundd) None of the above4. Identify which function prototype exhibits(显示)the following: Name of the function issample_calc, which receives two values of type double and returns no value;a) sample_calc(double, double);b) void sample_calc(double, double);c) double sample_calc(void);d) void sample_calc(double, double)5. When you call a function by passing the address of a data variable, it is called ________.a) Call by referenceb) Call by valuec) Call by two directionsd) Both b and c6. Which of the following function calls is correct while providing default arguments:I. double calc(int a, float b=12.0);II. double calc(int a=3, float b=12.0, int c);III. double calc(int a=3, float b, int c=8);IV. double calc(int a, float b=12.0, int c=8);a) I onlyb) II onlyc) Both I and IVd) Both II, and III7. Which function call does invoke the following function prototype?float sub1(int a, float b);a) X=sub1(5.0,6.5);b) X=sub1(5,6.5);c) X=sub1(5,6);d) Both b and c8. Identify the variables, which are local to the following function:int calc(int p, int n){int q;q=pow(p,n);return(q);}a) p and nb) p,n, and qc) qd) Cannot be determined without the main() function9. Which of the following statements is true about the function that contains the constargument?a) The function should not modify the const argumentb) Const declaration is necessary only when the arguments are passed by referencec) Both b and cd) None of the above10. Which of the following functions in C++ replace the usage of macros in C?a) friend functionb) virtual functionc) inline functiond) All of the aboveChapter IX: Pointers, Virtual Functions and Polymorphism1. Which of the following is true about pointers?a) A pointer is a data typeb) A pointer is a keywordc) A special type of integer (整数)variabled) None of the above2. Which of the following statement(s) is true according to the following statement?p=*ptr;a) p must be a pointer variableb) The value of ptr is assigned to the variable pc) The address of the pointer ptr is assigned to the variable pd) The value of the variable that the pointer ptr is pointing to is assigned to thevariable p3. Compile time polymorphism is also known asa) early bindingb) static bindingc) static linkingd) All of the above4. C++ supports a mechanism virtual function to achievea) compile time polymorphismb) function overloadingc) run time polymorphismd) operator overloading5. Which of the following is NOT true about virtual functions?I. They cannot be static membersII. A virtual function can be a friend of another classIII. We can have virtual constructors, but we cannot have virtual destructorsIV. They are accessed by using object pointersa) II onlyb) III onlyc) Both II and IIId) I, II and IV6. Consider the following code segment:int main(){int x, *x_ptr=&xx=5;x_ptr=NULL;cout<< x << “ “ << *x_ptr;return 0;}What is the output of the above code?a) 0b) but addresses are samec) but having different addressesd) 57. Consider the following code segment:int main(){double f, *f_ptr=&ff=5.25;f_ptr=4.5;cout<< “Value of f is:” << “ “ << f;return 0;}What is the output of the above code?a) Value of f is: 5.25b) Value of f is:c) Value of f is: 4.5d) Compiler error8. How will you assign value …5? to the variable …x? inside a member function using thispointer?a) this->x=5;b) this.x=5;c) x=5;d) None of the above9. Consider a class X, which includes a virtual function called X_output. The virtual functionreceives a float value and returns nothing. Find out the function prototype for the same.a) virtual void X_output(float );b) X:: virtual void X_output(float );c) virtual X:: void X_output(float );d) virtual :: void X_output(float );10. What would be the output of the following code?#include#includeclass A{public:virtual void disp(){cout<<"This is from class A";}};class B : public A{public:void disp(){cout<<"This is from class B";}};void main(){clrscr();A *s;s = new B();s->disp();}a) This is from class Ab) This is from class Bc) This is from class A This is from class Bd) None of the above11. Which of the following is NOT true about pure virtual function?a) It is also called do-nothing functionb) It cannot declare its own objectsc) A virtual function, which is not equated to zero is called a pure virtual functiond) None of the aboveChapter V: Classe s and Objects1. The declaration of a class includesa) Declaration of data membersb) Declaration of function prototypec) Return statements of functionsd) Both a and b2. By default, the members of a class area) privateb) publicc) protectedd) static3. Which OOP feature can be enabled by using private declaration for the class members?a) Data abstractionb) Polymorphismc) Encapsulationd) Modularity4. Which of the following will assign the value to the class member variable num?void getnum(int a)a) {num=a};b) {num=a;}c) {a=num};d) {a=num;}5. Which of the following is not true about member functions?a) Can access private data variablesb) Can call another function directly without using dot ope ratorc) Both a and bd) None of the above6. Identify all the members of the following class xyz:class xyz{int x,y;public:xyz();void calc(int a, int b);void output_calc(void);};a) Data members x and yb) Data members x and y, Constructor, and member functions calc() andoutput_calc()c) Data members x and y, and member functions calc() andoutput_calc()d) Constructor and member functions calc() and output_calc()7. Which of the following is not true about static member variable?a) Only one instance of static member can be createdb) Visible only within the classc) It can be initialized whenever necessaryd) Both a and b8. What is the general format of calling a static member function using a class name?a) class-name :: function-nameb) function-name :: class-namec) class-name :: function-name;d) function-name :: class-name;9. Which of the following is true while passing objects as function arguments? It is possiblea) to pass copy of the entire object to the functionb) to pass only the address of the object to the functionc) to pass the objects to a non-member functiond) All of the above10. A friend functionI. Can be invoked similar to other functions without using objectsII. Cannot access to other member functions directlyIII. Cannot be called using the object of the class to which it has beendeclared as friendIV. Can be declared only in the public part of a classa) I, II and IIIb) I, II and IVc) I, II, III and IVd) IV onlyChapter VI: Constructors and Destructors1. Which of the following is not true about constructors and destructors?a) They must have the same name as classb) They cannot return valuesc) They cannot be called more than once in a programd) They are called automatically2. The default constructor for class A isa) A :: A()b) A :: A(int)c) A :: A(int);d) A :: A();3. Which of the following statements do correctly describe the charac teristics ofconstructors?I. They cannot be inheritedII. They cannot be virtualIII. They need not be declared in the public sectionIV. We cannot refer to their addressesa) Both I and IIb) I, II, and IVc) Both II and IIId) I, III and IV4. Which of the following is called an implicit constructor for the class xyz?a) xyz(){ }b) xyz(int){}c) xyz(){ };d) None of the above5. Consider the following code segment:class simple{int a,b;public:simple();simple(char[]);};Which of the following would assigns the string “welcome” to the second c onstructor?a) simple s(“welcome”);b) simple s(welcome);c) simple s=”welcome”;d) None of the above6. Identify if any error in the following code segment1. class example2. {3. f loat x;4. p ublic:5. void example();6. example(int, float);7. };a) Line 7 should not include the semicolonb) Line 6 is an incorrect statementc) Line 5 cannot include voidd) No error7. Which of the following statements are true about copy constructors?I. It declares and initializes an object from another objectII. It will not be useful when arguments are passed by value III. It can be used to pass arguments by referenceIV. The compiler provides its own copy constructor, if it is not defined.a) I, II, IVb) All are correctc) Both II and IIId) III only8. The following statement creates a constant object of a class simple:const simple m(a,b);Which the following is true regarding the above statement?a) The compiler generates compile-time error if you try to change the values of …a?and …b?b) Const member is a function prototypec) The compiler generates an error if m tries to invoke non-const member functionsd) All of the above9. Which of the following statements do incorrectly describe the characteristics ofdestructors?I. A destructor is a member function, which has the same name as classnameII. A destructor receives only one argumentIII. A destructor does not return any valueIV. Usage of destructors in a program clean up memory space that is not useda) Both I and IIb) All are incorrectc) Both II and IIId) I, II and IV10. Which of the following is a correct description of the destructor …sample? and incl udesoutput statements (if possible)?a) sample :: ~sample() {cout << “Welcome”; }b) sample :: ~sample() { };c) void ~sample() { }d) ~sample() { };Chapter VII: Operator Overloading and Type Conversions1. Which of the following operators cannot be overloaded?a) ?:b) ::c) .*d) All of the above2. Operator Overloading is also known by the terma) runtime polymorphismb) compile-time polymorphismc) Both a and bd) None of the above3. Operator overloading is necessary becausea) C++ attempts to make the user-defined classes act like built-in typesb) To provide new definitions for most of the C++ operatorsc) To add user-defined data type like basic data typesd) All of the above4. Which of the following is required to overload an operator in C++?a) operator functionb) built-in functionc) Both a and bd) None of the above5. Identify the correct definition of an operator function for the class sample, which overloadsa unary minus operator and returns no values.a) sample :: oper-() { };b) void sample :: operator-() { }c) void sample :: operator-() { };d) sample :: operator-() { }6. Which of the following is not true about the code segment given below?float sample :: operator +(float x) {// code }a) It receives only one float type argument explicitlyb) It returns a float type valuec) It is a member function of sampled) None of the above7. Which of the following operators cannot use friend functions for overloading?I. ==II. ( )III. [ ]IV. ->a) I onlyb) II onlyc) II, III and IVd) I, II and III8. Which of the following is not true about operator overloading?a) Only existing operators can be overloadedb) Binary arithmetic operators (+,-,*,/) (二进制算子)need not return a valuec) It is impossible to redefine an operatord) All of the above9. Which of the following code segments will convert (改变)a class object namely sample totype double?a) sample :: operator double() { }b) operator double() { }c) sample :: operator double();d) operator double();10. Which of the following statements does correctly describe the casting operator function?a) It must not specify return typeb) It must be a class memberc) It must not have any argumentsd) All of the aboveChapter VIII: Inheritance: Extending Classe s1. Which of the following OOP concepts is supported by Inheritance?a) Abstractionb) Encapsulationc) Reusability (再利用)d) None of the above2. Which of the following does a derived class inherit from a base class?(从基类继承)a) public and protected(受保护)class membersb) public and private class membersc) only public datad) Everything3. Which of the following statement(s) is true, if a derived class is publicly inherited from abase class?I. The public members of the base class become public members of thederived classII. The public members of the base class become private members of the derived classIII. The public members of the base class are inaccessible(不可达到)to the objects of the derived classIV. All of the abovea) I onlyb) Both I and IIc) Both I and IIId) IV only4. Consider the following code segment:class A{int a;public:int b;void inp();}class B : A{// members of B}Which of the following statement(s) is NOT true regarding the above code?a) The public members, namely …b? and inp() of class Abecome private members ofclass Bb) The public members, namely …b? and inp() of class A can be accessed by themember functions of class Bc) The public members, namely …b? and inp() of class A are inaccessible to theobjects of class Bd) None of the above5. According to the following code, which of the following class members does the derivedclass inherit from the base class?class base{float x;int y;public:int a;void get_a();void put_a();}class derived : public base{// members of B}a) float xb) int yc) get_a(), void put_a()d) All of the above6. Which of the following statement(s) is true about thevisibility(能见度?)of inheritedmembers?a) When a class is inherited in protected mode, the private members of the baseclass become protected members of the derived classb) When a class is inherited in private mode, only the public members of the baseclass can be inherited to the derived classc) When a class is inherited in public mode, the private members of the base classcannot be inheritedd) None of the above7. What are the visibility modifiers(修饰语)available in C++?a) publicb) privatec) protectedd) All of the above</n+1;<>。
Process-oriented theories: are concerned with how the mind organizes new information such as habit.formation,.induction,making.inference,.hypothesis.testing.and.generalization.Co ndition-oriented theories: emphasize the nature of the human and physical context in which language learning takes place, such as the number of students, the kind of input learners receives, and the atmosphere.Behaviorist theory, skinner,learning process of habit formation&conditioning,a stimulus-response theory ,imitation&repetition SRR,audio-lingual method,external factors,the idea of this method is that language is learned by constant repletion and the reinforcement of the teacher. Mistakes were immediately corrected, and correct utterances were immediately praised.Cognitive theory,chomsky,learning:creative process, internal factors,students are asked to thinking and allow to create their own sentence based on their understanding of certain rules ,language is not a form of behavior, it is an intricate rule-based system and a large part of language acquisition is the learning of this system.Constructivist theory,personal construction,dewey, believes that learning is a process in which the learner constructs meaning based on his/her own experiences and what he/she already knows.Socio-constructivist theory, similar to constructivist theory, socio-constructivist theory emphasizes interaction and engagement with the target language in a social context based on the concept of “Zone of Proximal Development” (ZPD) and scaffolding.learning is best achieved through dynamic interaction between the teacher&learner&between learnersLanguage teacher qualifications:1、a good command of spoken and written language2、formulate theory presupposition3、language background and experience4、know how languages are learnt 5、the ability to use methods in various situations6、deep understanding of cultural background7、understanding the principles of teaching.These elements can be categorized into three groups:ethic devotion,professional qualities and personal stylesCommunicative Competence:Hedge,:linguistic(knowledge of the language itself,its form and meaning),pragmatic(the appropriate use of the language in social context),discourse(one ability to create coherent written text or conversation and theability to understand it) ,strategic(strategies one employs when there is communication breakdown due to lack of resource),fluency(ability to link units of speech together with facility and without strain or inappropriate to slowness or undue hesitation)Views on language.Structural view —The founder:Saussure—The structural view of language sees language as a linguistic system made up of various subsystems:1、the sound system(phonology)2、sound combinations(morphology)3、meaning for communication(syntax)—Learning the language is to learn the structural items,study the inner structure and rule of language,ignore the social functions of the language。
A conceptual model completely independentof the implementation paradigmOscar Diestea,*,Marcela Genero b,1,Natalia Juristoc,2,Jos e L.Mat ec,2,Ana M.Moreno c,2aDepartamento de Electr onica y Sistemas,Escuela Polit e cnica Superior,Universidad Alfonso X el Sabio,28691-Villanueva de la Ca ~n ada,Madrid,SpainbDepartamento de Informatica,Escuela Superior de Informatica,Universidad de Castilla-La Mancha,Paseo de la Universidad,4,13071Ciudad Real,SpaincDepartamento de Lenguajes y Sistemas,Inform a ticos e Ingenier ıa del Software,Facultad de Inform a tica,Universidad Polit e cnica de Madrid,28660-Boadilla del Monte,Madrid,SpainReceived 23December 2002;accepted 27December 2002AbstractSeveral authors have pointed out that current conceptual models have two main shortcomings.First,they are clearly oriented to a specific development paradigm (structured,objects,etc.).Second,once the conceptual models have been obtained,it is really difficult to switch to another development paradigm,because the model orientation to a specific development approach.This fact induces problems during development,since practitioners are encouraged to think in terms of a solution before the problem at hand is well understood,thus anticipating perhaps bad design decisions.An appropriate analysis task requires models that are independent of any implementation issues.In concrete,models should support developers to understand the problem and its constraints before any solution is identified.This paper proposes such an alternative approach to conceptual modelling,called ‘‘problem-oriented analysis method’’.Ó2003Elsevier Inc.All rights reserved.Keywords:Conceptual modelling;Generic conceptual model;Development orientation1.IntroductionRequirements engineering (RE)activity is composed by four iterative tasks:elicitation,analysis,documen-tation and validation (SWEBOK,2000).Of these tasks,analysis is one of the most critical,due to the huge im-portance of its goals:(1)understand the problem to be solved;(2)develop conceptual models (CMs),which represent the problem understanding;and (3)define the features of an implementation-independent solution tothe problem in question,that is,identify the require-ments to be satisfied by the future software system.CMs play a central role during analysis,since they make possible to•make real-world concepts and relationships tangible (Motschnig-Pitrik,1993);•record parts of reality that are important for per-forming the task in question and downgrade other el-ements that are insignificant (Borgida,1991);•support communication among the various ‘‘stake-holders’’(customers,users,developers,testers,etc.)(Mylopoulos et al.,1997);•detect missing information,errors or misinterpreta-tions,before going ahead with system construction (Schreiber et al.,1999).Conceptual modelling is gaining in importance as software systems become more complex and the problem*Corresponding author.Present address:Departamento de Sist-emas Informaticos y Programacion,Facultad de Informatica,Uni-versidad Complutense de Madrid,Ciudad Universitaria S/N,28040Madrid,Spain.Tel.:+34-91-394-75-46.E-mail addresses:odiestet@fdi.ucm.es (O.Dieste),marcela.gen-ero@uclm.es (M.Genero),natalia@fi.upm.es (N.Juristo),jlmate@fi.upm.es (J.L.Mat e ),ammoreno@fi.upm.es (A.M.Moreno).1Tel.:+34-926-29-54-85x3740.2Tel.:+34-91-336-6922/6921/6929.0164-1212/$-see front matter Ó2003Elsevier Inc.All rights reserved.doi:10.1016/S0164-1212(03)00061-XThe Journal of Systems and Software 68(2003)183–198/locate/jssdomain moves further away from knowledge familiar to developers.In complex domains,to understand the user need becomes more difficult and,therefore,conceptual modelling grows to be crucial.Several researchers claim that proper conceptual modelling is crucial since it helps to represent the problem to be solved in the user domain(McGregor and Korson,1990;Bon-fatti and Monari,1994;Høydalsvik and Sindre, 1993).Nevertheless,several authors have argued that the CMs used nowadays are oriented to specific software development approaches.This orientation has two re-percussions:(1)CMs have computational constraints, that is,CMs developers represent specific implementa-tion characteristics in the domain models(Bonfatti and Monari,1994;Høydalsvik and Sindre,1993;McGinnes, 1992);(2)CMs prescribe the subsequent development process,in which the CMs are more or less directly transformed into design models(Henderson-Sellers and Edwards,1990;Davis,1993;Jalote,1997;Northrop, 1997;Juristo and Moreno,2000),and their trans-formation to a design model related to another de-velopment paradigm is exceedingly complicated and sometimes impossible.This means that the CMs used nowadays are not appropriate for analysis.In this paper,we propose an alternative approach that aims to remove the above constraints.The paper is structured as follows:Section2 discusses the problems with using CMs identified by several researchers,and establish the requirements for an appropriate CM.Sections3and4describe our ap-proach for a conceptual modelling process independent of any development paradigm.Finally,the preliminary results of applying our approach are discussed in Sec-tion5.2.The computational orientation of conceptual modelsThe term CM originally emerged in the database field.CMs were used to represent the data and relations that were to be managed by an information system,ir-respective of any implementation feature.Nevertheless, CMs are used for more than is acknowledged in data-bases.CMs are used in RE to•encourage the analyst to think and document in terms of the problem,as opposed to the solution (Davis,1993);•describe the universe of discourse in the language and in the way of thinking of the domain experts and users(Beringer,1994);•formally define aspects of the physical and social world around us for the purposes of understanding and communication(Loucopoulos and Karakostas, 1995);•help requirements engineers understand the domain (Kaindl,1999).Taking into account the above definitions,the main characteristics of any CM can be said to be description and understanding.That is,CMs should be used by de-velopers to•understand the user needs;•reach agreement with users on the scope of the system and how it is to be built;•use the information represented in the model as a ba-sis for building a software system to meet user needs.Several authors have pointed out that current CMs sometimes fail to do their jobs of description and un-derstanding during analysis.Criticisms can be divided into two major groups:•The orientation of the conceptualisation methods, stressing the fact that most CMs are oriented to get-ting a computational solution to the problem or need raised and not to easing the understanding of the user need.For instance,regarding to object orientation: It is argued that object-oriented methods are a ÔnaturalÕrepresentation of the world.Nevertheless, this idea is a dangerous over-simplification (McGinnes,1992).Object-oriented analysis has several shortcomings, most importantly in being target oriented ratherthan problem oriented(Høydalsvik and Sindre,1993).Object-oriented analysis techniques are strongly affected by implementative issues(Bonfatti and Monari,1994).Thus,for example,dataflow diagrams(DFD)are clearly guided by functions,the key components of structured software,and,likewise,the models used in object-oriented analysis lead directly to software de-veloped by means of classes,objects,messages, polymorphism,etc.,the basic concepts of object-ori-ented software.•The association between CMs and specific ap-proaches to software development.Here,the use ofa given CM during early phases of the developmentlimits the number of possible implementation alterna-tives and means that only the options that are com-patible with the CM used originally are feasible.If computational characteristics are included in CMs,these are linked to a particular implementation approach,that is,once a given conceptualisation method has been selected to describe the problem do-main,it is practically impossible to change the above method a posteriori without having to reanalyse the problem.This has also been stressed by several re-searchers:184O.Dieste et al./The Journal of Systems and Software68(2003)183–198Because of a poorly understood overlap among different requirements languages,it is difficult tochange languages mid-project(Davis et al.,1997).The use of a CM during analysis defines nearly univocally how the design shall be done(Hender-son-Sellers and Edwards,1990).Perhaps the most difficult aspect of problem anal-ysis is avoiding software design(Davis,1993).It is sometimes mistakenly believed that the struc-tures produced during analysis will and should becarried through in design(Jalote,1997).The boundaries between analysis and design activ-ities in the object-oriented model are fuzzy(Nor-throp,1997).The CM used preconditions the software system development approach(Juristo and Moreno, 2000).Owing to this limitation,if dataflow diagrams have been used to model the problem domain,for example,it will almost certainly be necessary to use the structured method in later development phases;whereas a method of object-oriented development will have to be used following upon an object-oriented analysis.Therefore,if we intended to switch development paradigms,that is, for example,pass from a dataflow diagram to an object-oriented design,this transformation would lead to an information gap that is very difficult tofill.This occurs because each CM acts like a pair of glasses used by the developer to observe the domain and user reality.These glasses highlight certain features,tone down others and hide others.Once the real world has beenfiltered through the CM,it is difficult to retrieve anything that has been lost or condensed,even if the later development process requires this information.The only way of recovering the features lost in the CMfilter is to reanalyse reality using a different pair of glasses;that is,to repeat the operation using another CM.Authors like Coleman et al.(1994), Champeaux et al.(1993)or Wieringa(1991)have already discussed this situation,addressing the incompatibility between the CMs used in the structured approach and object-oriented CMs,owing to the conceptual difference between the elements used in both approaches.In short,the software system development approach can be said to be preconditioned from the very start,as soon as the CMs are built.The problem with including computational considerations within the CM is that developers are forced to make a solution-oriented deci-sion during the early development phases,when the problem to be solved is still not well enough understood. This means making design decisions when not all the information relevant to the problem is known.Devel-opers thus run the risk of making the wrong decision, because they are not in possession of all the information. Excepting trivial problems,this precondition implies that the development approach is chosen before the user need has been understood,which is the job of concep-tual modelling.Even worse,very often the CMs selected are models with which developers are familiar,models called for by individual standards or even,as specified by Mylopoulos et al.(1999),the models that are‘‘in fashion’’.So,in the era when the structured approach was in vogue,techniques such as DFDs were used for conceptual modelling,whereas,today,with the rise of object-oriented programming and design,techniques like object diagrams,interaction diagrams,etc.,are employed for problem analysis.In order to avoid the commented problems of current CMs,they should include all the information required about the problem for developers to later address the software system that is to solve the user problem.In-deed,it is needed that conceptualisation methods meet the following:•Understanding the need raised by the user before considering an approach for developing a software system that meets this need.•The understanding of the need must be independent of the chosen problem-solving approach,that is,it must not precondition the use of any development approach.•Having criteria for deciding which is the best develop-ment approach once the user need has been under-stood.These criteria can only be met by redefining the conceptual modelling process as it is now carried out in the RE analysis task.3.An implementation-paradigm independent conceptual modelThe proposed approach,called‘‘problem-oriented analysis method’’(POAM),tries to meet the above-mentioned criteria,and is characterised by(1)using representation diagrams,which we call generic concep-tual models(GCMs),that do not presuppose any im-plementation paradigm;(2)defining a detailed analysis process;and(3)deriving,from the GCM,the best-suited CM(that is,a CM now used in RE,like DFD,use cases, etc.)to continue with development according to the methods used nowadays.The following sections present the main components of the proposed approach,that is, the GCM,which is described in Section3.1,and the POAM process,which is discussed in Section3.2.3.1.Generic conceptual modelThe CMs currently used in software engineering have to be used exclusively,that is,mostly rule out the use ofO.Dieste et al./The Journal of Systems and Software68(2003)183–198185a complementary CM.In some cases,when using a DFD,for example,the use of supplementary notations, such as process specifications or even the entity/rela-tionship model,is permitted,although these are sub-ordinated to the process diagram set out in the DFD.The GCM proposed in this approach is based on complementariness.Instead of using a representation schema that dominates the modelling process,three complementary representation schemas are -plementary means:(1)each schema supports the others, satisfactorily recording information they do not repre-sent and(2)the information in one schema can migrate, that is,move from one schema to another without the GCM losing information.Complementariness is important because the way the information is expressed benefits or impairs its under-standing(Vessey,1991).The different components of the GCM can represent the same information,expressing it either as a graph,table or text.This means that each analysis process participant can select and use the best-suited expression,either on the basis of previous expe-rience or in accordance with current needs.The proposed GCM components are as follows:•Element maps:Information representation structures belonging to a given knowledge domain or problem.Element maps are variations on the conceptual maps, derived from the work of Ausubel on Learning The-ory and Psychology,later formalised by Novak andG owin(1984).We use the termÔelement mapsÕin-stead ofÔconcepts mapsÕ,becauseÔconceptÕis a over-loaded word in SE.For example,ÔconceptÕis often used to meanÔdataÕ.When we useÔelementÕ,we are talking aboutÔstatic conceptsÕ,like data,rules or facts,but also aboutÔdynamic conceptsÕ,like pro-cesses,events,and so on.Conceptual maps(as employed in psychology)can be used to express and graphically represent concepts and associations between concepts as a hierarchical struc-ture.Element maps differ from conceptual maps used in Psychology on three essential points:(1)they are gen-erally structured as a complex graph and not necessarily hierarchically;(2)both the concepts(elements in our approach)and the associations,which represent estab-lished knowledge in conceptual maps,are likely to evolve over time as the analysis progress and(3)some special concepts(elements in our approach)and asso-ciations have been defined to restrict the spectrum of possible readings of the elements map for the purpose of raising the efficiency of POAM application.•Dictionaries:Tabulated information representation schemas.Dictionaries have a set of predefinedfields that define what sort of information they record.There are two main types of dictionaries:Identificative dictionary(or glossary):This dictio-nary merely records the information required torecognise a element or association appearing whileinvestigating the problem and to distinguish oneelement or association from another.Descriptive dictionary:Its goal is to record negoti-ated information about elements and associations,that is,information that all the participants in the analysis process agree to be true.This information is,additionally,practically complete,that is,all the important aspects of the problem and its solution will have been identified and recorded if this dictio-nary has been correctly built.•Narrative description:Natural language text that describes the information recorded in the elements map and the dictionaries.The narrative description can be automatically derived from the elements map and dictionaries(although the result is not a literary masterpiece),which has some clear benefits for model validation.The text is very understandable for end users and,as there is a bijective relationship between the narrative description and the other representation schemas,the comments and corrections made by the users can be fed back into those schemas.The three above-mentioned representation schemas are used during the POAM process activities and steps. The POAM process is described below.3.2.Generic conceptual model development processThere are two points of inflection during analysis, each determined by its goals,that is:(1)move from ig-norance to an understanding of the problem to be solved,which should be reflected in the creation of CMs, and(2)go from an understanding of the problem to a solution characterization,which moves from a very abstract level in the early stages of analysis(some re-strictions,characteristics,etc.,of the future software system)to a more concrete formulation as the devel-operÕs knowledge about the problem increases(a list of the desired software system features).Therefore,the proposed process is composed of two activities,as shown in Fig.1(a).The two activities differentiate two states in analysis:a problem-oriented state and a solu-tion-oriented state.The goal of thefirst activity,called problem-oriented analysis,is to understand the problem to be solved and ends when the GCM,which represents the acquired knowledge,has been developed.This G CM is the input for the second activity,called software-oriented analysis, whose goal is to identify which typically used CM is best suited for representing the problem,as well as to transform the GCM into the above-mentioned CM.Thisfirst level of decomposition is too general to guide a developer as to how to perform analysis. Therefore,both activities are divided into two steps,as shown in Fig.1(b),which are further broken down into186O.Dieste et al./The Journal of Systems and Software68(2003)183–198detailed tasks.Thus,problem-oriented analysis is de-composed into the following steps:•Preliminary analysis:In this step,the problem is ex-amined superficially with the aim of defining a prelim-inary model.The goals of this step are to(1)identify the most important elements of the problem domain;(2)describe these elements;and(3)organise all theelements of the problem domain into a structure, by means of which to define the associations there are among these elements.•Comprehensive analysis:In this step,the problem is studied in as much detail as required to develop the comprehensive model,that is,the complete GCM.The goals of this step are to(1)check that the impor-tant problem elements have been identified;(2)de-scribe the above elements exhaustively and(3) clearly determine the associations among elements.In the above paragraphs,we introduced the concepts of preliminary and comprehensive models.The prelimi-nary model is a simplified version of the GCM,obtained after the preliminary analysis,which is composed of(1)a elements map––usually hierarchical and not generally a graph,(2)identificative dictionary and(3),narrative descriptions.The comprehensive model,that is,the complete GCM output at the end of the comprehensive analysis,differs from the preliminary model in that(1) the elements map is more detailed and is generally a graph,(2)the descriptive dictionary is used instead of the identificative dictionary and(3)the narrative de-scription is optional and is usually excluded.Having completed the problem-oriented analysis,we will get an exhaustive description of all the important problem elements and of the spectrum of associations between these elements.This information,contained in the GCM,is of intrinsic value,as it helps developers and other participants in analysis to understand the prob-lem,which is one of the key objectives of analysis.Using the proposed approach,however,we can go even further to derive,from the information contained in the GCM,a CM by means of which to continue software system development using any of the develop-ment approaches now available,such as structured, object-oriented or real-time approaches.That CM is derived in the software-oriented analysis activity.This activity is decomposed into two steps.Identification of the suitable conceptual model:In this step,we identify the suitable conceptual model (SCM).The SCM is the target CM that can represent all the information gathered in the GCM for a given problem more fully.An interpretation procedure has to be applied to the G CM to identify the SCM.The interpretationO.Dieste et al./The Journal of Systems and Software68(2003)183–198187procedure can be used to rewrite the GCM from a computational viewpoint,that is,to assign builders used by the classical CMs to the constituent elements of the GCM,which in turn form the building blocks of com-puter systems.We have used a requirements representation formal-ism proposed by Davis et al.(1997)for rewriting pur-poses,although it has been profoundly modified for use with the G CM.This formalism,termed‘‘canonical model’’,in accordance with its authorÕs intent,provides a set of building blocks that can be used to represent the information contained in a range of CMs.This means that it can be used as a lingua franca,which averts,as explained below,having to deal with each CM sepa-rately.The interpretation procedure,therefore,involves as-signing a computational interpretation to each of the building blocks of the GCM or,in other words,as-signing each GCM element to one of the canonical model elements.This assignation will be totally formalised and engi-neer independent,unless any ambiguities arise in the assignation.Ambiguity is the possibility of assigning two or more elements of the canonical model to any given G CM element.In this case,it is the engineer who has to decide,depending on the semantics of the GCM and the canonical model,which particular interpretation is the best suited.After interpretation,the GCM is called the require-ments canonical model(RCM),as the GCM can now be read in computational terms,as a description of what should be future software system operation.After out-putting the RCM,we can determine the SCM.The SCM will be the CM that is capable of repre-senting most RCM propositions.We have defined a measure,calledfitness,to give a quantitative value of suitability.Fitness is defined as the ratio between the propositions a given CM can represent and the total number of RCM propositions.Accordingly,the SCM is the CM with the highestfitness value.Additionally,this measure provides supplementary information,namely,the extent to which the SCM is suitable.For example,a CM may be suitable(that is,be the best of all the models)and still very partially rep-resent the information gathered about the problem do-main(in this case,lowfitness values would be obtained). Additionally,it can even establish what difference,in terms of representation capability,there is between two particular CMs(which would be the difference between the respectivefitness values).Derivation of the selected conceptual model:In this step,the RCM is translated into the target CM.We use a derivation procedure to generate the target CM.The derivation procedure basically involves using a set of derivation tables and rules.There are as many tables as there are possible target CMs.Each derivation table contains all the possible combinations of canonical model elements that can be expressed in a given target CM,along with the expression of this combination in the particular format used by the CM in question (graphs,text,tables,etc.).As each GCM element has been labelled in the RCM and we have calculated thefitness of the different CMs, we can now refer to the appropriate derivation table and use it to directly generate fragments of the target CM. These fragments can later be assembled,unambigu-ously,tofinally output the correct target CM.The derivation rules modulate the use of each deri-vation table,altering the RCM in a controlled manner, so that the target CMfinally obtained resembles as closely as possible a target CM developed independently for the same problem.The target CM obtained in the above step can be refined by entering more information.However,this refinement is neither direct,nor can it be formalised, owing to the fact that the GCM cannot be interpreted directly in computational terms.Therefore,the devel-oper will have to select what knowledge to record in the target CM and what to discard.Once complete,the target CM will have the same drawbacks as CMs de-veloped directly,that is,some knowledge about the problem will have been lost and the target CM will be linked to a given development approach.Nevertheless, there is a big difference betweenfiltering problem ele-ments using the current and the proposed conceptual modelling processes.With the development processes now in use,developers do not take into account the problem elements that are not compatible with the CM used(DFD,use cases,etc.)before the problem is ing the proposed approach,developers are encouraged to study and record all the possible problem perspectives in the G CM.Therefore,the loss of knowl-edge occurs when the problem has been understood,thus avoiding early decisions on how to solve the problem at hand.4.Conceptual modelling using our proposalAn example showing the steps of the proposed pro-cess,as well as the use of the components of the GCM is given in the next section.This example will illustrate all the theory explained above.Suppose we have the fol-lowing problem,set out in natural language: Hospital123has two patient admission procedures.Thefirst is the admission of patients on a waiting list.The second is the admission of patients who visit the emergency department.When a patient on a waiting list is admitted,the patient is assigned a room on a ward depending on the com-188O.Dieste et al./The Journal of Systems and Software68(2003)183–198plaint that is to be treated.For example,if a patient is to undergo coronary by-pass surgery,the patient would be assigned to a room on the cardiology ward.The patients admitted from the waiting list are assigneda reference physician.This physician can be any doctorbelonging to the speciality related to the complaint that is to be treated.On the other hand,patients who are admitted from the emergency department are immediately treated prior to any administrative procedure.Once treated,they are assigned a room no later than three hours after admis-sion,according to the same rules as patients admitted from the waiting list.The only difference is that their reference physician will be the doctor who treated them in the emergency department rather than a physician of any particular speciality.Atfirst glance,this problem could apparently be modelled in several different ways.For example,given the problem characteristics(objects present,transfor-mation processes that seem to exist,etc.),a dataflow diagram would appear to be a suitable representation,as would an entity/relationship or a class diagram.How-ever,the use of POAM makes it unnecessary to hy-pothesize,in this moment,which is the best-suited diagram type.During analysis,the problem is modelled using the GCM and,only later,before passing on to design,will we decide which is the best-suited CM and, depending on this decision,which development ap-proach will be most effective for building the future software product.Thefirst step of POAM is preliminary analysis.As this is not a real case,but a test case where(1)the in-formation is not acquired incrementally,as happens during elicitation,(2)there are no ambiguities and(3) complexity is controlled at minimum levels,the model-ling output after preliminary analysis would be ap-proximately as shown in Fig.2.Fig.2shows the preliminary element map.This map shows the key elements present in the problem descrip-tion(patients,doctors,rooms,wards,etc.),as well as the key associations(a patient is admitted from the waiting list or the emergency doctor is the reference physician of an emergency patient).The preliminary element map is easily confused,during preliminary analysis,with se-mantic data models or class diagrams.However,this is only a seeming similarity,as,in this intermediate step of POAM,we have mainly described the structural aspects of the problem,which are,precisely,the aspects on which the above-mentioned conceptual models focus.The preliminary elements map can be likewise ex-pressed by means of the identificative dictionary,or glossary,shown in Table1or by means of narrative text, as shown in Table2.Note that each representation is similar to,while,at the same time,slightly different from,the others.This is due to the fact that each GCM representation mecha-nism focuses on different aspects of the information acquired.The element map highlights,primarily,the associations between the different elements,whereas theO.Dieste et al./The Journal of Systems and Software68(2003)183–198189。
面向侧面的程序设计Aspect Oriented Programming什么是面向侧面程序设计面向侧面的程序设计(aspect-oriented programming,AOP,又称作面向方面的程序设计、观点导向编程)是计算机科学中的一个术语,指一种程序设计范型。
该范型以一种称为侧面(aspect,又译作方面)的语言构造为基础,侧面是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。
面向侧面程序设计起源Xerox(施乐)公司PARC研究中心在1997年的欧洲面向对象编程大会(ECOOP97)上首次提出Aspect-oriented programming(AOP)。
自2002年起,每年分别在欧洲和美国轮流召开专门的面向侧面软件开发(AOSD)国际会议。
与会者包括美国、加拿大、荷兰、英国、法国、丹麦、日本、以色列等。
我国一些学校也对AOP给以关注并开展了一些研究工作。
从AOP概念提出经过了近十年的时间,这种技术现在已经开始被工业界采用。
AOP产生的背景计算机软件设计的一个重要原则,就是要清晰分离各种关注点(separation of concerns),然后分而治之,各个击破,最后形成统一的解决方案例如:信用卡处理系统核心关注点是处理付款;系统级关注点包括日志、事务、认证、安全和性能等等。
软件系统中,某个行为,例如操作日志的记录,存在于软件的各个部分中,这个行为可以看作是横向存在于软件之中,他所关注的是软件的各个部分的一些共有的行为。
在很多情况下,这种行为不属于业务逻辑的一部分。
这种操作并不是业务逻辑调用的必须部分,但是,我们却往往不得在代码中显式进行调用,并承担由此带来的后果。
在目前的技术框架下,通常系统级关注点在逻辑上相互之间彼此正交(相互独立),同时在实现上趋向于和若干核心模块交织。
例如:信用卡管理系统的每个核心业务关注点都和安全、日志等系统关注点相联系。
面向切面编程(AOP)2012-03-01 13:41:02| 分类:框架相关| 标签:aop spring |字号大中小订阅AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。
OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。
当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。
也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。
例如日志功能。
日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。
对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。
这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。
所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。
而剖开的切面,也就是所谓的“方面”了。
然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。
使用“横切”技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。
业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。
横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。
Chapter 3. Operating SystemsMultiple Choice Questions1. Which of the following components of an operating system maintains the directory system?A. Device driversB. File managerC. Memory managerANSWER: B2. Which of the following components of an operating system handles the details associated with particular peripheral equipment?下列哪个组件的一个操作系统处理与特定的外围设备相关联的细节吗?A. Device drivers 设备驱动程序B. File managerC. Memory managerANSWER: A3. Which of the following components of an operating system is not part of the kernel?A. ShellB. File managerC. Scheduler调度器ANSWER: A4. Multitasking in a computer with only one CPU is accomplished by a technique called .多任务在计算机只有一个CPU通过一种技术被称为A. Bootstrapping 自助法B. Batch processing 成批处理C. Multiprogramming多道程序设计ANSWER: C5. Execution of an operating system is initiated by a program called the .A. Window managerB. SchedulerC. Bootstrap引导程序ANSWER: C6. The end of a time slice is indicted by the occurrence of a signal called .时间片结束时发生的一个信号A. An interruptB. A semaphore 一个信号量C. A login一个登录ANSWER: A7. A set of instructions that should be executed by only one process at a time is called .一组指令,应执行一次只有一个进程A. Utility 实用B. Critical region临界区C. Privileged instruction特权指令ANSWER: B8. Which of the following is not an attempt to provide security?A. Passwords密码B. Privilege instructionsC. Multitasking多重任务处理ANSWER: C9. Which of the following events is harmful to an operating system’s performance?A. DeadlockB. InterruptC. Booting引导启动ANSWER: A10. Which of the following is a technique for controlling access to a critical region?下列哪个技术控制访问临界区?A. Spooling 假脱机B. Time sharingC. Semaphore 信号;旗语D. BootingANSWER: C11. Which of the following is not involved in a process switch?A. InterruptB. Process tableC. Dispatcher调度程序D. ShellANSWER: D12. Which of the following is a task that is not performed by the kernel of an operating system?下列哪个是一个任务,并不是由一个操作系统的内核?A. Communicate with the userB. Schedule processes调度进程C. Allocate resources分配资源D. Avoid deadlockANSWER: A13. Which of the following components of an operating system is executed to handle an interrupt signal?A. DispatcherB. Memory managerC. File managerANSWER: AFill-in-the-blank/Short-answer Questions1. In contrast to early batch processing techniques, __A__ allows the user to communicate with the computer while the user’s application is being executed. In turn, this type of processing requires that the computer’s responses to its environment be performed in a timely manner, a requirement known as __B__.与早期的批处理技术相比,便利允许用户与计算机进行通信,用户的应用程序被执行。
java面试题英文Java Interview QuestionsIntroduction:In recent years, Java has become one of the most popular programming languages worldwide. Its versatility and wide range of applications have made it a sought-after skill in the IT industry. As a result, job interviews often include a section dedicated to Java. In this article, we will explore some commonly asked Java interview questions and provide detailed explanations and solutions. Whether you are a seasoned developer or preparing for your first Java interview, this article will help you enhance your knowledge and boost your confidence.1. What is Java?Java is a high-level, object-oriented programming language developed by Sun Microsystems. It was designed to be platform-independent, which means Java programs can run on any operating system that has a Java Virtual Machine (JVM). Java consists of a compiler, runtime environment, and a vast library, making it a powerful tool for building a wide range of applications.2. Explain the difference between JDK, JRE, and JVM.JDK (Java Development Kit) is a software package that includes the necessary tools for developing, compiling, and running Java applications. It consists of the Java compiler, debugger, and other development tools.JRE (Java Runtime Environment) is a software package that contains the necessary components to run Java applications. It includes the JVM and a set of libraries required to execute Java programs.JVM (Java Virtual Machine) is a virtual machine that provides an execution environment for Java programs. It interprets the Java bytecode and translates it into machine code that can be executed by the underlying operating system.3. What is the difference between a class and an object?In object-oriented programming, a class is a blueprint or template for creating objects. It defines the properties and behaviors that an object will possess. An object, on the other hand, is an instance of a class. It represents a specific entity or concept and can interact with other objects.4. What are the features of Java?Java is known for its robustness, portability, and security. Some key features of Java include:- Object-oriented: Java follows the object-oriented programming paradigm, allowing developers to build modular and reusable code.- Platform-independent: Java programs can run on any platform that has a JVM, including Windows, Mac, and Linux.- Memory management: Java has automatic memory management through garbage collection, which helps in deallocating memory occupied by unused objects.- Exception handling: Java provides built-in mechanisms for handling exceptions, ensuring the smooth execution of programs.- Multi-threading: Java supports concurrent programming through multi-threading, allowing programs to perform multiple tasks simultaneously.5. Explain the concept of inheritance in Java.Inheritance is a fundamental concept in object-oriented programming, where a class inherits properties and behaviors from another class, known as the superclass or base class. The class that inherits these properties is called the subclass or derived class. In Java, inheritance allows code reuse, promotes modularity, and enables hierarchical classification of objects.There are several types of inheritance in Java, including single inheritance (where a class inherits from only one superclass) and multiple inheritance (where a class inherits from multiple superclasses using interfaces).6. What is the difference between method overloading and method overriding?Method overloading refers to the ability to have multiple methods with the same name but different parameters within a class. The methods can have different return types or different numbers and types of arguments. The compiler determines which method to call based on the arguments provided during the method call.Method overriding, on the other hand, occurs when a subclass provides a specific implementation for a method that is already defined in its superclass. The signature of the overridden method (name, return type, and parameters)must match exactly with that of the superclass. The overridden method in the subclass is called instead of the superclass's method when invoked.Conclusion:In this article, we have explored some common Java interview questions and provided detailed explanations and solutions. Understanding these concepts will not only help you ace your Java interview but also enhance your overall programming skills. Remember to practice coding and explore real-world scenarios to strengthen your understanding of Java. Good luck with your Java interviews!。
计算机专业英语考试试题及答案一、选择题1. Which of the following is NOT a programming language?A. JavaB. PythonC. HTMLD. CSS2. What does the acronym "SQL" stand for?A. Structured Query LanguageB. Simple Query LanguageC. Script Query LanguageD. Secure Query Language3. Which protocol is commonly used for sending and receiving emails?A. FTPB. HTTPC. SMTPD. TCP4. What does the term "CPU" refer to?A. Central Processing UnitB. Computer Processing UnitC. Central Program UnitD. Computer Program Unit5. Which of the following is NOT a type of network topology?A. StarB. RingC. MeshD. Scroll二、填空题1. HTML stands for Hypertext Markup Language, which is used for ____________.2. The process of converting source code into machine code is called ____________.3. IP address stands for ____________.4. The act of copying files from a remote server to a local computer is known as ____________.5. The programming language developed by Apple Inc. for iOS and macOS is ____________.三、简答题1. What is the difference between a compiler and an interpreter? Provide examples of programming languages that use each of these methods.2. Explain the concept of object-oriented programming (OOP) and provide an example of a programming language that utilizes this paradigm.3. Describe the client-server model and provide an example of a commonly used protocol within this model.四、论述题Discuss the impact of artificial intelligence (AI) on various industries. Provide examples of how AI is being used in fields such as healthcare, finance, and transportation. Analyze the potential benefits and challenges of implementing AI in these industries.答案:一、选择题1. C. HTML2. A. Structured Query Language3. C. SMTP4. A. Central Processing Unit5. D. Scroll二、填空题1. creating and structuring the content of a webpage2. compilation3. Internet Protocol4. downloading5. Swift三、简答题1. A compiler translates the entire source code into machine code before the program is executed. Examples of languages that use compilers are C, C++, and Java. On the other hand, an interpreter translates and executes the source code line by line. Python and Ruby are examples of languages that use interpreters.2. Object-oriented programming (OOP) is a programming paradigm that organizes data and functions into reusable objects. It focuses on the concept of classes and objects, allowing for code reuse and encapsulation. An example of a programming language that uses OOP is Java, where objects are instances of classes and can interact with each other through methods and attributes.3. The client-server model is a distributed computing architecture wherea server provides services or resources to multiple clients. The clients request and receive these resources through the network. An example of a commonly used protocol within this model is the Hypertext Transfer Protocol (HTTP), which is used for communication between web browsers (clients) and web servers.四、论述题Artificial intelligence (AI) has had a significant impact on various industries. In healthcare, AI is being used for diagnoses and treatments, analyzing medical images, and personalized medicine. For example, AI-powered algorithms can help detect diseases like cancer at an early stage, leading to better treatment outcomes. In finance, AI is utilized for fraud detection, algorithmic trading, and customer service. AI algorithms can analyze large amounts of financial data to identify patterns and make accurate predictions. In transportation, AI is being employed for autonomous vehicles, traffic management, and logistics optimization. Self-driving cars, for instance, use AI algorithms to navigate and make decisions on the road.The implementation of AI in these industries brings about many benefits, such as increased efficiency, improved accuracy, and cost savings. AI systems can process and analyze vast amounts of data much faster than humans, leading to faster and more accurate results. However, there are also challenges to consider. Privacy and security concerns arise as AI systems handle sensitive information. There is also the worry of job displacement, as AI automation may replace certain human tasks. Additionally, ethical considerations need to be addressed, such as bias in algorithms and the potential for AI to be used for malicious purposes.Overall, the impact of AI on various industries is undeniable. It has the potential to revolutionize healthcare, finance, transportation, and many other sectors. However, careful implementation and regulation are necessary to ensure its responsible and beneficial use.。
Extended Abstract:Towards a Semiotics of Object-andAspect-Oriented DesignJames Noble1,Robert Biddle2,Ewan Tempero3,and David Pearce11Computer ScienceVictoria University of WellingtonNew Zealand2Human-Oriented Technology LabCarleton UniversityOttawa,Canada3Software EngineeringThe University of AucklandNew ZealandAbstract.Object-oriented design is based on the argument that objects in a pro-gram act as a simulation of objects in the real world.This paper will providea semiotic account of object-oriented design patterns,treating an object as asign comprised of some part of the real world,its realisation in the program,and the programmers intent about the program design(that the object model theworld).The paper will then go on to discuss the developing discipline of aspect-orientation affects the representational discourses of object-orientation.Consid-ering the semiotics of object-oriented design can address these quetsions,bothhelping programmers design their programs,understand the way their designs“work”,and informing the general philosophy of computer science.1IntroductionAn object-oriented design is a“description of communicating objects”[13,p.3].In this paper,we will provide a semiotic account of object-oriented design.Semiotics is the study of signs in society,that investigates the way meaning is carried by communica-tion,treating communication as an exchange of signs.When semiotics began in the early years of the last century,most work was concerned with conventional signs—first speech,and then writing[11].Since then,the scope of semiotics has widened to cover all kinds of signs,to the point where semiotics underlies much of structuralist and post-structuralist literary theory,film studies,cultural studies,advertising,and even the theory of popular music and studies of communications between animals(zoosemi-otics)and within them(biosemiotics)[21].2SemioticsSemiotics,as defined by Saussure[8],is the study of signs in society;where a sign is“something standing for something else”[11].Since Saussure,semiotics has beenapplied to a wide range of different kind of signs,and for a range of diverse purposes [1,7,10–12,6].For the analysis in this paper,we will follow Eco[11]and adopt the Peirce’s triadic model of the sign[19]shown in Fig.1.representamen referentintrepretantFig.1.Peirce’s SignPeirce’s sign is a three-part relationship between a representamen,a referent and a interpretant.The representamen is some phenomenon that an individual can see,hear, sense,or imagine.The referent(Peirce’s term is object:we shall use referent in this article to avoid confusion between semiotic objects and the objects in object-oriented programs)is the a concept or entity to which the referent refers:the“something else”for which the referent stands.Finally,the interpretant is the mental concept that the representamen produces.For example,consider the English word“chocolate”as a Peircian sign.The spoken or written word“chocolate”is the representamen;a solid compound of cocoa beans, cocoa butter,sugar and milk is the referent;the resulting mental concept of chocolate in the reader or hearer of the word is the interpretant.3Object-Oriented DesignA program execution is regarded as a physical model,simulating the be-haviour of either a real or imaginary part of the world.Object-Oriented Programming in the BETA Programming Language.Ole Lehrmann Madsen,Birger Møller-Pedersen and Kristen Nygaard[15] This quote from Lehrmann Madsen et al.outlines the core principle underlying object-oriented design,that an object-oriented program simulates(or models)the world. To model a farm,for example,a program could have a Bovine class,where each object represented a cow;an Ovine class where each object represented a sheep;a Porcine class where each object represented a pig,and so on[1,2,17,16].Following a Peir-cian approach we can take this simulation or modelling relationship to be semiotic:that is,we can treat a program as a sign where the representamen is the set of objects and classes in the program;the referent the set of entities in the world that the program models,and the interpretant the concept that a particular program models a particular real or imaginary subpart of the world[2].For an object-oriented program,we go fur-ther,taking a particular object in the program as a repsentamen;the part of the worldthat object models as a referent;and the idea that a particular object models a particular piece of the world (that the Bovine instance at memory location OxDEADBEEF models Daisy the cow in the field somewhere)as the interpretant of the sign.(see figure2).object object−models−entityentity in the worldFig.2.An Object as a Sign4Implicit SignsUnfortunately the question of what is an object in the program and an object in the world are rarely so simple.Figure 3shows the almost generic diagram of students attending university courses.Versions of this diagram are found in many publications on object-oriented design [18,3,4,20,9].Many students attend many courses;Courses have a course code,a title string and a teacher;students have numbers and (reluctantly,at least at our university’s registry)names.**PrerequisiteCourse CodeTitle FeeWorkload FacultyNameOffice*NameNumber Student**Attends *Amount TeachesFig.3.A more complex design,describing part of a universityThe problems arise when we consider a classical object-oriented implementation of such a design.The student class,for example,starts with easy and obvious declarationsfor attributes(and signatures for methods)that provide the central functionality for each class.These are relatively simple,storing the key attributes and doing basic calculations. In Java,for example,the code may be as follows:class Student{String name;Integer number;HashSet<Course>attends;}The course class is similar—but at the bottom,we alsofind various pieces of code for explicitly representing and maintaining the relationships between these classes. class Course{String code;String title;int workload;HashSet<Student>attendees;HashSet<Course>prerequisites;HashMap<Faculty,Amount>teacher;void enrol(Student s){attendees.add(s);s.attends.add(this);}void withdraw(Student s){attendees.remove(s);s.addends.remove(this);}}This includes,for example,HashSet objects to record which student is attending which course(and vice versa),as well as code for enrolling and withdrawing students, whilst ensuring that all data structures remain consistent and correct.In fact,looking back at Student,things like the attends hash-set and the totalWorkload are prob-ably more to do with relationships with courses too.But,consider the UML design from Figure3again:we have three classes,each with a few attributes,and simple straightforward relationships between them.This is not well described by our simple semiotic model:first,objects like Courses,now contain Hash-Sets and other subsidiary objects that implement intermediary data structures;second, concepts such as the“attends”relationship,that are explicit in a UML diagram such as Figure3,are split or tangled into the implementation of other objects.Whatever the semiotic position of the attends HashSet,it is not representing an individual object, an individual“part of the world”that the program is modelling.5Aspect-Oriented ModellingIn some cases,such as that above,adopting an aspect-oriented approch can resolve the tension in semiotic structure of the program.In implementation terms,aspect-orientation[14,5]is generally described as including a second kind of programming construct,an aspect,that can include extra code and data structures into a existing class definition. From our point of view,however,an aspect,like a class or object,is simply an artifiact, a representamen,within a program,which can participate in semiotic relations with the world the program will mode.For example,using aspects in a programming language such as AspectJ to imple-ment the relationships from Figure3allows their definitions to be made quite explicit: aspect Attends extendsSimpleStaticRel<Student,Course>{}aspect Teaches extendsStaticRel<Course,Faculty,Amount>{}aspect Prerequisites extendsSimpleStaticReflexiveRel<Course>{}This code introduces three aspects which correspond directly to the three relation-ships Attends,Prerequisites and Teaches in the UML design:these aspects can incor-porate the code necessary to add and remove objects from the relationships.Then,the class definitions,say for the Student and Course classes,no longer need to have the extraneous code or data to implement the relationships.class Student{class Course{String name;String code;Integer number;String title;}int workload;}In this way,the full paper will show that aspect-orientation can produce designs with more straightfoward semiotic properties than object-orientation:once again,a single element in the program—now either an object or an aspect instance is a representamen for a part of the real world(the semiotic referent);the programmer’s interpretant being precisely this modelling relationship:that this object actually models some part of the world.6ConclusionTo conclude,in this paper we will demonstrate how object-oriented designs can be anal-ysed as signs,and the worth of that analysis.Treating objects as signs provides us with an analytic framework that is based on semiotics,rather than logic,mathematics,or ad-hoc ing this framework,we can address addressed a open questions about software design—particularly explicating the relationship between program designs an the external worlds they are designed to model.We hope that this framework can provide a platform for future progress in the semiotic and philosophical analyses of the practices of programming.References1.Peter Bøgh Andersen.A Theory of Computer Semiotics.Cambridge University Press,secondedition,1997.2.Peter Bøgh Andersen.Semiotic models of algorithmic signs.In Karl-Heinz R¨o diger,edi-tor,Algorithmik—Kunst—Semiotik.Hommage f¨u r Frieder Nake,pages165–211.Synchron, Heidelberg,2003.3.Gavin Bierman and Alisdair Wren.First-class relationships in an object-oriented language.In ECOOP Proceedings,volume3586of Lecture Notes in Computer Science,pages262–282.Springer-Verlag,2005.4.Grady Booch,Ivar Jacobson,and James Rumbaugh.The Unified Modeling Language UserGuide.Addison-Wesley,1998.5.Siobh´a n Clarke and Elisa Baniassad.Aspect-Oriented Analysis and Design:The ThemeApproach.Addison-Wesley,2005.6.Paul Cobley,editor.The Routledge Companion to Semiotics and Linguistics.Routledge,New Fetter Lane,London,2001.7.Paul Cobley and Litza Jansz.Semiotics for Beginners.Icon Books,Cambridge,England,1997.8.Ferdinand de Saussure.Cours de linguistique g´e n´e rale.V.C.Bally and A.Sechehaye(eds.),Paris/Lausanne,1916.9.Desmond Francis D’Souza and Alan Cameron Wills.Objects,Components,and FrameworksWith Uml:The Catalysis Approach.Addison-Wesley,1998.10.Anthony Easthope and Kate McGowan,editors.A Critical And Cultural Theory Reader.Allen&Unwin,1992.11.Umberto Eco.A Theory of Semiotics.Indiana University Press,1976.12.Andrew Edgar and Peter Sedgwick,editors.Key Concepts in Curtural Theory.Routledge,New Fetter Lane,London,1999.13.Erich Gamma,Richard Helm,Ralph E.Johnson,and John Vlissides.Design Patterns.Addison-Wesley,1994.14.Gregor Kiczales,John Lamping,Anurag Mendhekar,Chris Maeda,Cristina Videira Lopes,Jean-Marc Loingtier,and John Irwin.Aspect oriented programming.In ECOOP Proceed-ings,1997.15.Ole Lehrmann Madsen,Birger Møller-Pedersen,and Kristen Nygaard.Object-Oriented Pro-gramming in the BETA Programming Language.Addison-Wesley,1993.16.James Noble and Robert Biddle.Patterns as signs.In ECOOP Proceedings,2002.17.James Noble,Robert Biddle,and Ewan Tempero.Metaphor and metonymy in object-oriented design patterns.In Proceedings of Australian Computer Science Conference (ACSC).Australian Computer Society,2002.18.David Pearce and James Noble.Relationship aspects.In To appear in AOSD’06,2006.19.Charles Sanders Peirce.Collected Papers.four volumes.Harvard University Press,1934–1948.20.Rob Pooley and Perdita ing UML:Software Engineering with Objects and Com-ponents.Addison-Wesley,1999.21.Thomas A.Sebeok.Nonverbal communication.In Cobley[6],chapter1.。
From Object-Oriented to Aspect-Oriented DatabasesAwais Rashid1, Elke Pulvermueller21Computing Department, Lancaster University, Lancaster LA1 4YR, UKmarash@2Wilhelm Schickard Institute for Computer Science, University of Tuebingen, 72076Tuebingen, Germanypulvermueller@Abstract. Over the recent years aspect-oriented programming (AOP) has foundincreasing interest among researchers in software engineering. Aspects areabstractions which capture and localise cross-cutting concerns. Althoughpersistence has been considered as an aspect of a system aspects in thepersistence domain in general and in databases in particular have been largelyignored. This paper brings the notion of aspects to object-oriented databases.Some cross-cutting concerns are identified and addressed using aspects. Anaspect-oriented extension of an OODB is discussed and various open issuespointed out.1 IntroductionOver the recent years aspect-oriented programming (AOP) [18, 19] has found increasing interest among researchers in software engineering. It aims at easing software development by providing further support for modularisation. Aspects are abstractions which serve to localise any cross-cutting concerns e.g. code which cannot be encapsulated within one class but is tangled over many classes. A few examples of aspects are memory management, failure handling, communication, real-time constraints, resource sharing, performance optimisation, debugging and synchronisation. In AOP classes are designed and coded separately from aspects encapsulating the cross-cutting code. An aspect weaver is used to merge the classes and the aspects.Aspect-orientation appears to be following the same development phases as object-orientation. Introduced through object-oriented programming in the late 1960s (SIMULA-67) object-orientation is now employed in a wide range of software development activities such as analysis, design, modelling, etc. It has also been successfully applied in the areas of databases and knowledge-bases. Likewise, research in aspect-orientation is now progressing from programming into other areas such as specification [6, 7, 9, 30] and design [15, 17, 41]. Its applicability in the area of databases has, however, not yet been explored. Although persistence has been considered as an aspect of a system [27, 41] aspects in the persistence domain in general and in databases in particular have been largely ignored. This paper brings the notion of aspects to object-oriented databases in order to achieve a better separation of concerns. Reflecting on the fact that AOP is not limited to object-oriented programming languages [19], we are of the view that aspects can be employed in database technology other than OODBs e.g. relational, object-relational, activedatabases, etc. This will, however, form the subject of a future paper. The discussion in this paper focuses on extending object-oriented databases with aspects.The next section provides an overview of aspect-oriented programming. Section 3 identifies some of the cross-cutting concerns in OODBs and discusses how aspects can be employed to address these effectively. This is followed by a description of an aspect-oriented extension of an object-oriented database. Extending object-oriented databases with aspects is a new concept and a number of issues need to be resolved before it can be considered as mature database technology. Some of the key open issues are identified in section 5. Section 6 discusses some related work while section 7 summarises and concludes the paper.2 Aspect-Oriented ProgrammingAspect-oriented programming aims at achieving a better separation of concerns by localising cross-cutting features e.g. code implementing non-functional requirements such as memory management, failure handling, debugging, synchronisation, etc. Code for debugging purposes or for object synchronisation, for instance, is spread across all the classes whose instances have to be debugged or synchronised, respectively. Although patterns [12] can help to deal with such cross-cutting code by providing guidelines for a good structure, they are not available or suitable for all cases and mostly provide only partial solutions to the code tangling problem. With AOP, such cross-cutting code is encapsulated into separate constructs: the aspects. As shown in fig. 1 classes are designed and coded separately from code that cross-cuts them. The links between classes and aspects are expressed by explicit or implicit join points.[17] categorises1 these links as:•open: both classes and aspects know about each other•class-directional: the aspect knows about the class but not vice versa•aspect-directional: the class knows about the aspect but not vice versa •closed: neither the aspect nor the class knows about the otherAn aspect weaver is responsible for merging the classes and the aspects with respect to the join points. This can be done statically as a phase at compile-time or dynamically at run-time [16, 19].Different AOP techniques and research directions can be identified. They all share the common goal of providing an improved separation of concerns. AspectJ [3] is an aspect-oriented extension to Java. The environment offers an aspect language to formulate the aspect code separately from Java class code, a weaver and additional development support. AOP extensions to other languages have also been developed.[8] describes an aspect language and a weaver for Smalltalk. An aspect language for the domain of robust programming can be found in [11].Other AOP approaches aiming at achieving a similar separation of concerns include subject-oriented programming [13], composition filters [1] and adaptive programming [23, 28]. In subject-oriented programming different subjective perspectives on a single object model are captured. Applications are composed of “subjects” (i.e. partial object models) by means of declarative composition rules. The composition filters approach extends an object with input and output filters. These filters are used to localise non-functional code. Adaptive programming is a special case of AOP where one of the building blocks is expressible in terms of graphs. The other building 1 The categorisation determines the reusability of classes and aspectsblocks refer to the graphs using traversal strategies. A traversal strategy can be viewed as a partial specification of a class diagram. This traversal strategy cross-cuts the class graphs. Instead of hard-wiring structural knowledge paths within the classes, this knowledge is separated.AOP also bears a close relation to generative programming [10] and reflection [41]. Experience reports and assessment of AOP can be found in [17, 31].3 Aspects in Object-Oriented DatabasesIn this section we identify some of the cross-cutting concerns in object databases and discuss how these can be addressed effectively using aspects. The first three examples are from the evolution domain. Our previous work on object database evolution [32, 33, 34, 35, 36, 37, 39] formed the motivation behind exploring the applicability of aspects in this area. This is followed by an example based on clustering. Some other cross-cutting concerns have also been pointed out. It should be noted that the following discussion regards aspects as persistent abstractions residing in the database. This is a natural extension of existing work on lifetime of aspects [16, 19, 26] which argue that at least some of the aspects should live for the lifetime of the program execution and not die at compile-time.3.1 Instance AdaptationOur first example is based on instance adaptation during class versioning [5, 29, 40]. Class versioning allows several versions of one type to be created during evolution. An instance is bound to a specific version of the type and when accessed using another type version (or a common type interface) is either converted or made to exhibit a compatible interface. This is essential to ensure structural consistency. A detailed description of class versioning is beyond the scope of this paper. Interested readers are referred to [5, 29, 40].We first consider the instance adaptation strategy of ENCORE [40]. A similar approach is employed by AVANCE [5]. As shown in figure 2, applications access instances of a class through a version set interface which is the union of the properties and methods defined by all versions of the class. Error handlers are employed to trap incompatibilities between the version set interface and the interface of a particular class version. These handlers also ensure that objects associated with the class version exhibit the version set interface. As shown in fig. 2(b) if a new class version modifies the version set interface (e.g. if it introduces new properties and methods) handlers for the new properties and methods are introduced into all the former versions of the type.On the other hand, if creation of a new class version does not modify the version set interface (e.g. if the version is introduced because properties and methods have been removed), handlers for the removed properties and methods are added to the newly created version (cf. fig. 2(c)).Fig. 2. Class Versioning in ENCOREThe introduction of error handlers in former class versions is a significant overhead especially when, over the lifetime of the database, a substantial number of class versions can exist prior to the creation of a new one. Besides, if the behaviour of some handlers needs to be changed maintenance has to be performed on all the class versions in which the handlers were introduced. To demonstrate our solution we have chosen the scenario in fig. 2(b). Similar solutions can be employed for other cases. As shown in fig. 3(a) instead of introducing the handlers into the former class versions they are encapsulated in an aspect. Links between aspects and class versions are open [17] as an aspect needs to know about the various class versions it can be applied to while a class version needs to be aware of the aspect that needs to be woven to exhibit a specific interface. Fig. 3(b) depicts the case when an application attempts to access the age and height attributes in an object associated with version 1 of class Person. The aspect containing the handlers is woven into the particular class version. The handlers then simulate (to the application) the presence of the missing attributes in the associated object.Encapsulating handlers in an aspect offers an advantage in terms of maintenance as only one aspect is defined for a set of handlers for a number of older class versions. Behaviour of the handlers can be modified within the aspect instead of modifying them within each class version. Aspects also help separate the instance adaptation strategy from the class versions. For example, let us suppose one wants to employ a different instance adaptation approach, the use of update/backdate methods for dynamic instance conversion between class versions (as opposed to simulating a conversion) [29]. In this case only the aspects need to be modified without having the problem of updating the various class versions. These are automatically updated to use the new strategy when the aspect is woven. The aspect-oriented approach has a run-time overhead as aspects need to be woven and unwoven (if adaptation strategies are expected to change). However, this overhead is smaller than that of updating and maintaining a number of class versions. The overhead can be reduced by leaving anaspect woven and only reweaving if the aspect has been modified. Details of theFig. 3. The Aspect-Oriented Instance Adaptation Approach3.2 InheritanceThe modification of the inheritance hierarchy in an object database requires rules to resolve conflicts between locally defined and inherited class members [4, 34]. If the system supports multiple inheritance additional rules need to be defined for duplication resolution due to the multiple-path problem [4, 34]. These rules are implemented in a separate system component which is delegated the responsibility of enforcing these rules when new classes are introduced or existing inheritance relationships modified. Alternatively, in a self-descriptive object-oriented model they are implemented in the system class used to instantiate the class meta-objects. In either case modifying the behaviour of the rules introduces an additional evolution problem as consequences for existing classes and their instances can be severe. Besides, there is an overhead in terms of checking for duplication resolution when the system supports multiple inheritance but the inheritance chain does not include any multiple inheritance links. These problems can be addressed by consideringFig. 4. Inheritance as an aspect of a systemAs shown in fig. 4 inheritance relationships can be woven into classes using an inheritance aspect. Existing inheritance relationships can be unwoven and new ones woven in order to modify the inheritance hierarchy. Conflict resolution rules need to be woven or rewoven only if they have not previously been woven or have been modified respectively. It should be noted that the conflict resolution rules can be encapsulated in a separate aspect. For simplicity we have included them in the inheritance aspect. If the conflict resolution rules are modified only the conflict resolution aspect would need to be rewoven. Provided the system offers an evolution framework with a flexible instance adaptation strategy such as the one described in section 3.1 changes to instances of existing classes can be propagated relatively easily. As shown in fig. 4(b) duplication resolution rules to counter the multiple-path problem need to be introduced into the classes using multiple inheritance only2. This reduces the overhead of checking for duplication resolution when multiple inheritance is not being used. This also makes it possible to swiftly transform a single inheritance system to a multiple inheritance one and vice versa.3.3 VersioningVersioning of objects has always been a key requirement for databases especially systems aiming at providing integrated support for applications such as computer aided design (CAD), computer aided software engineering (CASE), etc. Existing work on versioning e.g. [4, 14] recognises that all objects residing in the database do not need to be versionable. If versioning features are encapsulated in an aspect these can be woven into those objects only that need to be versioned and not others. This also reduces the overhead to check whether an object is versioned or not. Besides, if the system supports class versioning, a generic versioning aspect could encapsulate the versioning functionality while specific aspects could provide additional object versioning and class versioning semantics to objects and classes respectively.3.4 ClusteringTraditionally it is the task of the application programmer to ensure that related objects are clustered together. However, the task is easy only for a small number of objects. As the number of objects that need to be clustered increases (it should be noted that the clustering reasons could be different for different groups of objects) the programmer’s task becomes more and more complicated. The situation worsens if the same object needs to be clustered together with more than one group. Considering clustering as an aspect of data residing in a database would allow managing these complex scenarios transparently of the programmer. The programmer can specify clustering as an aspect of a group of objects regardless of whether some objects in the group also form part of another group. When the clustering aspects are woven an efficient storage strategy can be worked out by the system3. Furthermore, if the clustering requirements for an object change the programmer can re-configure the clustering aspect to indicate which group of objects should be clustered with this object. This will help manage the physical reorganisation of the various clustered objects transparently of the programmer. It should also be noted that clustering is not necessarily an aspect of all the objects residing in the database. Introducing clustering as an aspect allows only those objects having this aspect to be clustered.2 Issues relating to weaving an aspect as a consequence of another aspect being woven have been discussed in [20]3 This can be done by the weaver.3.5 Other possible aspectsConstraints can be considered as an aspect of the object database. Traditionally constraints are specified at the application level or through a DBMS service. Considering constraints an aspect of database entities and providing a concrete abstraction would simplify their specification and management. Access rights, security and data representation can also be regarded as aspects.4 An Aspect-Oriented Extension of an OODBIn [36] we described a higher level model of an object-oriented database. The model is based on the observation that three types of entities exist within an object-oriented database. These are:•Objects•Meta-objects•Meta-classesAs shown in fig. 5(a) entities of each type reside within a specific virtual space within the database. Objects reside in the object space and are instances of classes. Classes together with defining scopes, class properties, class methods, etc. form the meta-object space [35]. Meta-objects are instances of meta-classes which constitute the meta-class space.For prototyping the aspects presented in section 3 we have extended the model with an aspect-space (fig. 5(b)). Aspects reside in the aspect space and are instances of the meta-class aspect. For simplicity we have shown only the versioning aspect.Fig. 5. Virtual Spaces in an Object DatabaseFig. 5(b) also shows that the notion of inter-space4 and intra-space relationships5 introduced in [36] seamlessly extends to the aspect space. Aspects in the aspect space bear a spect-of/has-aspect relationships with entities residing in other virtual spaces. These relationships indicate an open link [17] between an aspect and the corresponding entity. Class-directional and aspect-directional links [17] can also be4 Inter-space relationships are those where participating entities reside in different virtual spaces e.g. relationships among meta-objects and objects.5 Intra-space relationships are those where the participating entities belong to the same virtual space e.g. relationships among objects, relationships among meta-objects.created as the system supports uni-directional relationships [36]. Implementation of the semantics of closed links has not yet been explored. Although not shown in figure 5(b) intra-space relationships can exist within an aspect space. For example, a specific class versioning aspect can have a specialisation relationship with the versioning aspect. Note that the specialisation does not need to have semantics similar to the specialisation relationship (inheritance) in object-oriented models. It can simply be a conceptual specialisation.As shown in figure 5(b), versioning is an aspect of Object 2, Class B and Class C. These are the entities that will be versioned. Class A and object 1 will not be versioned. It should be noted that object 1 could have a versioning aspect despite Class A not having one.The aspect-oriented extension has been layered on top of the Jasmine object database management system6. Weaving is carried out by weavers developed for the specific purposes. Development of a more sophisticated weaver is in progress. It is worth mentioning that the aspect-oriented instance adaptation strategy has been incorporated into the SADES evolution system [32, 33, 34, 37, 39] and has proved to be a more flexible implementation as compared to instance adaptation in existing systems [38].5 Open IssuesThis paper introduces the idea of persistent aspects. One of the open research issues is the persistent representation of an aspect. This is because, besides aspects in the persistence domain described in this paper, application programs employing aspect-oriented programming techniques and run-time aspects will require aspects to outlive the program execution i.e. there will be a need to make aspects persistent. An example scenario is an automated software development environment where both components and aspects reside in a database. The appropriate components and aspects are retrieved by the assembling process which carries out the weaving. [31] also identifies the need of an aspect repository when employing aspects in a distributed environment. Due to the different aspect representations e.g. AspectJ, Composition Filters, etc. used in application programs, persistent representation of aspects needs careful exploration. Persistent aspects and dynamic weaving introduce additional overhead at run-time and can be feasible only with efficient weaving mechanisms. The development of efficient weavers is therefore an important research issue.Other issues that need to be addressed include the applicability of the concepts in relational, object relational, active and deductive databases, etc. Another area worth exploring is whether querying support should be extended to aspects residing in the database. Aspect-based querying and retrieval can also pose interesting research questions.6 Related WorkAlthough separation of concerns in object-oriented databases has not been explicitly considered, some of the existing work falls in this category. The concept of object version derivation graphs [25] separates version management from the objects. A similar approach is proposed by [32, 33, 34, 37, 39] where version derivation graphs manage both object and class versioning. Additional semantics for object and class versioning are provided separately from the general version management technique.[24] employs propagation patterns [21, 22] to exploit polymorphic reuse mechanisms 6 /in order to minimise the effort required to manually reprogram methods and queries due to schema modifications. Propagation patterns are behavioural abstractions of application programs and define patterns of operation propagation by reasoning about the behavioural dependencies among co-operating objects. [36] implements inheritance links between classes using semantic relationships which are first class-objects. The inheritance hierarchy can be changed by modifying the relationships instead of having to alter actual class definitions. In the hologram approach proposed by [2] an object is implemented by multiple instances representing its many faceted nature. These instances are linked together through aggregation links in a specialisation hierarchy. This makes objects dynamic since they can migrate between the classes of a hierarchy hence making schema changes more pertinent.7 ConclusionsThe use of AOP to achieve a better separation of concerns has shown promising results [17]. Although some of the existing work in object-oriented databases implicitly addresses cross-cutting concerns, no attempts have been made to capture these explicitly. The novelty of our work is in extending the notion of aspects to object-oriented databases in order to capture these concerns explicitly. We have identified a number of cross-cutting features and discussed how these can be effectively addressed using aspects. Some examples have been discussed in order to demonstrate the effectiveness of aspects in localising the impact of changes, hence making maintenance easier. We have presented an aspect-oriented extension of an object database which is used to prototype the various examples. The extension is natural and seamless and does not affect existing data or applications. Our work in the immediate future will focus on persistent representations of aspects and development of efficient weaving mechanisms. We believe that these issues will be crucial for the effective application of aspects in object databases. Development of an aspect-oriented evolution framework for object databases is another area of interest. We are also interested in exploring the applicability of aspects in database technology other than OODBs.References[1] Aksit, M., Tekinerdogan, B., “Aspect-Oriented Programming using Composition Filters”, Proceedings of theAOP Workshop at ECOOP ’98, 1998[2] Al-Jadir, L., Leonard, M., “If We Refuse the Inheritance …”, Proceedings of DEXA 1999, LNCS 1677, pp.560-572[3] AspectJ Home Page, /, Xerox PARC, USA[4]Banerjee, J. et al., “Data Model Issues for Object-Oriented Applications”, ACM Transactions on OfficeInformation Systems, Vol. 5, No. 1, Jan. 1987, pp. 3-26[5] Bjornerstedt, A., Hulten, C., “Version Control in an Object-Oriented Architecture”, In Object-OrientedConcepts, Databases, and Applications (eds: Kim, W., Lochovsky, F. H.), pp. 451-485[6] Blair, L., Blair, G. S., “The Impact of Aspect-Oriented Programming on Formal Methods”, Proceedings of theAOP Workshop at ECOOP ’98, 1998[7] Blair, L., Blair, G. S., “A Tool Suite to Support Aspect-Oriented Specification”, Proceedings of the AOPWorkshop at ECOOP ’99, 1999[8] Boellert, K., “On Weaving Aspects”, Proc. of the AOP Workshop at ECOOP ’99[9] Clarke, S., et al., “Separating Concerns throughout the Development Lifecycle”, Proceedings of the AOPWorkshop at ECOOP ’99, 1999[10] Czarnecki, K., “Generative Programming: Principles and Techniques of Software Engineering Based onAutomated Configuration and Fragment-based Component Models”, PhD Thesis, Technical University of Ilumenau, Germany, 1999[11] Fradet, P., Suedholt, M., “An Aspect Language for Robust Programming”, Proceedings of the AOP Workshopat ECOOP ’99, 1999[12] Gamma, E. et al., “Design Patterns - Elements of Reusable Object-Oriented Software”, Addison Wesley,c1995[13] Harrison, W., Ossher, H., “Subject-Oriented Programming (A Critique of Pure Objects)”, Proceedings ofOOPSLA 1993, ACM SIGPLAN Notices, Vol. 28, No. 10, Oct. 1993, pp. 411-428[14] Katz, R. H., “Toward a Unified Framework for Version Modeling in Engineering Databases”, ACMComputing Surveys, Vol. 22, No. 4, Dec. 1990, pp. 375-408[15] Kendall, E.A., “Role Model Designs and Implementations with Aspect Oriented Programming”, Proceedingsof OOPSLA 1999, ACM SIGPLAN Notices, Vol. 34, No. 10, Oct. 1999, pp. 353-369[16] Kenens, P., et al., “An AOP Case with Static and Dynamic Aspects”, Proceedings of the AOP Workshop atECOOP ’98, 1998[17] Kersten, M. A., Murphy, G. C., “Atlas: A Case Study in Building a Web-based Learning Environment usingAspect-oriented Programming”, Proc. of OOPSLA 1999, ACM SIGPLAN Notices, Vol. 34, No. 10, Oct. 1999, pp. 340-352[18] Kiczales, G., Irwin, J., Lamping, J., Loingtier, J., Lopes, C., Maeda, C., Mendhekar, A.,“Aspect-OrientedProgramming”, ACM Computing Surveys, Vol. 28, No. 4, Dec. 1996[19] Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J., Irwin, J., “Aspect-OrientedProgramming”, Proceedings of ECOOP ’97, LNCS 1241, pp. 220-242[20] Klaeren, H., Pulvermueller, E., Rashid, A., Speck, A., “Supporting Composition using Assertions,ComputingDepartment, Lancaster University, Technical Report No: CSEG/4/00[21] Lieberherr, K. J., Huersch, W., Silva-Lepe, I., Xiao, C., “Experience with a Graph-Based Propagation PatternProgramming Tool”, Proc. of the International CASE Workshop, IEEE Computer Society 1992, pp. 114-119 [22] Lieberherr, K. J., Silva-Lepe, I., Xiao, C., “Adaptive Object-Oriented Programming using Graph-BasedCustomization”, CACM, Vol. 37, No. 5, May 1994, pp. 94-101[23] Lieberherr, K. J., “Demeter”, /research/demeter/index.html[24] Liu, L., Zicari, R., Huersch, W., Lieberherr, K. J., “The Role of Polymorphic Reuse Mechanisms in SchemaEvolution in an Object-Oriented Database”, IEEE Transactions of Knowledge and Data Engineering, Vol. 9, No. 1, Jan.-Feb. 1997, pp. 50-67[25] Loomis, M. E. S., “Object Versioning”, JOOP, Jan. 1992, pp. 40-43[26] Matthijs, F., et al., “Aspects should not Die”, Proceedings of the AOP Workshop at ECOOP ’97, 1997[27] Mens, K., Lopes, C., Tekinerdogan, B., Kiczales, G., “Aspect-Oriented Programming Workshop Report”,ECOOP ’97 Workshop Reader, LNCS 1357, pp. 483-496[28] Mezini, M., Lieberherr, K. J., “Adaptive Plug-and-Play Components for Evolutionary SoftwareDevelopment”, Proceedings of OOPSLA 1998, ACM SIGPLAN Notices, Vol. 33, No. 10, Oct. 1998, pp.97-116 [29] Monk, S. & Sommerville, I., “Schema Evolution in OODBs Using Class Versioning”, SIGMOD Record, Vol.22, No. 3, Sept. 1993, pp. 16-22[30] Pazzi, L., “Explicit Aspect Composition by Part-Whole Statecharts”, Proceedings of the AOP Workshop atECOOP ’99, 1999[31] Pulvermueller, E., Klaeren, H., Speck, A., “Aspects in Distributed Environments”, Proceedings of GCSE1999, Erfurt, Germany (to be published by Springer-Verlag)[32] Rashid, A., Sawyer, P., “Facilitating Virtual Representation of CAD Data through a Learning BasedApproach to Conceptual Database Evolution Employing Direct Instance Sharing”, Proceedings of DEXA ’98, LNCS 1460, pp. 384-393[33] Rashid, A., “SADES - a Semi-Autonomous Database Evolution System”, Proceedings of PhDOOS ’98,ECOOP ’98 Workshop Reader, LNCS 1543[34] Rashid, A., Sawyer, P., “Toward ‘Database Evolution’: a Taxonomy for Object Oriented Databases”, Inreview at IEEE Transactions on Knowledge and Data Engineering[35] Rashid, A., Sawyer, P., “Evaluation for Evolution: How Well Commercial Systems Do”, Proceedings of theFirst OODB Workshop, ECOOP ’99, pp. 13-24[36] Rashid, A., Sawyer, P., “Dynamic Relationships in Object Oriented Databases: A Uniform Approach”,Proceedings of DEXA ’99, LNCS 1677, pp. 26-35[37] Rashid, A., Sawyer, P., “Transparent Dynamic Database Evolution from Java”, Proceedings of OOPSLA1999 Workshop on Java and Databases: Persistence Options[38] Rashid, A., Sawyer, P., Pulvermueller, E., “A Flexible Approach for Instance Adaptation during ClassVersioning”, To Appear in Proceedings of ECOOP 2000 OODB Symposium[39] “SADES Java API Documentation”,/computing/users/marash/research/sades/index.html[40] Skarra, A. H. & Zdonik, S. B., “The Management of Changing Types in an Object-Oriented Database”,Proceedings of the 1st OOPSLA Conference, Sept. 1986, pp. 483-495[41] Suzuki, J., Yamamoto, Y.,“Extending UML for Modelling Reflective Software Components”, Proceedings ofUML ‘99。