Introduktion til Smalltalk.
|
|
- Signe Mortensen
- 7 år siden
- Visninger:
Transkript
1 7 Introduktion til Smalltalk. Designbeslutninger. Message passing. Klassebegrebet. Metodebegrebet. Forskellige slags variable. Nedarvning og metodeopslag. Instans og klassevariable ift. nedarvning. Blokbegrebet. Blokke og kontrolstrukturer. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 113 Nogle eksempler og slides i dette kapitel er lånt eller inspireret fra slides, som Kasper Østerbye har benyttet i tidligere versioner af dette kursus. 113
2 Et dynamisk, objekt-orienteret sprog. Smalltalk = Simula - Algol + Lisp. Har overtaget, og videreudviklet de objekt-orienterede ideer fra Simula. Populariserede de objekt-orienterede ideer dramatisk sidst i 70-erne og først i 80-erne. Understøtter dynamisk typing, på samme måde som Lisp og CLOS. Har ligesom flere Lisp-systemer en særdeles veludviklet programmeringsomgivelse omkring sig. Kurt Nørmark, Aalborg Universitet 11/6/96 s
3 Grundlæggende designbeslutninger. Good design: A system should be built with a minimum set of unchangeble parts; those parts should be as general as possible; and all parts should be held in a general framework. Personal mastery: If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual. Storage Management: To be truely object-oriented, a computer system must provide automatic storage management. Classification: A language must provide means for classifying similar objects, and for adding new classes of objects on equal footing with the kernel classes. Operating System: An operating system is a collection of things that don t fit into a language. There shouldn t be one. Messages: Computing should be viewed as an intrinsic capability of objects that can be uniformly invoked by sending messages. Uniform Metaphor: A language should be designed around a powerful metaphor that can be uniformly applied in all areas. Polymorphism: A program should specify only the behavior of objects, not their representation. Factoring: Each independent component in a system should appear in only one place. Natural Selection: Languages and systems that are of sound design will persist, to be supplanted only by better ones. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 115 I det ovenstående har jeg i spredt orden fastholdt nogle udsagn om Smalltalk design principper, som stammer fra en artikel skrevet af Daniel Ingals ( Design Principles Behind Smalltalk, BYTE, August 81). Polymorfi: Synspunktet er, at et program ikke skal erklære variable og parametre statisk af en bestemt type. Det er mere fleksibelt at erklære, at det kan svare på en nærmere bestemt mængde af beskeder. 115
4 Message passing metaforen. Objekter interagerer med hinanden, udelukkende ved at sende beskeder. En besked lokaliserer (ved dynamisk opslag) en metode. En metode returnerer altid en værdi til afsenderen. Forskellige former af beskeder: Unær besked Binær besked Nøgleordsbesked Afsendingsregler: Unære beskeder sendes først, og associerer fra venstre. Binære beskeder sendes dernæst, og associerer fra venstre. Ingen indbyrdes prioriteringer. Nøgleordsbeskeder sendes tilsidst. Paranteser nødvendige for kombination med andre nøgleordsbeskeder. Paranteser kan ændre den indbyrdes ordning af unære, binære og nøgleordsbeskeder. 5 fak 7 fak negate (3-5) > (a * 4) * 5 printer display: Anders And rectangle rotateangle: 45 indirection: positive. window showtext: Title infont: times indented: 15 rectangle strech: circle radius + 3 Kurt Nørmark, Aalborg Universitet 11/6/96 s. 116 Beskeden rectangle strech: circle radius + 3 er interessant hvad angår parsning. Først sendes den unære besked radius til det objekt, der refereres af circle. Dernæst sendes beskeden + til resultat af circle radius. Slutteligt sendes nøgleordsbeskeden strech: til rektanglet, som refereres af rectangle, med parameteren, som er resultatet af additionen. Nøgleordbeskeder er interessante. Der er ligheder til nøgleordsparametre i andre sprog, men også forskelle. Konkatenationen af nøgleordene kan opfattes som metodens navn. Det er ikke muligt (som i Common Lisp) at benytte nøgleordene i vilkårlig rækkefølge i et kald. Eksempelvis er showtext:indented:infont en anderledes besked end showtext:infont:indented. 116
5 Klassebegrebet. En klasse karakteriseres primært af Én superklasse. En mængde af instansvariable. En mængde af klassevariable. En uformel kategori, hvortil klassen hører. Klassedefinition via nøgleordsbesked til eksisterende superklasse. superclass subclass: #Class instancevariablenames: v1 v2 classvariablenames : pooldictionaries: category: class category Information hiding Alle instansvariable er private i klassen. Alle metoder, som tilføjes klassen, er tilgængelige for alle klienter. Pr. konvention kan der være en kategori af metoder, der er private. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 117 Ovenstående viser klasseanatomien på to forskellige måder: Som en prosabeskrivelse og som en besked til superklassen af den nye klasse Vi vil senere vende tilbage til hvordan klasser (og metoder) kan tilgåes via værktøj i programmeringsomgivelsen. 117
6 Metodebegrebet. En metode består af: Et message pattern ( ~ metodenavn og parameterprofil). En kommentar: "kommentar" En sekvens af udtryk: afsendelse af beskeder. Mulighed for assignment (med assignmentprefix). Mulighed for angivelse af returværdi. Default: modtagerobjektet af den besked, hvis metode vi udfører. Mulighed for kaskade af beskeder til samme objekt. Metoder specialiserer kun på én parameter. En metode tilhører netop én klasse. En metode aktiveres ved at sende en besked til en instans af denne klasse (eller til en instans af en subklasse) med en besked der modsvarer metodens selektor. Der anvendes imperativ metodekombination (mellem metoder med samme selektor). Kurt Nørmark, Aalborg Universitet 11/6/96 s
7 Eksempler på klasse og metoder. class name Complex superclass name Object instance variable names real imag class methods instance creation newwithreal: rl andimaginary: im "Return a new complex number, corresponding to rl + i im." ^Complex new realpart: rl; imaginarypart: im instance methods accessing realpart "return the real part of a complex number" ^real realpart: rl "assign a new real part of this complex number" real := rl arithmetic + anothercomplex "add anothercomplex to this complex number" realsum imagsum realsum := real + anothercomplex realpart. imagsum := imag + anothercomplex imaginarypart. ^Complex newwithreal: realsum andimaginarypart: imagsum Kurt Nørmark, Aalborg Universitet 11/6/96 s. 119 Ovenstående viser et skematisk eksempel på en (ukomplet) klasse i Smalltalk samt et antal metoder i denne klasse. Klassen er Complex (komplekse tal). Man ser at der er to hovedafdelinger af metoder: klasse metoder og instansmetoder. Klassemetoderne anvendes primært til at instantiere et objekt. Dette har vi meget mere at sige om i næste kapitel (Metaklasser i Smalltalk). I dette kapitel vil vi koncentrere os om instansmetoderne (her realpart, realpart: og +). Man ser endvidere at der er underafdelinger af instans metoder, her accessing og arithemtic. Dette er en uformel opdelning af metoderne i kategorier, som afspejles i bl.a. systembrowseren (se tidligere i dette kapitel). At opdelningen er uformel betyder, at kategorierne ikke har nogen semantisk konsekvens for et Smalltalk program. Bemærk at der ovenfor benyttes en skematisk opstilling af klassen, dens instansvariable, og dens metoder. Der findes ikke en syntaktisk form, som tillader os at udtrykke alt dette. I praksis benytter vi et browserværktøj til at definere de enkelte bestanddele. Lidt mindre bekvemt kunne vi også definere det hele ved at sende beskeder til klasser. 119
8 Variable. Lokale variable i metoder. De formelle parametre er ikke lokale variable: De er read-only. Med lille begyndelsesbogstav. Instansvariable i objekter. Navngivne eller indicerede. Navngivne instansvariable kun leksikalsk tilgængelige i metoder. Med lille begyndelsesbogstav. Globale variable. Hvert klassenavn bliver automatisk en global variabel, der refererer klassen, som objekt. Med stort begyndelsesbogstav. Klassevariable Med stort begyndelsesbogstav. Pool variable. Default puljer tilgængelige for alle klasser: Smalltalk (pulje delt af alle klasser): de globale variable. Klassevariablene (klassespecifik pulje). Andre puljer kan skabes efter behov. Med stort begyndelsesbogstav. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 120 Hvorvidt et objekt har indicerede instansvariable eller ej styres af den besked, som sendes til superklassen. Når beskeden variablesubclass:instancevariablenames:classvariablenames:pooldictioraries:category: imodsætning til subclass:instancevariablenames:classvariablenames:pooldictioraries:category: sendes til en klasse skabes en ny klasse, hvori der er indicerede instansvariable. 120
9 Nedarvning og Metodeopslag. Smalltalk tillader udelukkende enkelt-nedarvning. Self og super er pseudo-variable, der kan anvendes i metoder. Self refererer til modtager-objektet af en besked, uanset den aktiverede metodes klasse-tilhørsforhold. Super referer ligesom self til modtager-objektet af en besked. Men beskeder sendt til super starter metodeopslaget i superklassen til den metode, hvori super forekommer. Super tillader imperativ metodekombination mellem metoder med samme selektor. R meth. S meth R S Kurt Nørmark, Aalborg Universitet 11/6/96 s. 121 A B C D x x x metode med selektor x meth self x. super x Hvilke metoder refereres af ovenstående, når meth er i hhv. A, B, C eller D? Fortolkningen af super må ikke forveksles med beskeder sendt til super starter metodeopslaget i superklassen til modtagerobjektets klasse. Dette er en forkert fortolkning! Svar på spørgsmål fra sliden: Meth placeret i klasse r meth D C B A self x super x self x super x self x super x self x super x fejl fejl B B B A B fejl s meth D B D B D A D fejl Tabellen indeholder klassen af metoden, som aktiveres af self x hhv super x fra hhv r meth og s meth. Som illustreret er r en instans af C, og s en instans af D i hele scenariet. Fra søjle til søjle flytter vi på metoden meth. De fede klassenavne i tabellen er specielt bemærkelsesværdige. 121
10 Instans og klassevariable ved nedarvning. Class A iv1 iv1 iv1 Cv1 Metode ma lv1 Tilgang til lv1, iv1, Cv1 iv1 iv2 Class B iv2 Cv2 Metode mb lv2 Tilgang til lv2, iv1, iv2, Cv1, Cv2 iv1 iv2 klasse-superklasse relation. Instans klasse relation. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 122 Denne slide illustrerer, hvilke instans variable (iv..), klassevariale (Cv..) og lokale variable (lv..) der er tilgængelige i de to metoder i hhv. klassen A og klassen B. Bemærk, at uden for metoderne i klasserne, er der ikke leksikalsk adgang til variablene. Der skal laves en metode for hver variabel, hvis værdi blot ønskes returneret til en en klient. 122
11 Blokbegrebet. En blok svarer til en closure: Et parametriseret udtryk (en sekvens af beskeder), samt den omgivelse, hvori blokken er defineret. En blok er (ligesom alle andre objekter) et 1. klassesobjekt. Statisk navnebinding: Frie navne i en blok bindes i blokkens statiske omgivelser. Ifølge Smalltalk tankegang er en blok en sekvens af handlinger, hvis udførelse er udsat. En blok er et objekt, som kan udføres ved at sende en bestemt besked, value, til blokken. Blokke kan benyttes til at definere traditionelle og egne kontrolstrukturer. Eksempler: Blok uden parametre. b1 := [index := index + 1. array at: index put: 0]. b1 value Blok med parametre. b2 := [ :newelement index := index + 1. list at: index put: newelement]. b2 value: 3 Kurt Nørmark, Aalborg Universitet 11/6/96 s. 123 En blok er instans af klassen BlockContext. Det skal bemærkes, at hvis der returneres en værdi fra en blok med ^x, terminerer og returnerer metoden, hvori blokken er defineret (altså metoden, hvori blokke findes som et udtryk). Dette sker uanset hvorfa blokken dynamisk set bliver aktiveret. (Man skal erindre, at en blok kan flyde omkring, lige som alle ande objekter, og derfor kan konventionen omkring returnering forekomme overraskende). 123
12 Kontrolstrukturer med blokke. Selektion (ala if-then-else) realiseres ved at sende en besked til en boolsk værdi med to blokke som parametre. Iteration (ala while) realiseres ved at sende en besked til en blok, med en anden blok som parameter. (a < b) iftrue: [ max := b] iffalse: [ max := a] [found not] whiletrue: [index incr. found := (self at: index) = x] iftrue: trueblock iffalse: falseblock self subclassresponsibility Boolean I klassen blockcontext: whiletrue: ablock (self value) iftrue: [ablock value. self whiletrue: ablock] True iftrue: trueblock iffalse: falseblock trueblock value False iftrue: trueblock iffalse: falseblock falseblock value Kurt Nørmark, Aalborg Universitet 11/6/96 s. 124 Bemærk at True og False i figuren ovenfor er klasser (subklasser af Boolean). De boolske metoder annonceres i klassen Boolean, men subklasserne gøres ansvarlige for deres egentlige realisering. Subklasserne redefinerer derfor disse metoder. 124
13 Flere eksempler på metoder: factorial i klassen Integer. factorial "Answer the factorial of the receiver. Fail if the receiver is less than 0. For example, 6 factorial == 6*5*4*3*2*1." tmp self < 0 iftrue: [^self class raise: #domainerrorsignal receiver: self selector: #factorial errorstring: 'Factorial is invalid on negative numbers']. tmp := 1. 2 to: self do: [:i tmp := tmp * i]. ^tmp Kurt Nørmark, Aalborg Universitet 11/6/96 s
14 Flere eksempler på metoder: gcd i klassen Integer. gcd: aninteger "Answer the greatest common divisor of the receiver and aninteger." "Euclid's algorithm." m n t m := self abs max: aninteger abs. n := self abs min: aninteger abs. [n = 0] whilefalse: [t := n. n := m \\ n. m := t]. ^m Kurt Nørmark, Aalborg Universitet 11/6/96 s
15 Flere kontrolstrukturer med blokke. 0.7 perhaps: [x := x + 1] I klassen Float: perhaps: ablock Udfør blokken med sandsynlighed self (Float random < self) iftrue: [ablock value] 3 to: 5 do: [:i res := i * i + res] I klassen Integer: to: last do: ablock Udfør blokken for indeces fra self til last i i := self. [i <= last] whiletrue: [ablock value: i. i := i + 1] Kurt Nørmark, Aalborg Universitet 11/6/96 s. 127 Det øverste eksempel er en lidt særartet kontrolstruktur, i hvilken vi udfører en blok med en ønsket sandsynlighed. Det nederste eksempel svarer til Pascal s for i := a to b do statement. 127
16 Mapning og filtrering af samlinger. Smalltalk indeholder en rig samling af klasser, som realiserer forskellige former for samlinger af objekter. Alle disse er subklasser af klassen Collection. Der findes metoder i klassen Collection, der svarer nøje til de klassiske højere-ordens funktioner på lister. mapning: filtrering: venstre akkumulering: #(2 4 6) collect: [:el el * 2] #( ) #( ) select: [:el el even] #(2 4 ) #( ) inject: 1 into: [:sum :el sum - el ] -13 Kurt Nørmark, Aalborg Universitet 11/6/96 s. 128 Venstre akkumuleringen svarer til ((((1-2) -3) -4) -5). 128
17 Metoder for mapning, filtrering og akkumulering. collect: ablock "Evaluate ablock with each of the values of the receiver as the argument. Collect the resulting values into a collection that is like the receiver. Answer the new collection." newcollection newcollection := self species new. self do: [:each newcollection add: (ablock value: each)]. ^newcollection select: ablock "Evaluate ablock with each of the receiver's elements as the argument. Collect into a new collection like the receiver, only those elements for which ablock evaluates to true. Answer the new collection." newcollection newcollection := self species new. self do: [:each (ablock value: each) iftrue: [newcollection add: each]]. ^newcollection inject: thisvalue into: binaryblock "Accumulate a running value associated with evaluating the argument, binaryblock, with the current value and the receiver as block arguments. The initial value is the value of the argument, thisvalue." nextvalue nextvalue := thisvalue. self do: [:each nextvalue := binaryblock value: nextvalue value: each]. ^nextvalue Kurt Nørmark, Aalborg Universitet 11/6/96 s. 129 Alle metoder ovenfor findes i den meget generelle klasse Collection. Læg mærke til, hvordan alle metoderne benytter metoden med selektor do:. Metoden do: i klassen Collection ser således ud: do: ablock "Evaluate ablock with each of the receiver's elements as the argument." self subclassresponsibility Det vil altså sige, at vi ikke kan implementere denne uden at vide noget mere specifikt om, hvilken slags Collection vi har med at gøre. Hvis vi ved, at vi har men en sekventiel samling at gøre, kan vi implementere do: som følger: do: ablock "Evaluate ablock with each of the receiver's elements as the argument." 1 to: self size do: [:i ablock value: (self at: i)] Beskeden to:do:, som sendes til et tal, har vi tidligere studeret. 129
18 Smalltalk programmeringsomgivelsen. Smalltalk er en workspace-baseret omgivelse ( image ). Et fælles rum for objekter, værktøj og programbeskrivelse. Workspacet kan gøres persistent mellem interaktive sessioner. Programbegrebet er svagt. File ind og file ud transporterer udvalgte dele af workspacet til og fra kildefiler. Værktøj i omgivelsen: Systembrowseren og andre former for browsere. Workspaces. Debugger. mv. Kurt Nørmark, Aalborg Universitet 11/6/96 s
19 Systembrowseren. Tilføje klasse (ved skabelon udfyldelse). Fjerne klasse. File ud. Vise definition/hierarki/kommentar Flytte til anden kategori. Krydsreference på variable og klasse. Tilføje/fjerne kategori. File ud. Omdøbe kategori. Søge efter klasse. Klasse kategorier Editeringsrude Klasse navne Tilføj/fjerne kategori. File ud. Omdøbe kategori. Søge efter metode. Metode kategorier Tilføje metode ved skabelon udfyldelse. Flytte metode til anden klasse. Fjerne metode. Krydsreference Senders: Hvem anvender metoden? Implementors: Hvem implementerer ellers metoden? Metode navne Editerings operationer. Evaluerings operationer. Inspections operationer. Accept. Forklaring. Kurt Nørmark, Aalborg Universitet 11/6/96 s
Metaklasser i Smalltalk.
8 Metaklasser i Smalltalk. Motivation Metodeopslag Simple metaklasser Mere udviklede metaklasser Klasse- og metaklassehierarkiet Instantiering og initialisering Skabelse af klasser og metoder Oversigt
Læs mereObjekt-orienteret programmering uden klasser: Self.
Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.
Læs mere4 Basal Objekt-orienteret Programmering I.
4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.
Læs mereCHAPTER 8: USING OBJECTS
Ruby: Philosophy & Implementation CHAPTER 8: USING OBJECTS Introduction to Computer Science Using Ruby Ruby is the latest in the family of Object Oriented Programming Languages As such, its designer studied
Læs mereSoftware Construction 1. semester (SWC) januar 2014 Spørgsmål 1
Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),
Læs mereAarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00
Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed
Læs mereUdvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.
10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret
Læs mereSkriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)
Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler
Læs mere2 Funktionsorienteret programmering i Scheme.
2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk
Læs mereRename og redefine. Abstrakte klasser. Dynamisk binding.
11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.
Læs mere9 Introduktion til CLOS.
9 Introduktion til CLOS. Klasser Metoder Generiske funktioner Slots Nedarvning Class precedence lists Klasse-redefinition og objektopdatering Ændring af objekters klassetilhørsforhold Eksempler Kurt Nørmark,
Læs mereHelp / Hjælp
Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association
Læs mere12 Metaobjekt protokoller i CLOS.
12 Metaobjekt protokoller i CLOS. Begreber og problemer. Sprog designrum. Niveauer i CLOS. Programobserverende protokoller. Programskabende protokoller. Sprogudvidende protokoller. Eksempler. Kurt Nørmark,
Læs mereBlack Jack --- Review. Spring 2012
Black Jack --- Review Spring 2012 Simulation Simulation can solve real-world problems by modeling realworld processes to provide otherwise unobtainable information. Computer simulation is used to predict
Læs mereProgrammering for begyndere Lektion 2. Opsamling mm
Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger
Læs mereKlasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Læs merePortal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration
Portal Registration Step 1 Provide the necessary information to create your user. Note: First Name, Last Name and Email have to match exactly to your profile in the Membership system. Step 2 Click on the
Læs merePrivat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende
Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereDet er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
Læs mere10 Metodekombination og multimetoder i CLOS.
10 Metodekombination og multimetoder i CLOS. Metodekombination generelt. Multimetoder generelt. Kald af en generisk funktion i CLOS. Specialisering på enkeltobjekter. Standard metodekombination. Simpel,
Læs mere26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.
26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive
Læs mereProject Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1
Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words
Læs mereECE 551: Digital System * Design & Synthesis Lecture Set 5
ECE 551: Digital System * Design & Synthesis Lecture Set 5 5.1: Verilog Behavioral Model for Finite State Machines (FSMs) 5.2: Verilog Simulation I/O and 2001 Standard (In Separate File) 3/4/2003 1 ECE
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning
Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereLøsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
Læs mereLinear Programming ١ C H A P T E R 2
Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation
Læs mereForelæsning Uge 3 Mandag
Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet
Læs mere3D NASAL VISTA TEMPORAL
USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet
Læs mereKlasser og objekter. (Afsnit i manualen)
Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser
Læs mereSkriftlig Eksamen Diskret matematik med anvendelser (DM72)
Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Institut for Matematik & Datalogi Syddansk Universitet, Odense Onsdag den 18. januar 2006 Alle sædvanlige hjælpemidler (lærebøger, notater etc.),
Læs mereThe purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family.
General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. Formålet med vores hjemmesiden er at gøre billeder og video som vi (Gunnarsson)
Læs mereHvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Læs mere28 Algoritmedesign. Noter. PS1 -- Algoritmedesign
28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par
Læs merePARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU
PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug
Læs mereAlgoritmer og invarianter
Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs merePython programmering. Per Tøfting. MacFest
Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer
Læs mereKlasser og Objekter i Python. Uge 11
Klasser og Objekter i Python Uge 11 Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. Klassens objekter er instanser af klassen. En programudførelse
Læs mereØvelse 9. Klasser, objekter og sql-tabeller insert code here
Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til
Læs mereDET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index
DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE
Læs mere3D NASAL VISTA 2.0
USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended
Læs mereEngineering of Chemical Register Machines
Prague International Workshop on Membrane Computing 2008 R. Fassler, T. Hinze, T. Lenser and P. Dittrich {raf,hinze,thlenser,dittrich}@minet.uni-jena.de 2. June 2008 Outline 1 Motivation Goal Realization
Læs mereÅben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser
3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse
Læs mere5 Basal Objekt-orienteret Programmering II.
5 Basal Objekt-orienteret Programmering II. Historik og sprogoversigt. Programbeskrivelse kontra programudførelse. Referencer og værdier. Skabelse af objekter i Eiffel. Features og deres klassificering
Læs mereSoftware Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Læs mereOn the complexity of drawing trees nicely: corrigendum
Acta Informatica 40, 603 607 (2004) Digital Object Identifier (DOI) 10.1007/s00236-004-0138-y On the complexity of drawing trees nicely: corrigendum Thorsten Akkerman, Christoph Buchheim, Michael Jünger,
Læs mereDannelse af PDF dokumenter
Dannelse af PDF dokumenter Indhold Dannelse af PDF-dokumenter i Phd Planner... 2 Valg af vedhæftninger i PDF dokumentet... 2 Valg af skabelon for PDF dokumentet... 3 Når PDF filen er dannet... 5 Gem PDF
Læs mereSproget Rascal (v. 2)
Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik
Læs merePolymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion
Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt
Læs mereAlgoritmeskabeloner: Sweep- og søgealgoritmer C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte
Læs mereBesvarelser til Lineær Algebra Reeksamen Februar 2017
Besvarelser til Lineær Algebra Reeksamen - 7. Februar 207 Mikkel Findinge Bemærk, at der kan være sneget sig fejl ind. Kontakt mig endelig, hvis du skulle falde over en sådan. Dette dokument har udelukkende
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder
Læs mereSkriftlig Eksamen Beregnelighed (DM517)
Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 31 Oktober 2011, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mereBasic statistics for experimental medical researchers
Basic statistics for experimental medical researchers Sample size calculations September 15th 2016 Christian Pipper Department of public health (IFSV) Faculty of Health and Medicinal Science (SUND) E-mail:
Læs mereIntroduktion til Funktionsorienteret Programmering.
Introduktion til Funktionsorienteret Programmering. Sammenligning med det imperative paradigme Assignment kontra navnebinding. Iterative kontra rekursion. Introduktion til højereordensfunktioner. Evalueringsrækkefølge.
Læs mereNoter til kursusgang 8, IMAT og IMATØ
Noter til kursusgang 8, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 25. oktober 2013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang
Læs mereDigitaliseringsstyrelsen
NemLog-in 29-05-2018 INTERNAL USE Indholdsfortegnelse 1 NEMLOG-IN-LØSNINGER GØRES SIKRERE... 3 1.1 TJENESTEUDBYDERE SKAL FORBEREDE DERES LØSNINGER... 3 1.2 HVIS LØSNINGEN IKKE FORBEREDES... 3 2 VEJLEDNING
Læs mereKlasser og nedarvning
Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere
Læs merePHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
Læs mereIBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1
IBM Network Station Manager esuite 1.5 / NSM Integration IBM Network Computer Division tdc - 02/08/99 lotusnsm.prz Page 1 New esuite Settings in NSM The Lotus esuite Workplace administration option is
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereBefore you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames...
InDesign Basics Before you begin...................2 Part 1: Document Setup................3 Part 2: Master Pages................ 4 Part 3: Page Numbering...............5 Part 4: Texts and Frames...............6
Læs mereModern Concurrency Abstractions for C#
Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation
Læs mereDK - Quick Text Translation. HEYYER Net Promoter System Magento extension
DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereHvor er mine runde hjørner?
Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
Læs mereBACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015
BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015 SAS VISUAL ANALYTICS 7.1 ADMINISTRATOR Mulighed for at udføre handlinger på flere servere
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?
Læs mereDannelse af PDF-dokumenter
Dannelse af PDF-dokumenter Indhold Generere PDF-dokumenter... 2 Håndtering af PDF-dokumentet... 8 Hvordan indsætter man sidetal i PDF-dokumentet?... 8 Hvordan laver man bookmarks i PDF-dokumentet?... 8
Læs mereNetværksalgoritmer 1
Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker
Læs mereGenerelt om faget: (Eventuelle kommentarer til højre) - Givet målbeskrivelsen ovenfor, hvordan vurderer du så pensum?
Generelt om faget: (Eventuelle kommentarer til højre) - Givet målbeskrivelsen ovenfor, hvordan vurderer du så pensum? Meget Godt 4 20,0% Godt 12 60,0% Gennemsnitligt 4 20,0% Dårligt 0 0,0% Meget Dårligt
Læs mereTo the reader: Information regarding this document
To the reader: Information regarding this document All text to be shown to respondents in this study is going to be in Danish. The Danish version of the text (the one, respondents are going to see) appears
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet
Læs mereAktivering af Survey funktionalitet
Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette
Læs mere16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%
Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator
Læs mereSortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute
Sortering fra A-Z Henrik Dorf Chefkonsulent SAS Institute Hvorfor ikke sortering fra A-Å? Det er for svært Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å?
Læs mereOnline kursus: Programming with ANSI C
Online kursus 365 dage DKK 1.999 Nr. 90198 P ekskl. moms Denne kursuspakke giver dig et bredt kendskab til sproget C, hvis standarder er specificeret af American National Standards Institute (ANSI). Kurserne
Læs mereForelæsning Uge 12 Torsdag
Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse
Læs mereBusiness Rules Fejlbesked Kommentar
Fejlbeskeder i SMDB Validate Business Request- ValidateRequestRegi stration ( :1) Business Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl 1: Anmodning En
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereForelæsning Uge 12 Mandag
Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse
Læs mereSWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Læs mere1. Variable og assignment
1. Variable og assignment Dette er starten af det faglige indhold i første lektion af 'Programmering i C'. Før dette følger et antal mere praktiske slides, som vi ikke har medtaget i denne 'tematiske udgave'
Læs mereTerese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012
Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend
Læs mereUser Manual for LTC IGNOU
User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service
Læs mereclass subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.
Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereSom sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste
Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),
Læs mereSoftware 1 with Java. Recitation No. 7 (Servlets, Inheritance)
Software 1 with Java Recitation No. 7 (Servlets, Inheritance) Servlets Java modules that run on a Web server to answer client requests For example: Processing data submitted by a browser Providing dynamic
Læs mereTM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax
TM4 Central Station User Manual / brugervejledning K2070-EU STT Condigi A/S Niels Bohrs Vej 42, Stilling 8660 Skanderborg Denmark Tel. +45 87 93 50 00 Fax. +45 87 93 50 10 info@sttcondigi.com www.sttcondigi.com
Læs mereDannelse af PDF-dokumenter
Dannelse af PDF-dokumenter Indhold Generere PDF-dokumenter... 2 Håndtering af PDF-dokumentet... 6 Hvordan indsætter man sidetal i PDF-dokumentet?... 6 Hvordan laver man bookmarks i PDF-dokumentet?... 7
Læs mereHow Long Is an Hour? Family Note HOME LINK 8 2
8 2 How Long Is an Hour? The concept of passing time is difficult for young children. Hours, minutes, and seconds are confusing; children usually do not have a good sense of how long each time interval
Læs mere