Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Selve objektet versus referencen til objektet Nedarvning
Objektorienteret programmering
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Forelæsning 3.1 Collections Javas for-each løkke
Indledende Programmering Uge 8 - Efterår 2006 Mere om abstraktioner Susanne Lindros.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
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.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
Procestræ under afvikling af cp init login shell cp cp src dest.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
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;
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
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.
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering1B.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Kari Rye Schougaard, Ph.d.-stud Værktøjer og teknikker A A R H U S U N I V E R S I T E T Datalogisk Institut Objekt Orienteret Modellering.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
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.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
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;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
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;
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Oversigt: Java & C++ forskelle  Programmodel og eksekveringsmodel  Klasse model  Instans- og klasse variable og metoder  Typesystem: skelner mellem klasse og kontrakt/type  Har kun pass-by-reference for instanser  Standard biblioteker  collections  API dokumentation  JavaDoc

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel & Eksekveringsmodel

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel  Et Java program er en samling af klasser.  Der er IKKE noget ’file scope’  Ting kan ikke ligge udenfor en klasse i Java.

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Programmodel  Der er en 1-til-1 relation mellem en klasse og en kildetekstfil  Klassen PostfixCalculator skal ligge i en fil som hedder PostfixCalculator.java  Java compileren (javac) oversætter klasser 1-til-1 til bytecode filer.  javac PostfixCalculator.java genererer en PostfixCalculator.class

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Eksekveringsmodel  Java har ikke et ’eksekverbart image’.  Et program en samling bytecode filer.  Java bytecode fortolkes af en fortolker: ’java’. java tager en klasse som parameter  java PostfixCalculator  … bevirker at PostfixCalculator.class indlæses og fortolkningen begynder.

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Eksekveringsmodel  Java bytecode indlæses dynamisk!  klasser indlæses første gang der instantieres et objekt af typen.  indlæsningen sker via en URL  i dette kursus vil det næsten altid være din harddisk  men det kunne ligeså godt være fra et website…  URL’en defineres som sammensætningen af  CLASSPATH og klassenavnet

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Entry point  Java fortolkeren starter fortolkningen i entry-point som er klasse-metoden main.  java PostfixCalculator  … betyder at java fortolkeren kigger efter metoden public class PostfixCalculator { public static void main(String[] args) { > } }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klassemodel

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klassemodel  En java klasse ser nogenlunde ’normal’ ud  Her er en instans variabel og en instans metode; altså felter som definerer tilstand og opførsel for hvert enkelt instantieret objekt. public class AnExampleClass { public int aMethod( int x ) { } private int anAttribute; }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Navngivning  Konventionen foreskriver:  Klassenavne skrives med stort  AnExampleClass  Metodenavne skrives med småt  anAttribute  Pakkenavne skrives med småt  java.util.List

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Instantiering  Java objekter instantieres via operatoren new  Alle objekter i Java allokeres på heap!!! public void doSomething() { AnExample ae = new AnExample(); int y = ae.aMethod(42); }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java interfaces  Java har et specielt begreb, interface, som dækker over en 100% abstrakt specifikation af metoder.  Interfaces kan ikke indeholde metodekroppe ej heller instansvariable. public interface UserInterface { /** * Set teksten i lommeregnerdisplayet s Teksten der skal fremkomme i displayet */ public void setDisplay(String s); }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Referencebaseret  Java skelner mellem to slags typer  Simple typer: int, char, double, long  Klasse typer: (instanser/objekter)  De håndteres forskelligt  Simple typer = handle by value  Klasse typer = handle by reference  Dvs. i AnExample ae = new AnExample(); er ae en reference til et objekt.  Java er dejlig fri for *ae og &ae…

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Reference baseret  Og hvad betyder det så? Date d1 = new Date(1,4,2006); Date d2 = new Date(1,4,2006); if (d1 == d2) {...}?(1) d1 = d2; d2.addDays(27); if (d1 == d2) {...}?(2)

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Reference baseret  Både = og == opererer på objekt referencer.  Hvis man vil lave value kopiering eller sammenligning, må man benytte metoder.  Alle Java klasser arver fra java.Object, som definerer  boolean equals(Object o);  void clone(Object o);

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Øvelse  Skriv en metode i java, som kan lave en ”swap”, altså bytte tilstand på to objekter.  Eksempel swap på heltal: int x=7, y=12, tmp; tmp=x; x=y; y=tmp;  Konstruer indholdet af public void swap(Object a, Object b);

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Memory management  I C++ skal programmøren selv deallokere objekter via ’delete’. Så memory mangement bliver en implicit del af en klasses kontrakt (hvorfor? hvilke problemer giver det???)  Java: automatisk garbage collection.  Dvs. vi skriver trygt d1 = d2;  Ingen bekymring for den gamle d1 instans.

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Klasse metoder  Java har også variable og metoder på klasse niveau. Det angives med (det komplet sindsyge) nøgleord static.  public static void main(String[] args);  Klasse metoder og –variable er ’globale’ for alle instanser af klassen!  Øvelse: Hvorfor er main en klassemetode?(1)

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Polymorfi  En reference er erklæret (kvalificeret) med een type,  Referencen kan referere til et objekt af en anden type.  Dog skal objektets aktuelle type være en subtype af den erklærede type.  Der er to måder at lave subtyper på i Java  implementer et interface  nedarve fra en klasse. public static void AWTAdvanced() { Calculator model = new AdvancedCalculator(); UserInterface view = newAWTUserInterface(model); model.setUserInterface(view); } Erklæret type Aktuelle type

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Specialisering af klasser  En klasse specialiseres via keyword extends  En klasse kan kun arve fra én klasse  single inheritance of implementation class AdvancedCalculator extends SimpleCalculator {... }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Kontrakter for klasser  En klasse kan implementere vilkårligt mange interfaces  Information til compileren: tjek at klassen overholder interfacet.  Interface’s er derfor glimrende til at udtrykke en kontrakt. class AdvancedCalculator implements Calculator, MouseListener, List {... }

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Standard biblioteker

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java biblioteker  En af de helt store styrker ved Java er et meget omfangsrigt, standardiseret bibliotek.  Vi vil især bruge Collections i java.util.  Kig i JavaDoc på java.util.List. List implementeres af f.eks. java.util.Vector.  java.util.List aList = new java.util.Vector();

Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT JavaDoc  Hvis man gør sig lidt umage og kommenterer sin Java kildetekst via specielle kommentarer får man automatisk sin API dokumentation foræret via værktøjet ’JavaDoc’.  javadoc *.java