IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

Like dokumenter
Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Programmeringsspråket C

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF1010 våren Arv og subklasser - del 2

INF 1010, vår 2005 Løsningsforslag uke 11

Repitisjonskurs. Arv, Subklasser og Grensesnitt

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

Dagens tema Kapittel 8: Objekter og klasser

Programmeringsspråket C

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

2 Om statiske variable/konstanter og statiske metoder.

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Del 3: Evaluere uttrykk

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

INF1010 våren Arv og subklasser - del 2

Programmeringsspråket C

TOD063 Datastrukturer og algoritmer

INF 1000 høsten 2011 Uke september

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

Fra Python til Java, del 2

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

INF1010 våren Arv og subklasser - del 2

Forelesning inf Java 5

INF1010 våren 2018 tirsdag 23. januar

Forelesning inf Java 5

INF1010 våren Arv, subklasser og grensesnitt - del 2

TDT4100 Objektorientert programmering

Kapittel 9: Sortering og søking Kort versjon

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

UNIVERSITETET I OSLO

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

JAVA Oppsummering for IS-102. Even Åby Larsen

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

UNIVERSITETET I OSLO

Kapittel 7: Mer om arv

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Mer objektorientert programmering

Forelesning inf Java 4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

INF1000 : Forelesning 4

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

UNIVERSITETET I OSLO

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Kapittel 8: Programutvikling

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

UNIVERSITETET I OSLO

INF1010 Arv. Marit Nybakken 2. februar 2004

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

ADT og OO programmering

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

INF1010 våren februar. Arv og subklasser, del 2

Velkommen til. INF våren 2016

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

TDT4100 Objektorientert programmering

INF1010 våren Arv og subklasser del 1

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

INF1010 våren Arv og subklasser, del 2

Enkel lesing og skriving i Java

Fra problem til program

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

INF2100. Oppgaver uke 40 og

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Dagens tema: 12 gode råd for en kompilatorskriver

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter i dag! Klart for første oblig

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

UNIVERSITETET I OSLO

IN 147 Program og maskinvare

Introduksjon til objektorientert programmering

Forelesning inf Java 1

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr

Transkript:

Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998

Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string args[]) { System.out.println("Hallo, alle sammen!"); Det kjøres slik: > javac Hallo.java > ls Hallo.class Hallo.java > java Hallo Hallo, alle sammen! Hovedprogrammet er en klasse med en metode main. Det er vanlig å legge hver klassedeklarasjon på en egen fil med samme navn (med.java bak). Forelesning 28.9.1998 Ark 2 av 20

Typisk for Java Java ble utviklet av James Gosling og andre ved SUN i årene 1992 96 for å programmere objektorientert, programmere sikkert, og bli et populært språk for programmering i forbindelse med Internettet. Dette har influert språket: Java er svært objektorientert; alt er klasser. Java har et stort bibliotek med ting som ikke var aktuelle for Simula: Vindusprogrammering, parallelle prosesser, nettoverføring. Svært forenklet karakteristikk «Java er Simula-ideer i C-drakt.» Forelesning 28.9.1998 Ark 3 av 20

Min mening Min meget personlige mening om Java er: Designet av Java er et godt og fornuftig arbeid. Endringene til Simulas klasser er en forbedring. Biblioteket er bare halvveis vellykket; det er for stort og virker unødvendig komplisert. Jeg trives med å jobbe i Java. Forelesning 28.9.1998 Ark 4 av 20

En oversikt over Java Klasser i Java Deklarasjon og bruk av klasser Subklasser static-elementer Setninger Unntak («exceptions») Java-biblioteket Hvor kan man lære mer om Java? Forelesning 28.9.1998 Ark 5 av 20

Klasser i Java Deklarasjon Klasser i Java deklareres nesten som i Simula, men initieringen skjer ved hjelp av en metode med samme navn som klassen: class Punkt { float x, y; Punkt () { x = 0; y = 0; Punkt (float ix, float iy) { x = ix; y = iy; Siden Java kan skille mellom metoder på grunnlag av antallet parametre og deres type, kan vi ha flere initieringsmetoder. IJavaregnesstoreogsmåbokstaver som ulike. Det er vanlig å la klassenavn starte med en stor bokstav. Forelesning 28.9.1998 Ark 6 av 20

Opprettelse av klasseobjekter På samme måte som i Simula kan man opprette nye klasseobjekter med operatoren new: class TestPunkt { public static void main(string args[]) { Punkt origo = new Punkt(); Punkt p1 = new Punkt(2,1); System.out.println("origo: x=" + origo.x + ", y=" + origo.y); System.out.println("p1: x=" + p1.x + ", y=" + p1.y); Operatoren + brukes til å skjøte to tekster. Tallverdier konverteres automatisk til tekst. Kjøring av programmet går slik: > java TestPunkt origo: x=0.0, y=0.0 p1: x=2.0, y=1.0 Forelesning 28.9.1998 Ark 7 av 20

Subklasser Subklasser deklareres med ordet extends: class Pixel extends Punkt { float r, g, b; Pixel(float ir, float ig, float ib) { r = ir; g = ig; b = ib; x = 0; y = 0; Pixel(float ix, float iy, float ir, float ig, float ib) { super(ix, iy); r = ir; g = ig; b = ib; void dump() { System.out.print("(" + x + "," + y + "): [" + r + "," + g + "," + b + "]"); Metoden super referer til superobjektets initiator. Det er ingen automatisk initiering av superobjektet slik det er i Simula. Forelesning 28.9.1998 Ark 8 av 20

Et program som bruker denne klassen kan se slik ut: class TestPixel { public static void main(string args[]) { Pixel origo = new Pixel(1,0,0); Pixel p1 = new Pixel(2,3,0,0,1); System.out.print("origo: "); origo.dump(); System.out.println(); System.out.print("p1: "); p1.dump(); System.out.println(); Metoder kalles slik: p.m(...). Parentesene skal alltid være med. Kjøring går slik: > java TestPixel origo: (0.0,0.0): [1.0,0.0,0.0] p1: (2.0,3.0): [0.0,0.0,1.0] Forelesning 28.9.1998 Ark 9 av 20

Noen viktige predefinerte klasser Diverse predefinerte klasser er alltid tilgjengelige. Klassen Object Alle klasser uten angitt superklasse, er subklasse av denne: class Object { public String tostring() {... public boolean equals(object x) {... : Man kan enkelt få en tekstrepresentasjon av alle objekter. Alle objekter har en likhetstest! Forelesning 28.9.1998 Ark 10 av 20

Klassen String Denne klassen brukes til tekster: final class String { String(...) {... public boolean equals(string s) {... : En «final-klasse» kan ikke utvides med subklasser. Klassen String redefinerer metoden equals. Alle metoder er virtuelle i Java! Forelesning 28.9.1998 Ark 11 av 20

static-elementer Elementer og metoder merket static finnes i selve klassen og ikke i hvert enkelt objekt: class PunktTeller extends Punkt { private static int n = 0; PunktTeller() { super(); ++n; static int antall() { return n; Kun static-metoder får referere til static-elementer. Elementer og metoder merket private er usynlige utenfor klassen. Forelesning 28.9.1998 Ark 12 av 20

Siden static-variable finnes i selve klassen, blir de «globale» for alle objekter av klassen: class TestPunktTeller { public static void main(string args[]) { Punkt p1 = new Punkt(); Punkt p2 = new PunktTeller(); p1 = new PunktTeller(); System.out.println("Totalt " + PunktTeller.antall() + " PunktTeller-objekter."); Vi kaller static-metoder ved å bruke klassenavnet (og ikke en peker til et objekt). Kjører vi dette programmet, får vi > java TestPunktTeller Totalt 2 PunktTeller-objekter. Forelesning 28.9.1998 Ark 13 av 20

Sammendrag av klassebegrepet IN 211 Programmeringsspråk Begrep Simula Java Deklarasjon class C; begin... end classc{... Klasseparametre Ja Nei (men initiatoren) Initiering Kode i klassen Initiator(er) Virtuelle virtual: Alltid Opprettelse new C new C Søppeltømming Ja Ja Referansetest == == Tilordning :- = Egenreferanse this C this Superreferanse this D super Pekerkonvertering pquac (C)p Pekertest pinc p instanceof C Forelesning 28.9.1998 Ark 14 av 20

Setninger i Java Java har de fleste setningene C har: Simula Java begin...end {... v:=e v=e; if B then S else S if (B) S; else S; switch(x) { case a: S; break;... while B do S while (B) S; do S while (B); for i:=a step b until c do S for (i=a; i<=c; i+=b) S; f:=e return e; Forelesning 28.9.1998 Ark 15 av 20

Unntak («exceptions») Unntak er feilsituasjoner som kan oppstå under kjøringen. Programmereren kan angi hvilke feil som skal oppstår, og hvordan de skal håndteres. class Stack { private Object []s; private int sz, n; Stack(int size) { sz = size; s = new Object[sz]; n = -1; Object top() throws EmptyStack { if (n<0) throw new EmptyStack(); return s[n]; void push(object x) throws FullStack { n++; if (n>=sz) throw new FullStack(); s[n] = x; class EmptyStack extends Exception { class FullStack extends Exception { Forelesning 28.9.1998 Ark 16 av 20

Når man kaller en metode som kan fremkalle en feil, må man angi med try og catch hvorledesmanviltasegav feilen: class TestStack { public static void main(string args[]) { Stack s1 = new Stack(6); try { System.out.println("Top is " + s1.top()); catch (EmptyStack e) { System.err.println("Stack is empty!"); Under kjøringen skjer følgende: > java TestStack Stack is empty! Legg forøvrig merke til hvorledes man deklarerer og oppretter matriser. Matriser indekseres alltid fra 0. Forelesning 28.9.1998 Ark 17 av 20

Javas bibliotek Java har et kjempebibliotek, og mye at dette dreier seg om I/U. De viktigste klassene er følgende: Klassen InputStream Det enkleste er å lese én og én byte; annen lesning er dessverre litt kronglete i Java. class InputStream { public int read() throws IOException {... : Klassen PrintStream Denne klassen brukes ved utskrift. class PrintStream { public void print(int x) {... public void print(char x) {... public void print(string x) {... public void print(object x) {print(x.tostring()); public void println(int x) {... : Forelesning 28.9.1998 Ark 18 av 20

Klassen System Denne klassen gir et grensesnitt inn mot maskinen programmet kjører på. Dette inneholder blant annet de tre standard filene. class System { public static InputStream in; //Standard inn public static PrintStream out; //Standard ut public static PrintStream err; // Standard feil : Kommentarer i Java starter med // og varer ut linjen. Forelesning 28.9.1998 Ark 19 av 20

Veien videre IN 211 Programmeringsspråk Den offisielle boken om Java er James Gosling, Bill Joy og Guy Steele: The Java Language Specification. Addison-Wesley, 1996. Denne boken finnes også på /local/doc/java/langspec-1.0.pdf. På /local/doc/java/java-1.1-updates.html finnes en oversikt over det som er endret i versjon 1.1. En mer lettlest bok er Laura Lemay og Charles Perkins: Teach yourself Java 1.1 in 21 days; second edition. Sams.net, 1997. På http://java.sun.com/ finnes diverse informasjon om Java. På http://java.sun.com/docs/white/langenv/ Libraries.doc.html finnes en oversikt over Java-biblioteket. På http: //java.sun.com/docs/books/tutorial/java/ finnes et interaktivt kurs i Java. Forelesning 28.9.1998 Ark 20 av 20