Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java



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

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

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

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Objektorienteret Programmering

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

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

Singleton pattern i Java

SWC eksamens-spørgsmål. Oversigt

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

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

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

A Profile for Safety Critical Java

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

Tree klassen fra sidste forelæsning

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

Eksempel på en database: studenter, kurser, eksamener

Java Klasse nedarvninger

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Databaseadgang fra Java

Hvordan vælger jeg dokumentprofilen?

Løsning af skyline-problemet

Ugeseddel 4 1. marts - 8. marts

Eksempel: Skat i år 2000

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Klasser og objekter. (Afsnit i manualen)

Dag 10 Flertrådet programmering

SWC Elementer i klassedefinition

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

14.1 Internationale programmer

Anvendelse af metoder - Programmering

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

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet.

Kursus navn: Indledende programmering Kursus nr

Klasser og nedarvning

CodeDOM - Dynamisk generering og kompilering af kode

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

BRP Kursusintroduktion og Java-oversigt

Singleton pattern i C#

Abstrakte datatyper C#-version

Hvad er Objekter - Programmering

.NET 4.0 og C# 4.0. Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

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

DANMARKS TEKNISKE UNIVERSITET

Introduktion til AOP i C#

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11

SigmaT.

Videregående programmering i Java

Test af It-komponent

SAX Simple API for XML.

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Assignment #5 Toolbox Contract

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.

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

Videregående programmering i Java

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU semester 11. desember 2007

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Forelæsning Uge 4 Torsdag

Videregående programmering i Java

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Linguistic support for unit testing

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

Virkefeltsregler i Java

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

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

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

Web- og serverprogrammering

Introduktion til ActionScript, fortsat

Modern Concurrency Abstractions for C#

02101 Indledende Programmering Introduktion til Eclipse

Hvilket sprog er hurtigst

Dag 10 Flertrådet programmering

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Computer netværk og TCP/IP protokoller. dcomnet 1

Løsning af møntproblemet

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Real-time programming safety in Java and Ada

Det er muligt at chekce følgende opg. i CodeJudge: og

DM502. Peter Schneider-Kamp

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

Forelæsning Uge 3 Mandag

Videregående Programmering for Diplom-E Noter

Udvikling af DOTNET applikationer til MicroStation i C#

Specifikationsdokument for PDF Validator API

Forelæsning Uge 2 Torsdag

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Webserverprogrammering

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Transkript:

OOP1 Java intro. Klasser, objekter, interfaces, nedarvning, Association, Aggregation og Composition mvh. Try and catch exceptions. Package Intro. til jar filer.

Overblik Compile-time Environment Run-time Environment Java Source (.java) Class Loader Bytecode Verifier Java Class Libraries Java Compiler Java Bytecodes move locally or through network Java Interpreter Just in Time Compiler Java Virtual machine Runtime System Java Bytecode (.class ) Operating System Hardware

Hvad er godt ved Java. Portabel - Write Once, Run Anywhere. Robust memory management. Nem network programming. Multi-thread programmering. Dynamic & extensible (loads of libraries). Klasser gemmes I separate filer. Loades når de skal bruges. Osv.

