Tree klassen fra sidste forelæsning

Størrelse: px
Starte visningen fra side:

Download "Tree klassen fra sidste forelæsning"

Transkript

1 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 public Tree(int age) { this.age = age; public void onemoreyear() { age++; public double height() { return 0; // arbitrary value public boolean dies() { return false; // arbitrary value Programmering 1999 KVL Side 12-2 Beech klassen fra sidste forelæsning class Beech extends Tree { public Beech(int age) { super(age); public double height() { return age * 40.0 / 280.0; public boolean dies() { double mortality = Math.pow((age-250.0)/31, 4); return age >= 280 (age >= 250 && (Math.random() < mortality)); Programmering 1999 KVL Side 12-3 Abstrakte træer Det er ikke tilfredsstillende at skulle definere vilkårlige metoder height() og dies() i klassen Tree. Det er måske heller ikke så godt at man kan sige new Tree(). Et ikke nærmere specificeret træ er i virkeligheden et abstrakt begreb. Derfor skal Tree defineres som abstrakt klasse. Programmering 1999 KVL Side 12-4

2 Abstrakte klasser En klasse kan erklæres abstract. En abstrakt klasse kan have abstrakte metoder. abstract class Tree { int age; // in years public Tree(int age) { this.age = age; public void onemoreyear() { age++; abstract public double height(); abstract public boolean dies(); Programmering 1999 KVL Side 12-5 Hvad betyder abstract? En abstrakt klasse kan ikke instantieres (dvs. man kan ikke lave objekter direkte fra den). En abstrakt klasse kan udvides af ikke-abstrakte subklasser. En abstrakt metode repræsenterer en egenskab som alle den abstrakte klasses subklasser skal have. En abstrakt metode defineres uden krop. En subklasse af en abstrakt klasse skal overskrive alle abstrakte metoder (eller selv være abstrakt). En metode der overskriver en abstrakt metode giver en konkret implementation af den abstrakte egenskab. Programmering 1999 KVL Side 12-6 klassen Vessel fra sidste forelæsning class Vessel { private double contents; public double getcontents() { return contents; public double volume() { return 0; public void fill(double amount) { contents += amount; contents = Math.min(contents, volume()); public void tap(double amount) { contents -= amount; contents = Math.max(contents, 0); Programmering 1999 KVL Side 12-7 Tank klassen fra sidste forelæsning class Tank extends Vessel { // A box-shaped tank private double length, width, height; public Tank(double length, double width, double height) { this.length = length; this.width = width; this.height = height; public double volume() { return length * width * height; Programmering 1999 KVL Side 12-8

3 klassen Vessel gjort abstrakt abstract class Vessel { private double contents; public double getcontents() { return contents; abstract public double volume(); public void fill(double amount) { contents += amount; contents = Math.min(contents, volume()); public void tap(double amount) { contents -= amount; contents = Math.max(contents, 0); Programmering 1999 KVL Side 12-9 Mere om abstrakte metoder og klasser En klasse der indeholder en abstrakt metode skal erklæres abstract. En abstrakt klasse kan kun instantieres gennem sine ikke-abstrakte subklasser. For at bruge en abstrakt klasse må man altså lave subklasser fra den. En klasse kan erklæres abstract selv om den ikke indeholder abstrakte metoder. En abstrakt metode kan ikke erklæres static. Konstruktorer kan ikke være abstrakte. Undlad at erklære en abstrakt metode private... Programmering 1999 KVL Side Eksempel: Aftalekalender Vi vil nu lave en aftalekalender der kan håndtere såvel tidsbegrænsede aftaler (Appointment) som husk-at-få-gjort notater (ToDo). Til at repræsentere tidspunkter benytter vi en Time klasse som understøtter følgende metoder: Time(int hours, int min) Konstruktor Time(int hours) Konstruktor (hele timer) Time(Time time) Kopierende konstruktor String tostring() Giver tidspuntet i læsbart format void increment(int min) Læg et antal minutter til (ændrer tidspunktet) Time plus(int min) Giver et nyt tidspunkt et antal minutter senere int to(time t) Giver antallet af minutter fra et tidspunkt til et andet boolean before(time t) Sandt hvis tidspunktet er mindre end eller lig med et andet (Klassen findes i filen u:\dat\prog\eksempler\time5.java) Programmering 1999 KVL Side Eksempel: Aftalekalender (CalendarItem) abstract class CalendarItem { public String text; public CalendarItem(String text) { this.text = text; abstract public String tostring(); Programmering 1999 KVL Side 12-12

4 Eksempel: Aftalekalender (ToDo) class ToDo extends CalendarItem { public boolean done; public ToDo(String text) { super(text); done = false; public String tostring() { if (done) return "Done: " + text; else return "To do: " + text; Programmering 1999 KVL Side Eksempel: Aftalekalender (Starten af Appointment) class Appointment extends CalendarItem { private Time starttime, endtime; public Appointment(Time starttime, Time endtime, String text) { super(text); this.starttime = new Time(starttime); this.endtime = new Time(endtime); public Appointment(Time starttime, String text) { this(starttime, starttime.plus(60), text); // One-hour appointment public String tostring() { return "from " + starttime + " to " + endtime + ": " + text; Programmering 1999 KVL Side Eksempel: Aftalekalender (resten af Appointment) public void prolong(int min) { endtime.increment(min); public void postpone(int min) { starttime.increment(min); endtime.increment(min); public void move(time newstart) { postpone(starttime.to(newstart)); Programmering 1999 KVL Side Eksempel: Aftalekalender (TestAppointment2b, hjælpemetoden print calendar) class TestAppointment2b { static void print_calendar(calendaritem [] calendar) { for (int i = 0; i < calendar.length; i++) if ( calendar[i]!= null ) System.out.println(calendar[i].toString()); System.out.println(); // main method here... Programmering 1999 KVL Side 12-16

5 Eksempel: Aftalekalender (TestAppointment2b, metoden main) public static void main(string[] args) { ToDo t1 = new ToDo("tag backup"); Appointment a1 = new Appointment(new Time(8), new Time(9, 20), "forelæsning"); Appointment a2 = new Appointment(new Time(13), "møde"); Appointment a3 = new Appointment(new Time(14), new Time(14, 15), "kaffe"); CalendarItem [] friday = {t1, a1, a2, a3; print_calendar(friday); t1.done = true; a2.prolong(60); a3.postpone(60); print_calendar(friday); Programmering 1999 KVL Side Multipel nedarving I mange objektorienterede sprog kan en klasse have flere superklasser. Dette kaldes multipel nedarvning (engelsk: multiple inheritace). Multipel nedarvning er nyttig når en klasse modellerer noget som er en kombination af to forskellige ting. Eksempel: Et krystalglas er både en beholder og et musikinstrument. En tank er kun en beholder. En trompet er kun et musikinstrument. Programmering 1999 KVL Side Java har ikke multipel nedarvning(!) Java tillader kun udvidelse af en enkelt superklasse. Dette kaldes enkelt nedarvning (engelsk: single inheritance). Programmering 1999 KVL Side Grænseflader Java understøtter en erstatning for multipel nedarvning. Den hedder grænseflader (engelsk: interfaces). En grænseflade er en slags rent abstrakt klasse der kun indeholder abstrakte metoder. En klasse kan implementere flere grænseflader (og stadig udvide en superklasse). For at implementere en grænseflade må klassen implementere alle grænsefladens metoder. Programmering 1999 KVL Side 12-20

6 Eksempel: interface MusicalInstrument { public void play(note note); class CrystalGlass extends Vessel implements MusicalInstrument { public double volume() {... // from Vessel public void play(note note) {... // from MusicalInstrument Programmering 1999 KVL Side Noget om grænseflader En grænseflade kan udvide en eller flere andre grænseflader. interface MusicalInstrument extends Playable, Tuneable { En grænseflade kan aldrig udvide en klasse eller implementere en grænseflade. Metoder i grænseflader kan ikke erklæres static, private, protected, final eller synchronized. Alle metoder i en grænseflade er abstrakte, så man behøver ikke at skrive abstract (men man kan). Programmering 1999 KVL Side Eksempel: Grænseflader i aftalekalenderen Forskellen på Appointment og ToDo er at en aftale er begrænset af et tidsinterval. En aftale kan være begrænset enten ved hvornår den starter, hvornår den slutter eller begge dele. Der er dog noget fælles ved alle begrænsninger: Man kan se om aftalerne overlapper. Vi vil nu definere det ultimative aftalehierarki: Appointment2000. Programmering 1999 KVL Side : Appointment2000 Grænseflader interface Schedulable { public void postpone(int min); public boolean collides(schedulable s); interface StartBounded extends Schedulable { public Time getstart(); public void move(time newstart); interface EndBounded extends Schedulable { public Time getend(); interface Bounded extends StartBounded, EndBounded { public void prolong(int min); Programmering 1999 KVL Side 12-24

7 : Appointment2000 Ændringer i Appointment class Appointment extends CalendarItem implements Bounded {... public Time getstart() { return starttime; public Time getend() { return endtime; public boolean collides(schedulable s) { if (s instanceof StartBounded && endtime.before(((startbounded)s).getstart())) return false; if (s instanceof EndBounded && ((EndBounded)s).getEnd().before(starttime)) return false; return true; Programmering 1999 KVL Side Hov! Hvad var nu det nu at instanceof og (klasse) betød? Man kan undersøge om et givent objekt er af en bestemt klasse eller implementerer en bestemt grænseflade. Det gøres ved udtrykket: objekt instanceof klasse-eller-grænseflade Man kan eksplicit typekonvertere (eller omtype, på engelsk: type cast) et udtryk med (typenavn)udtryk For klasser eller grænseflader går det kun godt hvis udtrykket rent faktisk giver et objekt der kunne tildeles til en variabel af typen. Programmering 1999 KVL Side : Appointment2000 En aftale uden sluttidspunkt class StartAppointment extends CalendarItem implements StartBounded { private Time starttime; public StartAppointment(Time starttime, String text) { super(text); this.starttime = new Time(starttime); public String tostring() { return "from " + starttime + ": " + text; public Time getstart() { return starttime; public boolean collides(schedulable s) { if (s instanceof EndBounded && ((EndBounded)s).getEnd().before(starttime)) return false; return true; public void postpone(int min) { starttime.increment(min); public void move(time newstart) { postpone(starttime.to(newstart)); Programmering 1999 KVL Side Appointment2000: Automatisk flytning af aftaler (Virker kun hvis aftaler er ordnet efter starttidspunkt.) static void reschedule(calendaritem [] calendar) { for (int i = 1; i < calendar.length; i++) if (calendar[i] instanceof StartBounded) for (int j = 0; j < i; j++) if (calendar[j] instanceof EndBounded && ((Schedulable)calendar[i]). collides((schedulable)calendar[j])) { // Move the later appointment ((StartBounded)calendar[i]). move(((endbounded)calendar[j]).getend()); Programmering 1999 KVL Side 12-28

8 Appointment2000: main i TestAppointment2000 public static void main(string[] args) { ToDo t1 = new ToDo("tag backup"); Appointment a1 = new Appointment(new Time(8), new Time(9, 20), "forelæsning"); Appointment a2 = new Appointment(new Time(13), "møde"); Appointment a3 = new Appointment(new Time(14), new Time(14, 15), "kaffe"); StartAppointment a4 = new StartAppointment(new Time(15), "biblioteket"); CalendarItem [] friday = {t1, a1, null, a2, a3, a4; print_calendar(friday); t1.done = true; friday[2] = new Appointment(new Time(13), new Time(13, 10), "ring til mor"); a2.prolong(60); reschedule(friday); print_calendar(friday); Programmering 1999 KVL Side Sammenfatning Abstrakte klasser kan bruges til at modellere abstrakte begreber. Abstrakte metoder definerer minimumskrav for en abstrakt klasses subklasser. En klasse kan kun udvide en enkelt superklasse (enkelt nedarvning). En klasse kan implementere en eller flere grænseflader (multipel pseudo-nedarvning). En grænseflade består udelukkende af abstrakte metoder. Variable, parametre og tabeller kan erklæres med en abstrakt klasse eller grænseflade som type. Man kan bruge instanceof til at udersøge medlemsskab af en klasse eller grænseflade. Man kan eksplicit typekonvertere ( omtype ) et udtryk. Læs: L&L afsnit Programmering 1999 KVL Side 12-30

DANMARKS TEKNISKE UNIVERSITET

DANMARKS 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 mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus 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 mere

Skriftlig eksamen i Datalogi

Skriftlig 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 mere

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. 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 mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 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 mere

Klasser og nedarvning

Klasser 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 mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, 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 [email protected]. Besvarelsen skal

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Objektorienteret Programmering

Objektorienteret 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 mere

SWC eksamens-spørgsmål. Oversigt

SWC 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 mere

Hvad er Objekter - Programmering

Hvad 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 mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University 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 mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregå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 mere

A Profile for Safety Critical Java

A 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 mere

Virkefeltsregler i Java

Virkefeltsregler 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 mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Løsning af møntproblemet

Lø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 mere

Abstrakte datatyper C#-version

Abstrakte 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 mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæ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 mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen [email protected] i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, [email protected] 1 Dagens program Opsamling

Læs mere

Videregående programmering i Java

Videregå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 mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript Kaspar Rosengreen Nielsen [email protected] i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, [email protected] 1 Dagens program Opsamling på

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software 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 mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

DM502. Peter Schneider-Kamp ([email protected]) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp ([email protected]) 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 mere

Objektorienterede metoder

Objektorienterede metoder Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags

Læs mere

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger:

Læs mere

Løsning af skyline-problemet

Lø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 mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI 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 mere

Singleton pattern i Java

Singleton 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 mere

Forelæsning Uge 2 Mandag

Forelæ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 mere

Klasser 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 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 mere

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

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 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 mere

Dag 10 Flertrådet programmering

Dag 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 mere

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6

Læs mere

DM507 Algoritmer og datastrukturer

DM507 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 mere

Bilag 1 Rige billeder Ordremodtagelse

Bilag 1 Rige billeder Ordremodtagelse Bilag1 Rigebilleder Ordremodtagelse Tværfagligtprojektpå2.Semester Bilag afchristian,kennetogmartin 71 Overordnet Tværfagligtprojektpå2.Semester Bilag afchristian,kennetogmartin 72 Produktionsgulvet Tværfagligtprojektpå2.Semester

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

Læs mere