Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12 Datalagring, Beans, 2D og Collections.

Liknende presentasjoner


Presentasjon om: "Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12 Datalagring, Beans, 2D og Collections."— Utskrift av presentasjonen:

1 Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12 Datalagring, Beans, 2D og Collections Datalagringside 2 Tekstfilerside 3-4, m. vedlegg Å lagre objekter, serialiseringside 5 m. vedlegg Java Beansside 8 Grensesnittetside 9 Regler for bønnerside 10 Eksempel - Smileyside 11 Java Foundation Classes - JFCside 12 2D-grafikkside Collection Frameworksside Hva mer?side 20

2 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 2 Datalagring •IO-biblioteket inneholder 58 klasser •InputStream og OutputStream - for binær datatransport •Reader og Writer - for formattert datatransport –Tekstfiler, i prinsippet som i andre programmeringsspråk •Lagring av objekter –serialisering - enkelt! •alle data må skrives/leses på en gang •ingen sikkerhetsmekanismer som f.eks. gjenoppretting –Persistent Storage Engine - like enkelt som serialisering •lite tillegg til Java (250kb) •transaksjonshåndtering, men ikke flerbruker-oppdatering •finmasket tilgang til data, objekter det refereres til hentes automatisk •gjenoppretting mulig –objektdatabaser –relasjonsdatabaser, eventuelt med objektstøtte

3 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 3 Klasser til bruk ved tekstfiler Reader BufferedReader InputStreamReader FileReader Writer OutputStreamWriter PrintWriter FileWriter •Reader:Abstrakt klasse for å lese fra en strøm av tegn •InputStreamReader: En leser som leser en strøm av byte i gitt tegnsett og omformer dem til Unicode. Brukes for f.eks. System.in og URL. •FileReader: Knytter leseforbindelse til en bestemt disk-fil. •BufferedReader: For å bufre inndata. Eneste klasse med metode for lesing, readLine( ). •Writer: Abstrakt klasse for å skrive til en strøm av tegn. •OutputStreamWriter: En skriver som omformer en strøm av Unicode-tegn til et gitt tegnsett. •FileWriter: Knytter skriveforbindelse til en bestemt fil. •PrintWriter: Kan skrive tekst og tall i tekstformat.

4 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 4 Å lese til/fra konsoll og tekstfiler •Å lese fra konsollet: –InputStreamReader forbindelseTilKonsoll = new InputStreamReader(); –BufferedReader leser = new BufferedReader(forbindelseTilKonsoll); –String linje = leser.readLine(); –..eventuell omforming til tall, etc… –Et enkelt tegn kan leses uten å bruke noe av dette: •char tegn = System.in.read(); // se Console-klassen i corejava •Å skrive til konsollet: –System.out.println( ); // tall omformes til tekst •Å lese fra fil: –FileReader forbindelseTilFil = new FileReader(”linjer.txt”); –BufferedReader leserFraFilSomBufrer = new BufferedReader(forbindelseTilFil); –String linjeFraFil = leserFraFilSomBufrer.readLine(); •Å skrive til fil: –FileWriter forbindelseTilUtfil = new FileWriter("linjer.txt"); –PrintWriter skriver = new PrintWriter(forbindelseTilUtfil, true); –skriver.println(”Dette havner på en fil som heter linjer.txt”); eksempel, se vedlegg

5 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 5 En objektstruktur, eksempel Harry Hacker Carl Cracker Tony Tester Employee[ ] staff Employee[ ] staff = new Employee[3] Employee harry = new Employee("Harry Hacker", 35000, new Day(1989,10,1)); staff[0] = harry; staff[1] = new Manager("Carl Cracker", 75000, new Day(1987,12,15), harry); staff[2] = new Manager("Tony Tester", 38000, new Day(1990,3,15), harry); Employee harry