Lidt om simple datatyper: Array int[] ar1; ar1= new int[10]; Int[] ar2= {2,3,4,5,6; int[][][] d3ar= new int[4][5][6]; d3ar[2][2][2]= 5; Object obj1= ar2[1];

Navne konventioner. Java er case-sensitiv - maxval og maxval, og er forskellige navne Class navne starter med Stort bogstav. Alle andre navne begynder med lille bogstav. Undtagen konstanter der skrives med stort: PI Sammensatte ord skrives: thebigone Underscores bruges ikke i navne undtagen konstanter. Sådan er det bare!

Class public class EnKlasse { varable eller attributter eller field eller data, constructors methods public class EnKlasse extends EnAndenSuperKlasse implements EtInterface { varable eller attributter eller field eller data, constructors methods

Et java program public class Owner extends SKlasse { private String name; public Owner() { super("kurt"); this.name="kurt"; private Owner(String name) { this.name=name; public static void main(string[] args) { Owner o1=new Owner("Peter"); Owner o2=new Owner(); public class SKlasse { public SKlasse() { ----------------- public SKlasse(String name) { -----------------

Et java program public class Owner extends SKlasse { private String name; int a; public Owner() { super("kurt"); this.name="kurt"; private Owner(String name) { this.name=name; public static void main(string[] args) { Owner o1=new Owner("Peter"); Owner o2=new Owner(); o1.a= o1.regn(2,3f); public class SKlasse { public SKlasse() { ----------------- public SKlasse(String name) { ----------------- public int regn(int x,float y) { return x+ (int)y;

Et java program public class Owner extends SKlasse { private String name; int a; public Owner() { super("kurt"); this.name="kurt"; private Owner(String name) { this.name=name; public int regn(int x,float y) { return 2 * x + (int)y; public static void main(string[] args) { Owner o1=new Owner("Peter"); Owner o2=new Owner(); o1.a= o1.regn(2,3f); public class SKlasse { public SKlasse() { ----------------- public SKlasse(String name) { ----------------- public int regn(int x,float y) { return x+ (int)y;

Et java program public class Owner extends SKlasse { private String name; int a; public Owner() { super("kurt"); this.name="kurt"; private Owner(String name) { this.name=name; public int regn(int x) { return 2 * x + 5; public int regn(int x,float y) { return 2 * x + (int)y; public static void main(string[] args) { Owner o1=new Owner("Peter"); Owner o2=new Owner(); o1.a= o1.regn(2,3f); o1.a= o2.regn(2); public class SKlasse { public SKlasse() { ----------------- public SKlasse(String name) { ----------------- public int regn(int x,float y) { return x+ (int)y;

Association 'Has-A' relationship.. public class Person { private final Name name; private Costume currentclothes; //... Aggregation og Composition kan man tænke på som specialiseringer af Association

Aggregation: "has" another object. class Car { private Engine engine; void setengine(engine engine){ this.engine = engine; void move() { if (engine!= null) engine.work();

Composition: "owns" another object. final class Car { private final Engine engine; Car(EngineSpecs specs) { engine = new Engine(specs); void move() { engine.work(); final class (Man kan ikke nedarve fra en final klasse) final void Metode() (Kan ikke overskrives) public static final double PI = 3.141592653589793;

Static public static final double PI = 3.141592653589793; Variables: Variablen deles af alle instanser af klassen og den eksistere allerede på reklærings tidspunktet. methods : Metoden kan anvendes dirkte uden at instantiere klassen. nested klasser Klassen kan ikke tilgå variable i den omsluttende klasse.

Access level modifier public class Owner extends SKlasse { private String name; public Owner() { super("kurt"); this.name="kurt"; private Owner(String name) { this.name=name; private void M1(){ public static void main(string[] args) { The following table shows the access to members permitted by each modifier. Modifier Class Package Subclass World public Ja Ja Ja Ja protected Ja Ja Ja Nej no modifier Ja Ja Nej Nej private Ja Nej Nej Nej

Metoder og data er oftes public eller private God praksis: Hold data private Hold så mange metoder som muligt private Få public metoder/data giver et simpelt interface til objektet

Exceptions. Fejl skal fanges og håndteres. 1. Error detection 2. Error objekt generering. 3. Error håndtering. /*No error detection, object generation or handling*/ public class A { private void f(){ int a=22/0; //java.lang.arithmeticexception public static void main(string[] args) { new A().f();

Error detection and handling: try throws and catch public class A4 { private void f(int x) throws ArithmeticException{ int a=22/x; private void test(int x){ try { f(x); catch(arithmeticexception e){ System.out.println("Catch exc: "+ e.getmessage()); public static void main(string[] args){ A4 a= new A4(); a.f(0); a.test(0); Operationer der bruger throws skal kaldes fra try{. Objektet der bliver kastet skal fanges af en catch{

Egne Exceptions. class MyException extends Exception { private static final long serialversionuid = 1L; public MyException(String msg){ super(msg); public class Test { static int divide(int x,int y) throws MyException{ if(y==0) throw new MyException("can't be divided by zero"); return x/y; public static void main(string[] args) { try { System.out.println(divide(4,0)); catch (MyException exc) { System.out.println(exc.getMessage());

Packages En indkapsling af classes og packages. Navngivningen er dotted notation. package autoforhandler.butik.biler import autoforhandler.butik.biler.*; Fx klassen Fiat.class Filsystem: autoforhandler/butik/biler/fiat.class

Packages Alle java filer indeholdt i en bestemt Packages skal starte med: Package lib; //lib er package navn Package lib.sub1.sub2 //lib.sub1.sub2 er package navn Alle der bruger disse package skal import dem, og CLASSPATH skal pege på lib direktoriet. sæt fx: CLASSPATH=.;d:\java\mylib Dvs alle klasser i lib gæmmes i: d:\java\mylib\lib Import lib.*; //Alle klasser I lib pakken kan nu bruges. Import lib.sub1.sub2.*;

jar - The Java Archive Nogle fordele: Security. Decreased download time <> increased load time. Compression. Package Versioning. (Udvikler og versionsinformation)

Common JAR file operations Operation To create a JAR file To view the contents of a JAR file To extract the contents of a JAR file To extract specific files from a JAR file To run an application packaged as a JAR file (requires the Main-class manifest header) To invoke an applet packaged as a JAR file Command jar cf jar-file input-file(s) jar tf jar-file jar xf jar-file jar xf jar-file archived-file(s) java -jar app.jar <applet code=appletclassname.class archive="jarfilename.jar" width=width height=height> </applet> Opret text filen Manifest.txt med følgende indhold: Main-Class: MyPackage.MyClass Filen skal slutte med carriage return. jar cfm MyJar.jar Manifest.txt MyPackage/*.class