et enkelt kontrol flow sætningerne i programmet afvikles en ad gangen flowet følger dels den tekstlige rækkefølge
|
|
- Bo Lange
- 7 år siden
- Visninger:
Transkript
1 Tråd-definition 2. XP-program: Dissektion af boldapplet (fortsat) En tråd er en separat programudførelse = separat "flow of control" = rækkefølge af programinstruktioner, der udføres En tråd kan mere konkret defineres som bestående af program + tilstand hvor tilstand = data (variables værdier) + instruktions-peger + procedurestak Flere tråde i samme proces: kan udføre instruktioner fra samme program kan dele data Formål med flertrådning: Samtidig udførelse af uafhængige delopgaver Samtidig udskrivning af to uafhængige talrækker (Xiaoping s ) 2 tråde udskriver hver sin talrække Hændelsesorienterede programmer 1 tråd lytter til input/hændelser, og udfører de udløste handlinger 1 tråd animerer (f.eks. gentagen flytning + udskrivning af bolde) Servere f.eks. webservere 1 tråd lytter efter nye forespørgsler fra klienter 1 tråd for hver klient-forespørgsel til at besvare forespørgslen Begrebet "en tråd" kan forstås ud fra at betragte et simpelt program: et enkelt kontrol flow sætningerne i programmet afvikles en ad gangen flowet følger dels den tekstlige rækkefølge dels hoppes der ved goto, procedurekald m.m. Definition af tråd? intuitivt kan man tegne en tråd som viser udførelses-rækkefølgen alm.sekv. goto? proc.kald
2 Eksempel på uafhængige delopgaver Udførelse af to uafhængige delopgaver (begge tråde udfører samme programdel) class Counter implements Runnable { // jf. Xiaoping s. 373 int count, inc, delay; Lad os sige vi vil have udført flg. to opgaver - samtidigt: 1) med 33/1000 sekunds mellemrum udskrive 0, 1, 2, etc. 2) med 100/1000 sekunds mellemrum udskrive 0, -1, -2, etc. public Counter(count, inc, delay) { this.count = count; // etc. public static void main(..){ new Thread(new Counter(0,1,33)).start(); new Thread(new Counter(0,-1,100)).start(); public void run() { while(..) {udskriv; inkrementer; vent JVM's trådskedulator sørger for at begge tråde kommer til Pauser er styret via sleep() Mere fleksiblet, f.eks. lettere at ændre pauselængde. Sammenligning: Flere samtidige kørende programmer (processer) Moderne cpu-er og operativsystemer understøtter afvikling af flere samtidig programmer, der løser hver sin opgave Editor, Java-oversætter, browser,.. Hver af disse programmer indeholder mindst en tråd. Operativsystemets scheduler fordeler cpu-tid imellem dem, således at det fremstår som om de har cpu-en for sig selv Uafhængighed mellem disse programmer betyder set fra programmørens side at de kan udvikles uafhængigt af de andre programmer, selv om de kommer til at køre samtidigt. Flere samtidige tråde i samme program Java-køretidssystemet fordeler køretid mellem trådene Det fremtræder som om den enkelte tråd har cpu-en for sig selv en fordel at udvikling af programdel til at løse delopgave kan ske så uafhængigt som muligt fra andre programdele f.eks., udskrivning af 1 talrække kan programmeres uden at tænke på om der samtidig skal udskrives en anden talrække Tråde der hører til det samme (Java-) program kan have adgang til samme data (f.eks. data om hvor en animeret bold befinder sig) dette skaber en indbyrdes afhængighed mellem trådene i programmet kan være svær at styre - er emnet næste uge (synkronisering) Tråde der hører til forskellige programmer har ikke adgang til de samme data (men alle kan adgang til filsystemet m.v.) bl.a. af sikkerhedsmæssige grunde er det nødvendigt med vandtætte skodder mellem forskellige programmer
3 Afrunding af trådbegrebet: samtidighed, parallelitet, distribution Samtidighed er pseudo-samtidighed hvis der kun er 1 cpu Ægte samtidighed kræver flere cpu-er, og at operativsystemer kan fordele trådene til hver sin cpu. Begrebet parallelitet (som i parallelle algoritmer) = normalt en form for samtidighed med ægte samtidighed vhja. flere cpu-er på samme eller tæt forbundne maskiner opdeling i delopgaver for at opnå hurtigere programafvikling Begrebet distribution (distribuerede systemer, distr. applikationer) = normalt en form for samtidighed med ægte samtidighed delopgaver løses på hver sin maskine, ofte geografisk adskilt opdeling i delopgaver "naturlig" (du browser hjemme, data er i USA) 2. XP-program: Dissektion af boldapplet (fortsat) class Thread (java.lang.thread) class Thread public Thread(Runnable r) public void start() public void run() public static void sleep() public Thread currentthread() public void interrupt()... En instans af Thread repræsenterer en Java-tråd hvor programmet er r.run() (men er ikke selve tråden) Thread.sleep() blokerer den aktuelt kørende tråd sleep() er statisk currentthread() giver reference til det "aktuelt kørende" Thread-objekt Samme effekt af Thread().sleep() og Thread.currentThread.sleep() Thread.sleep() class Counter implements Runnable { public Counter(..) {.. public static void main(..){.. public void run() { while (true) { System.out.print(count + " "); try {Thread.sleep(delay); catch (Interrupted Excetion e) { count += incr; Alternativ: for (int i=0; i < ; i++); svær at styre pausens længde optager cpu-tid sleep() m.fl. kaster undtagelser af typen InterruptedException bruges til at håndtere program-genereret vækning af tråd (før tidsfrist)
4 Tilstande for tråde new Thread(..) Blocked waiting... sleeping wait() notify(), notifyall() sleep() (time out) Runnable skabt, men endnu ikke kørende start() Runnable-objektets run() returnerer død 2. XP-program: Dissektion af boldapplet (fortsat) interrupt() class Konto { Bankkonto - deling af variable int kontonummer; long saldo; Flere tråde kan dele de samme variable! boolean hæv(long hævebeløb) { if (hævebeløb <= saldo) { // "read" af saldo mhp. test long nysaldo = saldo - hævebeløb; // "read" af saldo mhp. subtraktion saldo = nysaldo; // "write" af ny værdi til saldo return true; Eksistensen af andre tråde er skjult f.eks. fordeles automatisk af JVMs skedulator Men hvis der rent faktisk er andre tråde så har disse samtidigt adgang til delt data: bl.a. saldo der kan opstå inkonsistens
5 To tråde hæver samtidigt: 1000 kr. forsvinder saldo er en delt variabel: begge tråde har adgang til den amount og nysaldo er lokale variable i hæve-metoden Før: saldo = 1000 Tråd 1 hæver 1000: (amount <= saldo) // OK: 1000 <= 1000 nysaldo = 0 // (saldo - amount) saldo = 0 // (saldo = nysaldo) Tråd 2 hæver 1000: (amount <= saldo) // OK: 1000 <= 1000 nysaldo = 0 // (saldo - amount) saldo = 0 // (saldo = nysaldo) Inkonsistens: saldo afspejler ikke hvad der rent faktisk er hævet tid class Konto { int kontonummer; long saldo; boolean hæv(long hævebeløb) { if (hævebeløb <= saldo) { long nysaldo = saldo - hævebeløb; saldo = nysaldo; return true; Atomicitet Metode hæv skal være atomisk (udelelig) for at sikre konsistens dvs. udførelsen skal afsluttes før andre tråde kommer til (nok at metodens betingede sætning af atomisk) Metode-kvalifikator: synchronized Implementation af synchronized synchronized boolean hæv(long hævebeløb) { if (hævebeløb <= saldo) { long nysaldo = saldo - hævebeløb; saldo = nysaldo; return true; Ethvert objekt kan beskyttes med synkronisering Implementation i class Object For at udføre s. kode: synchronized sikrer at maksimalt 1 tråd kan udføre metoden rækkevidde maks. 1 tråd kan udføre hæv-metoden i instansen (kontoen) maks. 1 tråd kan hæve/indsætte/.. på kontoen hvis disse metoder også er s. andre tråde kan udføre ikke-s. metoder i instansen f.eks. class Konto Er låsen ledig? Hvis NEJ: i kø hvis JA tag låsen udfør kode frigiv låsen
6 Begreber : hvad har vi opnået? class Konto { synchronized boolean hæv(long hævebeløb) { if (hævebeløb <= saldo) { long nysaldo = saldo - hævebeløb; saldo = nysaldo; return true; Metode hæv (dens betingede sætning): er en kritisk region er ikke tråd-sikker udførelse af koden skal være atomisk (må ikke deles/afbrydes) samtidig udførelse kan give racing / race conditions Med multitrådning har vi opnået samtidighed hvilket kan give 1. lettere programudvikling (hver delopgave udvikles med smal grænseflade til andre delopgaver) 2. bedre performance (mens 1 tråd venter på input, kan andre fortsætte) Med synchronized kan vi kontrollere/begrænse samtidigheden metode: tvinge tråde til at vente Vigtigt kun at begrænse samtidigheden når det er nødvendigt (jf. målsætning 2) Tråde og animering (XP 282ff) 2. XP-program: Dissektion af boldapplet (fortsat) 1. Hvor mange tråde er der brug for når programmet udvides til spilprogram? 2. Hvad sker når animatoren kalder repaint()..., repaint(), repaint(), repaint(), update() vs. paint() - hvorfor overskrive begge?
7 Hvor mange tråde er der brug for? Spilprogram på basis af boldappletten: 1. Hovedtråden Opretter applet/vindue, og lytter derefter til: kald af repaint() -> kald af update()/paint() hændelser -> kald af lyttermetoder hændelser -> kald af start(), init(), stop() FinalBouncingBall med delegering af animering + dobbeltbufring (XP s. 282) 2. Animeringstråden genererer "puls" til at bevæge + male 3. Flere tråde kan være nyttige hvis man laver objekter med "speciel bevægelse" f.eks. en bevægelse hvis hastighed kan reguleres uafhængigt af de andre objekters hastighed FinalBouncingBall update()/paint() (jf. XP s. 281) public class BouncingBallCanvas extends Canvas implements DBComponent { public void update(graphics g) { dbhandler.update(g); public void paint(graphics g) { //???? update(g); public void paintframe(graphics g) {.. update() vs. paint(): hvilke(n) skal overskrives i Applet-subklasser? Hvis subklasser overskriver update(): skal de selv sørge for at gentegne hele baggrunden men så slipper de for at vente på at appletkonteksten gentegner baggrunden. Hvis man bruger dobbelt-bufring: bør man overskrive update() fordi man alligevel selv skal tegne baggrunden (da man jo ikke tegner i det grafikobjekt der er skabt i konteksten, men tværtimod overskriver det med ens egen "buffer") Definitionen af paint() skal fange direkte kald af paint() fra konteksten, der sker uden om update(). paint() kaldes direkte af konteksten ved f.eks. window resizing dvs. en systemgenereret hændelse, modsat repaint(), der kommer fra applikationen selv
8 repaint() --> update(), paint() Når konsteksten kalder update() efter applikations-genereret repaint(): 0. Muligvis ventes der lidt først. 1. Graphics g = det nuværende billede (det sidst tegnede); 2. kald af update(g); // altid hele g! (svarende til components størr.) 3. tegn(g); // repaint(<rect>) => tegn(g,<rect>) Container superklasse opfanger kald af update()/paint() hvis ikke overskrivet i subklasser: public void update(grahpics g) { g.setcolor(getbackground()); // vælger baggrundsfarven g.clearrect(0, 0, width, height); // udfylder g med farven g.setcolor(getforeground()); // vælger forgrundsfarven paint(g); 2. XP-program: Dissektion af boldapplet (fortsat) public void paint(graphics g) { {stort set tom definition {men kan kalde paint() i alle subkomponenter class Ball { Kollision Diagram over animerings-cyklus (Thomas) static boolean Collide(Ball b1, Ball b2) { if (Ball.position.x...) return true; Kollision hvis afstand mellem centrum er mindre end 2*radius Afstand regnes ud med Pythagoras' formel for siderne i en retvinklet trekant: a 2 + b 2 = c 2 (x,y) (x-radius,y-radius)
9 Diagram over animerings-cyklus (Niels)
OOP e uge kursusgang: Grafik (II) class Scribble (Tegnebrættet) Frihåndstegning: repræsentation
OOP e2002 - uge 43 class Scribble (Tegnebrættet) Det simplest mulige tegnebræt kun en funktion: tegn streger med musen ingen kontrolknapper/valgmuligheder skal dog kunne "holde til" at ændre størrelse
Læs mereOOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety
= sikkerhed I denne sammenhæng: = "trådsikkerhed" " conditions.. stipulate that nothing bad will ever happen" (XP s. 377) Trådsikkerhed betyder sikkerhed mod inkonsistens pga. flertrådning ikke f.eks.
Læs mereOOP e uge kursusgang. Disposition for (gennemgang af) afleveringsopgave. Deck.shuffle() 'Problemformulering', Indledning
OOP e2002 - uge 40 Disposition for (gennemgang af) afleveringsopgave IV. Teori B: Designmønstre. V. Tips til øvelser: Bold-appletten, dobbeltbufring. 1. Problemformulering 2. Design for at forklare designet
Læs mereHvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter
OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:
Læs mereReal-time programming safety in Java and Ada
Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereParallelle algoritmer
Parallelle algoritmer 1 Von Neumann s model John von Neumann 1903-57 Von Neumanns model: Instruktioner og data er lagret i samme lager, og én processor henter instruktioner fra lageret og udfører dem én
Læs mereThreads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereParallelle algoritmer
Parallelle algoritmer Von Neumann s model John von Neumann 1903-57 Von Neumanns model: Instruktioner og data er lagret i samme lager, og én processor henter instruktioner fra lageret og udfører dem én
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 mereKursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing
Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt
Læs mereA Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Læs meredmasark Aflevering - Uge 50
dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereKursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Læs mereVideregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Læs mereProcesser. DS kursusgang nr. 2: Procestræer. ps: Vis processer
DS kursusgang nr. 2: Processer 1. Definition af processer/tråde? eksemplificeret med fork() og exec() (procesdannelse i C under unix) 2. C vs. Java (overordnet + funktioner) 3. Processer vs. tråde: Server:
Læs mereKoordinering. dopsys
Koordinering At indføre flertrådethed (1) når tråde tages i brug opstår typisk konflikter (et velkendt eksempel er errno ) 2 At indføre flertrådethed (2) en del konflikter kan afhjælpes med thread-local
Læs mereCommon Language Runtime. Multithreading
Common Language Runtime Multithreading Multithreading i.net Dedicated threads Programmøren kontrollerer starttidspunkt, levetid m.m. for den enkelte thread. Pooled threads Threads lånes fra en pulje af
Læs mereImplementation af Koordinering. dopsys 1
Implementation af Koordinering dopsys 1 Oversigt: Impl. af koordinering Begreber: Kritiske regioner Gensidig udelukkelse Synkroniseringsprimitiver: Binære semaforer / mutexes Tællesemaforer Betingelsesvariabler
Læs merePlanen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager.
Planen for idag Synkroniseringsmekanismer Kritiske regioner Semaforer: Binære semaforer Tællesemaforer Beskedsemaforer Prioritetsinvertering Låse (spinlocks) sikrer udelelig adgang Barrierer synkroniseringspunkt
Læs mereimport java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label
Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.
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 mereb) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.
Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning
Læs mereHvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Læs mereSingleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
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 mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
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 mereJacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004
Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret
Læs mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%
Læs mereSpecifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api
Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...
Læs mereExceptions i Delphi. Try except
Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,
Læs mereATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11
ATTRIBUTES DYNAMIC PROGRAMMING MULTITHREADING Grundlæggende programmering Lektion 11 1 ATTRIBUTES Information om adfærd 2 ATTRIBUTES En attribut er en deklarativ tag, der bruges til at formidle information
Læs mereGrundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering
Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af
Læs merePrincipper for Samtidighed og Styresystemer
Principper for Samtidighed og Styresystemer Synkronisering og Deadlocks René Rydhof Hansen Februar 2008 PSS 08 (Forelæsning 03) Synkronisering og Deadlocks Februar 2008 1 / 33 Skemaændringer Forelæsning
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 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 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 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 mereSider og segmenter. dopsys 1
Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den
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 mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Læs mereObjektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Læs mereProgrammering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen
Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen
Læs mereSerialization i Java
Serialization i Java Tutorial lavet af Jákup W. Hansen TSU 2006 1.semester 06.novemter 2006 Hvad er Serialization? I vores tekstbog Objects First with Java bliver denne del af Java ikke gennemgået. Men
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Objekters tilstand og opførsel BlueJ og Greenfoot Java Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Forskellige slags variabler Afleveringsopgave:
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 mereHvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation
Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et
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 mereMandatory Assignment 1
Mandatory Assignment 1 Morten Franck Peter Hansen 9. oktober 2003 Gruppe 4, Parallelle Systemer (02220) Indhold 1 Trin 1 Petri Net 1 1.1 Model af pass().................................... 1 1.2 Model
Læs mereForelæsning Uge 6 Mandag
Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring
Læs mereForelæsning Uge 5 Mandag
Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere
Læs mereTest af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
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 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 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 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 mereSider og segmenter. dopsys 1
Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den
Læs mereAlgorithms & Architectures II
Algorithms & Architectures II Algorithms & Architectures II Jens Myrup Pedersen Hans Peter Schwefel Kursusholdere Dagens lektion Overordnet mål: At etablere en forståelse for hvordan hardware og hardwarearkitekturer
Læs mereVirkefeltsregler i Java
Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten
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 mereProcesser og tråde. dopsys 1
Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys
Læs mere//--------------------------------- Definition af porte og funktioner -------------------------
Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4
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 mereSekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen
Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.
Læs mereProgrammering i C. Lektion september 2009
Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form
Læs mereJavaScript. nedarvning.
JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6
DM502 Forelæsning 6 Klasser og objekter Introduktion Math-klassen Indhold Klasser vs. objekter Først et tænkt eksempel: Vi vil lave en bil i Java 1. spørgsmål: Hvad karakteriserer en bil? Model År Farve...
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs merePlanen for idag. Opdatering af delt lager
Planen for idag Synkronisering: Tidsafhængighed i multiprogrammer Semaforer: Binære semaforer Tælle semaforer Grænseflader: Hvordan implementeres systemkald Tidsafhængighed i multiprogrammer proces læser
Læs mereScheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet
Scheduling 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Tråde og deres indbyrdes forhold Sidste gang så vi på, hvorledes tråde kan skabes, og hvordan man kan skifte imellem dem I dag ser
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 mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?
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 mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs mereDM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Læs merePrincipper for Samtidighed og Styresystemer
Principper for Samtidighed og Styresystemer kursusintroduktion og Introduktion til Styresystemer René Rydhof Hansen Februar 2008 PSS 08 (Forelsning 00) Kursus intro./intro. styresystemer Februar 2008 1
Læs mereDebugging ivs. Praksis eksempel. Assemblies Attributes Dynamic programming. Github. Multithreading. Grundlæggende programmering Lektion 6
Praksis eksempel Assemblies Attributes Dynamic programming Multithreading Debugging ivs Github Grundlæggende programmering Lektion 6 Praksis eksempel ShareX, et skærm-optager program ShareX er et gratis
Læs mereObjektorienteret Programmering
Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:
Læs mereGreenfoot En kort introduktion til Programmering og Objekt-Orientering
Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.
Læs mere//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Læs mere3C03 Concurrency: Model-based Design
3C03 Concurrency: Model-based Design Wolfgang Emmerich 1 Outline Role of Modelling in System Development Refining Models into Designs FSP Actions and Operations FSP Processes and Threads FSP Processes
Læs mereProcesser og koordinering
Processer og koordinering.. fortsat dopsys 1 Betingelsesvariabler (Condition variables).. hukommelsesløs variant af semaphorer: Atomare operationer: Signal bruges til at sende et signal. Wait bruges til
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 mereVideregående programmering i Java
Videregående programmering i Java Dag 5 Model View Controller arkitekturen Model View Controller arkitekturen (MVC) Evt.: Rekursion Læsning: VP 19 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
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 mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4
DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags
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 mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereFundamentale sprogbegreber
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn) Oversigt Sætninger simple sætninger (assignment, metodekald) sammensatte sætninger (selektion,
Læs mereUML til kravspecificering
UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn
Læs mere- Installationsvejledning for SOSIGW 1.1, NSP
SOSIGW - Installationsvejledning for SOSIGW 1.1, NSP Indeks Indeks... 1 Revisionshistorik... 2 Introduktion... 2 Forudsætninger og krav... 2 Installér ønsket JDK.... 2 Konfigurer JDK til ubegrænset kryptering...
Læs mereBRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Læs mere