6 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 6 Hva betyr det å lagre objekter? Hva er serialisering? •For hvert objekt må vi lagre: –typen til objektet –dataene –de objektene som eventuelle pekere peker til –hva hvis flere pekere til samme objekt? •Serialisering gjør dette for deg - binært •Samme objekt lagres ikke flere ganger •Strukturen beholdes 100% - objektene er blitt persistente •Objekter som lagres får et serienummer •Dersom objektet er lagret fra før, bruk serienummeret som referanse •Klassen må implements Serializable - ingen metoder

7 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 7 Å lagre og lese objektdata •Klassene må implementere Serializable •Å lagre objektdata: –Employee[] staff = new Employee[3]; –…fyller objektet staff med data... –FileOutputStream koplingTilFil = new FileOutputStream("test2.dat") –ObjectOutputStream ut = new ObjectOutputStream(koplingTilFil); –out.writeObject(staff); –out.close(); •Å lese objektdata: –FileInputStream koplingTilFil = new FileInputStream("test2.dat"); –ObjectInputStream in = new ObjectInputStream(koplingTilFil); –Employee[] newStaff = (Employee[])in.readObject(); –in.close(); –eksempel, se vedlegg

8 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 8 Java Beans •En Java-bønne er en gjenbrukbar programvarekomponent som kan manipuleres visuelt i et verktøy •Bønna kan være synlig, f.eks. trykknapp, vindu, editor eller den kan være usynlig, f.eks. en komponent som regner ut lønn •En bønne lages som en vanlig Java-klasse. Spesielle navnekonvensjoner gjelder •Bønna er en svart boks –kan ikke subklasses (hvis du ikke har kildekoden) –har ingen felles superklasse (klassen Beans inneholder bare statiske metoder) •GUI-komponentene er eksempler på bønner

9 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 9 Grensesnittet mot omverden JavaBean- komponent metoder hendelser egenskaper hvem er jeg? (”introspection”) tilpasser (”property sheet”) persistens

10 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 10 Regler for bønner •Navnekonvensjoner •Enkle egenskaper –public type getXXX(); –public void setXXX(type verdi); •Logiske egenskaper –public boolean isXXX(); –public void setXXX(boolean verdi); •Indekserte egenskaper –public type [ ] getXXX(); –public void setXXX(type [ ] verdier); eller –public type getXXX(int indeks); –public void setXXX(int indeks, type verdier); •Hendelser –public void addlytter(lytter a); –public void removelytter(lytter a); •Metoder –public... •Tilby alltid en konstruktør uten argumenter •Synlige bønner subklasses fra java.awt.Component •Bruk ikke: –new –instanceof –”casting” •Bruk heller statiske metoder i klassen java.beans.Beans –instantiate(klasselaster, klasse/.ser-fil) –getInstanceof(bønne, klassenavn) –isInstanceOf(bønne, klassenavn) •Hvorfor? For å støtte framtidige versjoner av JavaBeans

11 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 11 Eksempel - bønnen Smiley hentet fra R. Orfali, D. Harkey: Client/Server Programming with Java and CORBA •Smiley extends Canvas •Smiley tilbyr: –Offentlig konstruktør uten argumenter –Offentlig metode for å skru av og på smilet –Offentlig metode for å tegne –Å være en ”actionlytter” •Smiley tilbyr ikke: –Egenskaper (men kan enkelt ordnes) –Tilpasser bønnen klienten legger bønnen i en container knappen hører til klienten vedlegg programkode

12 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 12 Java Foundation Classes - JFC •En del av JDK 1.2 (Release Candidate 1) •Java 2D-grafikk •Swing - ny pakke med GUI-komponenter •Drag & Drop –datatransport på tvers av applikasjoner (også ikke-Java) og internt i en applikasjon •Programvare for å støtte teknologi for funksjonshemmede

13 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 13 2D-grafikk •Kan tegne linjer i en vilkårlig tykkelse •Kan fylle figurer med ulike mønstre og graderte farger •Kan flytte, rotere og skalere tekst og grafikk •Kan forholde seg til brukerkoordinater i stedet for absolutte koordinater •Bruker klassen Graphics2D i stedet for Graphics –Grahics2D g2 = (Graphics2D)g; •Pakken java.awt.geom inneholder en mengde ulike geometriske figurer

