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

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
Unit testing Gruppe 2: Kjartan Haugen Jon Gunnar Bjørkmo
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
En gang til!? .
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
Apache POI.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
Java 11 Programmering med og uten objekter: hva er forskjellen?
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
CORBA Noen hull som må fylles: ORB Object Adapters CORBA services IDL Factory Objects.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 7 Grafikk Fra AWT til Swingside 2.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Inf1000 (Uke 10) HashMap og ArrayList
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringContainerklasser.2 Mange objekter.
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Iterator i Java boolean hasNext() E next() void remove()
Utskrift av presentasjonen:

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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]);

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); }

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