Title: OOP
1OOPM del III Föreläsning vecka 11
- mer I/O
- serialization
- GUI intro
2OOP Exception Handling
- Exception Model
- Exceptions make the error handling more logical
and regular by allowing you to group all the
exception handling code in only one place instead
of worrying about all the things that could go
wrong at each line of the code
Throws Exception
Throws Exception
Throws Exception
Throws Exception
Method A
Method B
Method C
Method D
EXCEPTION
main()
ERROR
direction of propagation
exception handling code
3OOP Exception Handling
- Exception Model
- Example
- try
- // normally this code runs without problems,
- // but sometimes may raise exceptions or exit
- // the block via a break, continue, or return
- catch (ExceptionType1 e1)
- // handle an exception object e1 of type
- // ExceptionType1 or of a subclass of that type
- catch (ExceptionType2 e2)
- // handle an exception object e1 of type
- // ExceptionType2 or of a subclass of that type
- finally
- // always execute this code, after leaving the
try clause - // 1) normally, after reaching the bottom of
the block - // 2) with an exception handled by a catch
- // 3) with an exception that is not handled
- // 4) because of a break, continue or return
statement
4OOP Java an Files
Java provides a predefined class for modeling
disk files, called File
the constructor for File accepts the files name
(a String reference) as its argument
new File (filename)
An example of this would be
File f1, f2 f1 new File(Bjorn.txt) f2 new
File(Lisa.txt)
5OOP Java and Files
DO NOT FORGET THAT The creation of the instances
f1 and f2 doesnt mean that the files exist!!
If the files exist the class provides us two
methods for directly operate with the files
6OOP Java streams into files
Java program
bytes of data
ewsc24rfds53Hej20Hur20m76ar20du20?rsf
7OOP Java streams into files
summary how to create or overwrite a file in a
line
- Create a File object to represent the file and
then use it to - Create a FileWriter object to represent the
output pathway to the file and use it to - Create a PrintWriter object to provide a
convenient output pathway to the file - Use the print or println methods of PrintWriter
as needed to write content to the file
PrintWriter target new PrintWriter( new
FileWriter( new File(data.out)))
8OOP input an overview
Input source
Java program
bytes of data
ewsc24rfds53Hej20Hur20m76ar20du20?rsf
We must build a bridge between the Java Program
and the input source!!
9OOP keyboard
Java provides a predefined object to represent
the stream of input that comes from the keyboard
System.in.
keyboard
System.in
isr
existing InputStream
keyb
new InputStreamReader
new BufferedReader
BufferedReader keyb new BufferedReader( new
InputStreamReader(System.in))
10OOP INPUT from files
Obtaining input from disk files is only a little
bit more complicated than from the keyboard. Our
starting point must be to find some sort of
InputStream object. As we said before, both
BufferedReader and FileReader belong to that class
fr
files
br
new FileReader
new BufferedReader
BufferedReader br new BufferedReader( new
FileReader("c/testio.txt"))
11Serialisering(Serialization)
- Även objekt kan sparas till filer eller skickas
över nätverk. - För att göra detta måste objektet implementera
gränssnittet Serializable från biblioteket
java.io. - Gränssnittet Serializable har inga metoder som
skall implementeras - Så här kan det se ut
- import java.io.
- public class myClass implements Serializable
- /metodkropp/
12Serialisering(Serialization)
- Hur man serialiserar ett objekt av typen MyClass
sparar till fil och läser tillbaka. - File f new File("c/objects")
- MyClass myObject new MyClass()
- ObjectOutputStream oosnew ObjectOutputStream(
- new FileOutputStream(f))
- oos.writeObject(myObject)
- oos.close()
-
-
- //Hämta tillbaka och typomvandla
- MyClass myOtherObject
- ObjectInputStream oisnew ObjectInputStream(
- new FileInputStream(f))
- myOtherObject (MyClass)ois.readObject()
- ois.close()
-
13Serialisering(Serialization)
- Man kan med metoderna writeObject() och
readObject() skriva resp läsa object. - Man kan skriva flera object till en fil (även med
olika typ. - När man läser tillbaka måste man typomvandla
(casting), dvs man måste veta vilka object som
skrevs i vilken ordning. - När man läser tillbaka måste man ha tillgång till
de klasser som representerar objekten
14Instanceof
- Med instanceof kan man ta reda på vilken klass
ett object tillhör. - Används till exempel för att räkna object av
olika typ i en samling - Syntax
- if(myObject instanceof ClassName) /Kod som
utförs om myObject tillhör klassen ClassName/ -
15GUI
16GUI
- Två API-er/bibliotek för Graphical User Interface
- (APIApplication Program Interface)
-
- AWT Abstract Windowing Toolkit (Enklare GUI)
- Swing (Avancerat GUI) Uppbyggt på samma sätt som
AWT. Kan ibland ge problem när man använder det i
webbrowsers. -
17GUI
- Består av
- Containers Behållare tex JFrame, JApplet,
JWindow, - LayoutManagers Bestämmer hur layouten byggs upp
tex GridLayout, BorderLayout. - Kontrollkomponenter tex JButton, JCheckBox,
JOptionPane - Händelselyssnare och Händelsehanterare Kopplas
till de olika kontrollkomponenter för att ge
önskat resultat.
18GUI-Struktur
- Vi låter två filer bära strukturen för
GUI-Applicationen - Funktionaliteten placeras i klassen Application
- Användargränsittet placeras i klassen GUI
- dessutom har vi en tredje fil där vår mainmetod
placeras och som startar applikationen. - Förutom ovanstående filer kan det finnas ett
flertal andra klasser som bygger upp
applikationen och användargränssnittet
19GUI Containers ett urval
- JFrame grundbehållare för en applikation. Ett
fönster med ram och titel. Kan ha en menyrad.
Huvudkomponent i applikation deklareras JFrame
myFrameskapas myFrame new JFrame() - JPanel en osynlig behållare. Används som del i
JFrame för att visa bilder eller placera ut
knappar. deklareras JPanel myPanelskapas
myPanel new JPanel()
20GUI LayoutManagers ett urval
- BorderLayout innehåller 5 områden( NORTH, SOUTH,
WEST, EAST, CENTER) Bra grundlayout - GridLayout (ett rutnät av rader och kolumner)
- Flowlayout (Kontrollkomponenterna läggs till
efterhand bra för knappar) - Layouter kan appliceras på Containers/Behållare
som JFrame, JPanel mfl
21?