14 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 14 java-media/2D/samples/index.html

15 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 15 Collection Frameworks •En collection (container) er et objekt som inneholder en gruppe med andre objekter, eksempler: –vektorer. En instans av klassen Vector er en samling (av pekere til) objekter av vilkårlige klasser. –tabeller. En tabell (array) inneholder pekere til objekter av en gitt klasse, eller til objekter av subklasser av denne. •Et Collection Framework er en enhetlig arkitektur for å håndtere collections. Består av: –Interfaces. Erklærer en felles mengde metoder for alle typer collections. –Implementasjoner. Konkrete implementasjoner av interface’ne. Gir gjenbrukbare datastrukturer. –Algoritmer. Eksempler er søking og sortering. Algoritmene er polymorfe. Gjenbrukbar funksjonalitet.

16 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 16 Collections - et hierarki av Interfaces •Set: Kan ikke inneholde duplikater. •List: En ordnet sekvens av elementer. Kan inneholde duplikater. Kan sette inn elementer på bestemte plasser. •Map: Tilordner nøkler til verdier. Hver nøkkel må svare til eksakt en verdi. •Ordningsrekkefølge –Comparable: Interface som inneholder metoden compareTo( ). ”Naturlig rekkefølge”. –Comparator. Collection Set List SortedSet Map SortedMap

17 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 17 Collections - et utdrag av metodene Interface Collections: boolean add(Object o) boolean addAll(Collection c) void clear( ) boolean contains(Object o) boolean containsAll(Collection c) boolean equals(Object o) boolean isEmpty() Iterator iterator() boolean remove(Object o) boolean removeAll(Collection c) int size() Interface List: int lastIndexOf(Object o) Object remove(int index) Object set(int index, Object element) List subList(int fromIndex, int toIndex) Interface Set: ingen nye

18 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 18 Collections - implementasjoner •Set –HashSet: Rask, men ingen ordningsrekkefølge –TreeSet: Sikrer rekkefølge (OrdedSet). •List –ArrayList: likner på en Vector. Rask. –LinkedList: nodeobjekt for hvert element. Nyttig hvis du ofte setter inn nye elememter i begynnelsen av lista. •Å betrakte en array som ei liste: –Kan ikke endre størrelsen på listen –List l = Arrays.asList(new Object[size]);

19 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 19 Collections - algoritmer •Statiske metoder der første argument tilhører en klasse som implementerer Collections-interface. •sort( ): Sortering i hht til definert ordningsrekkefølge •shuffle( ): Elementene plasseres i tilfeldig rekkefølge •reverse( ): Snur rekkefølgen •fill( ): Fyller elementene med en bestemtverdi •copy( ): Kopierer fra en liste til en annen. Til-listen må være minst like lang som fra-listen. •binarySearch( ): søker i en sortert liste •min( ) •max( ) import java.util.*; public class Sort { public static void main(String args[]) { List l = Arrays.asList(args); Collections.sort(l); System.out.println(l); }

20 Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12, side 20 Hva mer? •Egne exception-klasser (kap. 11) •Bruk av javadoc (app. II) og andre verktøy •Drag & Drop •Støtte for funksjonshemmede •Trådprogrammering •Bildebehandling •Internasjonalisering •Sikkerhet - digitale signaturer, kryptografi, tilgangskontroll •JDBC databasetilgang - standard API mot relasjonsdatabaser •RMI - for å programmere distribuerte systemer •Java Native Interface - å kalle C-rutiner fra Java •Java IDL / CORBA - objekter skrevet i ulike språk kan kommunisere (også over nettverk) via et grensesnitt spesifisert i IDL


Laste ned ppt "Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 12 Datalagring, Beans, 2D og Collections."

Liknende presentasjoner


Annonser fra Google