Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

Velkommen til Softwarekonstruktion
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
Distribueret programmering, specielt Web Services Rasmus D. Lehrmann DM
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
1 Nedarvning. 2 Plan Overlæsning af metoder og konstruktører Nedarvning fra klasser Implementering af grænseflader Retningslinjer for design af klasser.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
Hvordan man skriver koden.
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Programering af mobile enheder Windows Phone Storage.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Fundamentale datastrukturer
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
GP 3, 12/ Grundlæggende programmering Efterår 2001 Forelæsning 3 onsdag 12/ kl. 9:15 – 12:00.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Variabler, klassevariabler, identitet og lighed, collections
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Begreber og Redskaber 5

Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om nedarvning Et par ord om objekt-orientering Håndkøring af programmer

Hvorfor objekter og klasser En samling data og operationer på det Opbygning af sine egne datatyper Modellering af virkelige objekter Hierarkisk opbygning af program –Det kan forstås på mange niveauer

Eksempel class A{ int i,j; }.. A a; // a kan have hægte til obj a = new A(); // a peger på obj. a.i = 1; // dot-notation

Oprettelse af objekter Hvis felter skal initialiseres under oprettelse kan det ske i en konstruktør class A{ int i,j; A(){ i = 0; j = 1; } }

Oprettelse Argumenter til oprettelsen class A{ int i,j A(int x, int y){ i=x; j = y;} }.... A a = new A(2,3);

Hægter til objekter Variable med klasse som type er hægter til objekter – initielt null class A{... } A a = new A(); A b = a; a b A obj.

Metoder i klasser Klasser kan indeholde metoder - dvs underprogrammer class A{ int i,j; void udskriv(){ System.out.println(i+”,”+j);} } A a = new A(); a.udskriv();

Funktioner Metoder kan have returværdi class A{ int i,j; int iogj(){return i+j; } } A a = new A(); System.out.println(a.iogj());}

public/private Synlighed: Felter og metoder kan være private for en klasser – usynlige udenfor class A{ private int i,j; public int getI(){return i;} public void setI(int x){i=x;} } // a.i=3 ej ok, a.setI(3) ok

Accessor/mutator God stil: Felter gøres private Værdier hentes med accessormetoder Felter ændres med mutatormetoder accessor: public int getI(){return i;} mutator public void setI(int x){i=x;}

Static/dynamic Static felter og metoder hører til klassen – ikke til objekter Et ” static ” felt per klasse Et ”dynamic” felt per objekt static metoder må ikke bruge dynamiske felter static metoder kan kaldes før objekter er oprettet

Eksempel public static void main(String args[]){} Er kendt uden for klassen (public) Kan kaldes uden at der er objekter (static) Skal ikke returnere en værdi (void)

Eksempel: statiske felter class A{ static private int nr=0; A(){nr++;} static int getNr(){return nr;} } System.out.println(A.getNr()); A a = new A(); System.out.println(a.getNr());

Metoder og parametre class A{ int i=0;... } void p1(int i){i=3;} void p2(A a){a.i=3;} int j=2; p1(j); // j==2 A b=new A(); p2(b); // b.i==3

Virkefelt Java er blokstruktureret (som Pascal, C...) Navne kan genbruges i forskellige blokke class A{ int i; void p(){ int i;...} } Klassen har felt i, metoden lokal variabel i

this refererer til objektet class A{ private int i; void setI(int i){this.i=i;} int getI(){int i=this.i; return i;} void addToI(int j){i=i+j;} }

Overlæsning Man kan have flere metoder med samme navn – bare argumenttyper er forskellige p(String s){...} p(int i){... } p(A a){...} p(”hej”); p(3); p(new A());

toString metoder Lad alle klasser have en metode: public String toString(){...} som returnerer tekstuel version af objektet Bruges en klasse som tekststreng kaldes denne metode: System.out.println(”a = ”+a);

Eksempel: dato class Date{ //felter private int day,month,year; //konstruktør Date(int day, int month, int year){ setDay(day); setMonth(month); setYear(year);} Date(int day, int month){ setDay(day); setMonth(month); setYear(..);} //mutator void setDay(int day){this.day=day;} void setMonth(int month){this.month=month;} void setYear(int year){this.year=year;}

//accessor int getDay(){return day;} int getMonth(){return month;} int getYear(){return year;} //toString public String toString(){ return day + ”/”+month+”-”+year;} //operationer Date imorgen(Date d){.. } Date imorgen(){.. } //testing public static void main(){ Date d = new Date(32,13,1999); Date d1= new Date(21,9,1999); Date d2= d1.imorgen(); }

Datamodellering Hvad er en dato? Dag, måned, år plus operationer som imorgen, igår, mm Skal der være mutator metoder? Kan en dato ændres? Check i konstruktør?

Nedarvning class A{ int i; } class B extends A { int j;} //B er subtype af A A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j // ej B bb = new A();

Subtyper A a = new A(); a.i = 1; B b = new B(); b.i = 1; b.j = 2; A aa = new B(); aa.i = 1; //ej aa.j b = (B) aa; // casting - typecheck b = (B) a; // køretidsfejl if(aa instanceof B) b = (B) aa; //typecheck

Subtyper A a; B b = new B(); a = b; // ingen casting b = (B) a // casting nødvendig A er supertype for B, B subtype af A Værdier af subtype må bruges som supertype

Overskrivning class A{ void hej(){System.out.println(”AA”);} } class B extends A{ void hej(){System.out.println(”BB”);} } A a = new A(); a.hej(); // AA B b = new B(); b.hej(); // BB A c = new B(); c.hej(); // BB I B: void hej1(){super.hej();} b.hej1(); // AA ((B) c).hej1(); // AA

Håndkøring public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; } } } Application.main args = null i=1 j=3

Håndkøring public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; } } } Application.main args = null i=1 2 j=3 2

Håndkøring public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; } } } Application.main args = null i=1 2 4 j=3 2 1

Håndkøring public class Application{ public static void main(String args[]){ int i,j; i=1; j=3; while(j>0){ i=i*2; j=j-1; } } } Application.main args = null i= j=

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} Application.main args = null a= b= t=

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} Application.main args = null a= b= t= A X=0

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} Application.main args = null a= b= t= A X=0 A X=0

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} Application.main args = null a= b= t= A X=0 1 A X=0 2

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t ;}} Application.main args = null a= b= t= A X=0 1 A X=0 2

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t; }} Application.main args = null a= b= t= A X=0 1 A X=0 2

Håndkøring class A{int x;} public class Application { public static void main(String args[]) {A a,b,t; a=new A(); b=new A(); a.x=1; b.x=2; t=a; a=b; b=t; }} Application.main args = null a= b= t= A X=0 1 A X=0 2