Javaprogrammering - Del 1. Kursupplägg. Hello world. Kompilera. Kör. Environmentvariabler. föreläsningar övningar 1, 2, 3 och 4 INLÄMNINGSUPPGIFT 2

Relevanta dokument
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

F4. programmeringsteknik och Matlab

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Classes och Interfaces, Objects och References, Initialization

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

TDDC77 Objektorienterad Programmering

OOP Objekt-orienterad programmering

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Att skriva till och läsa från terminalfönstret

Språkkonventioner och redigering av tal.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Programmering för språkteknologer II, HT2011. Rum

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Tentamen , Introduktion till Java, dtaa98, dtea53

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

2D1339 Programkonstruktion för F1, ht 2004

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Klassdeklaration. Metoddeklaration. Parameteröverföring

TDIU01 - Programmering i C++, grundkurs

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Programmering A. Johan Eliasson

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 3-4 Innehåll

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Föreläsning 5-6 Innehåll

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

JAVA Mer om klasser och objektorientering

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

5 Arv och dynamisk bindning FIGUR

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programmering (TDDC77)

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Objektorienterad Programmering (TDDC77)

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

SMD 134 Objektorienterad programmering

Javaprogrammering - Del 2. Instans- kontra klassvariabler. Instans- kontra klassmetoder

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Att använda Java SE JDK 6

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

TENTAMEN OOP

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Innehållsförteckning

Ingenjörsfirman Stéen Java Sida 1 av 1

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Parameteröverföring. Exempel. Exempel. Metodkropp

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Exempel på användning av arv: Geometriska figurer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tentamen OOP

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

OOP Objekt-orienterad programmering

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Grundläggande programmering med C# 7,5 högskolepoäng

Att använda Java SE JDK 6

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Klasser och Objekt i Java. C++ använder beteckningarna datamedlem resp. medlemsfunktion. Klassdefinition. Exempel: Variabler

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

2D1339 Programkonstruktion för F1, ht 2003

Transkript:

Javaprogrammering - Del 1 Java allmänt Objektorientering - polymorfism Kursupplägg föreläsningar övningar 1, 2, 3 och 4 INLÄMNINGSUPPGIFT 2 tentamen 1 2 Hello world Kompilera 3 4 Kör Environmentvariabler path ska peka ut C:\JDKkatalog\bin JDKkatalog = installationsrot för JDK classpath ska minst peka ut lokal katalog skriv SP.BAT... får ordna paths 5 6

SP.BAT Rektangelprogram läs två sidlängder för en rektangel presentera area och omkrets skriv som DOS-tillämpning 7 8 Rektangel-pgm 1 Rektangel-pgm 2 import java.io.*; class rektangel_c public static void main( String args[] ) int a = 0, b = 0; String buf; BufferedReader kbd_reader = new BufferedReader( new InputStreamReader( System.in ) ); try System.out.print( "Ge sida a: "); buf = kbd_reader.readline(); a = Integer.parseInt( buf ); System.out.print( "Ge sida b: "); buf = kbd_reader.readline(); b = Integer.parseInt( buf ); 9 10 Rektangel-pgm 3 "Area: " + a * b ); "Omkrets: " + (2*a + 2*b) ); } // try catch ( IOException exc ) "Kunde inte läsa!" ); } // catch Härnäst samma problem, andra lösningar rektangelklass main-metod med objekt av klassen och sedan rektangelklass med main-metod } // main } // rektangel_c 11 12

class rektangel_c Rektangelklass - 1 public rektangel_c( int a, int b ) this.a = a; this.b = b; } // rektangel_c Rektangelklass - 2 public int omkrets() return 2*this.a + 2*this.b; } // omkrets public int area() return this.a*this.b; } // area 13 14 Rektangelklass - 3 private int a = 0, b = 0; } // class rektangel_c Main med rektangelobjekt - 1 import java.io.*; import rektangel_c; class main_c public static void main( String args[] ) BufferedReader kbd_reader = new BufferedReader( new InputStreamReader( System.in ) ); int a, b; String buf; 15 16 Main med rektangelobjekt - 2 try System.out.print( "Ge sida a: "); buf = kbd_reader.readline(); a = Integer.parseInt( buf ); System.out.print( "Ge sida b: "); buf = kbd_reader.readline(); b = Integer.parseInt( buf ); Main med rektangelobjekt - 3 rektangel_c rektangel = new rektangel_c( a, b ); "Area: " + rektangel.area() ); "Omkrets: " + rektangel.omkrets() ); } // try 17 18

Main med rektangelobjekt - 4 catch ( IOException exc ) "Kunde inte läsa!" ); } // catch } // main } // main_c Main i rektangelklassen sist i rektangel_c samma utseende som ovan köra programmet java rektangel_c mainmetoden i klassen anropas möjligt: 1 mainfunktion per klass för utprovning 19 20 Hello World i Browser Hello World - Applet import java.applet.*; import java.awt.*; public class hello_c extends Applet public void paint( Graphics gr ) gr.drawstring( "Hello world!", 100, 100 ); } // paint } // class hello_c 21 22 Hello World - HTML-fil <html> <head><title> Ett appletexempel </TITLE></head> <body> <APPLET CODE=hello_c.class WIDTH=200 HEIGHT=200> </APPLET> </body> </html> Grundtankar om Java ett programspråk ett klassbibliotek en virtuell maskin d.v.s. ett datorprogram bytekodstolkare 23 24

Virtuell maskin tolkar java byte-kod översätter till OS-anrop bytekoden minimal för effektiv nättransport koden alltid portabel (nja, nej...) OS-specifik VM "det enda som behövs olika fel beroende på OS Utvecklingsmiljöer Java Developer's Kit (JDK) Javasoft, GRATIS kommandoradsbaserat Sun Java Workshop Borland JBuilder IBM Visual Age Symantec Visual Cafe Visual J++, m.fl. 25 26 Javafiler källkod i klassnamn.java eller annat... undvik bytekod i klassnamn.class klassbibliotek vanligen i ZIP-filer även JAR - Java Archive Programtyper Applikationer körs m.h.a. Java VM Applets körs m.h.a. webbläsare inbyggd Java VM eller JDK appletviewer 27 28 Runtimemiljö applikationer Java Runtime Kit ingår i JDK applets HotJava, Netscape, Mozilla eller IE m.fl. CLASSPATH pekar ut klasskataloger 100% Pure Java Write once, run everywhere (skriv en gång, hoppas på det bästa) Utnyttja standardklasser UNDVIK native-metoder metoder beroende av OS eller andra språk 29 30

liknar C++ ofta väldigt mycket ibland litegrann INTE enkelt... Språkets grunder Kommentarer // gäller resten av raden /* Kan gälla över flera rader */ repetera OOP-kursen... där finns enkla övningar 31 32 Viktiga kommentarer ovanför klass författare, datum, historik m.m. ovanför funktionshuvuden gränsytan vad ska komma in? vad kommer ut? JAVADOC dokumentationsgenerator ger dok på HTML-format kräver att kommentarer ser ut som följer 33 34 JAVADOC-kommentarer /** Ordnar uppkoppling mot databasen @param username Användarnamn i DB @param password Passord i DB @return Kastar bil_db_exception vid fel. */ public void connect( String username, String password ) throws bil_db_exception; Kodblock som C++ kapsla in i måsvingar } sats avslutas med ; ; behövs ej efter } 35 36

Datatyper Primitiva typer - storlek klass (struct med metoder) Primitiva typer byte, short int, long för heltal char för tecken float, double för heltal boolean för logiska värden wrapperklasser finns String är en klass, ändå primitiv 37 boolean 1 bit false eller true char 16 bits Unicode character byte 8 bits -128.. 127 short 16 bits -32768.. 32767 int 32 bits -2147483648.. 2147483647 long 64 bits -9223372036854775808.. 9223372036854775807 float 32 bits 3.40282347E+38.. 1.40239846E-45 double 64 bits 1.79769313486231570E+308.. 4.94065645841246544E-324 38 Variabeldeklarationer kan göras var som helst inom } new på objekt inom så snävt scope som möjligt så sällan som möjligt (blås upp alla vid start ) int antal ELLER int antal = 5 Vektorer INTE som C++ kan lagra primitiva typer eller objekt man får (oftast) gör new 39 40 Vektorer Tilldelning och test int[] intarray = new int[10]; int intarray[] = new int[10] String[] fruits = 'Äpplen', 'Päron', 'Apelsiner' }; int intarray[10]; ger KOMPILERINGSFEL som C++ tilldelning = test == 41 42

Räkneoperationer som C++ +, -, *, / ++, --, +=, /= de finns alla med <<, >> m.fl. bitoperatorer INTE för in-/utmatning Kontrollflöden som C++ if, while, do.. while, for switch, break, continue jodå, det är likadant 43 44 Skillnad då? Objektorientering - Kylsim hanteringen av objekt inga pekare (alltid referenser = pekare) endast värdeöverförda parametrar call-by-value undantagshantering standardbibliotek klasser och filer arv NOD VVS Abstrakt basklass arv VENTIL 45 46 Filer C++ Filer Java VVS.H gränssnitt VVS.CPP implementation NOD.H/NOD.CPP VENTIL.H/VENTIL.CPP KYLSIM.CPP mainfunktion 47 VVS.JAVA gränssnitt OCH implementation NOD.JAVA VENTIL.JAVA KYLSIM.JAVA mainmetod 48

Nästa exempel - Polymorfism figur_c Abstrakt basklass arv arv rektangel_c cirkel_c figur_c kod - 1 public abstract class figur_c public figur_c( int x, int y ) this.x_center = x; this.y_center = y; } // figur_c 49 50 figur_c kod - 2 public abstract int max_x(); public abstract int max_y(); public abstract int area(); public abstract int omkrets(); protected int x_center, y_center; } // class figur_c cirkel_c kod - 1 public class cirkel_c extends figur_c public cirkel_c( int x, int y, int radie ) super( x, y ); this.radie = radie; } // cirkel_c 51 52 cirkel_c kod - 2 public int max_x() return super.x_center + this.radie; } // max_x public int max_y() return super.y_center + this.radie; } // max_y cirkel_c kod - 3 public int area() return (int)( Math.PI * this.radie * this.radie ); } // area public int omkrets() return (int)( 2*Math.PI * this.radie ); } // omkrets 53 54

cirkel_c kod - 4 rektangel_c kod - 1 public int diameter() return this.radie + this.radie; } // diameter private int radie; } // class cirkel_c 55 public class rektangel_c extends figur_c public rektangel_c( int x, int y, int sida, int hojd ) super( x, y ); this.sida = sida; this.hojd = hojd; } // rektangel_c 56 rektangel_c kod - 2 rektangel_c kod - 3 public int max_x() return super.x_center + this.sida / 2; } // max_x public int area() return this.sida * this.hojd; } // area public int max_y() return super.x_center + this.hojd / 2; } // max_y public int omkrets() return 2*this.sida + 2*this.hojd; } // omkrets 57 private int sida, hojd; } // class rektangel_c 58 figur_c - Polymorfism figmain_c - 1 provprogram skapar vektor med 4 figurer loopar igenom, anropar instansmetoder låter Java VM avgöra vad som ska anropas special: instanceof public class figmain_c public static void main( String args[] ) figur_c[] figurer = new figur_c[4]; figurer[0] = new rektangel_c( 10, // x 10, // y 10, // sida 10 ); // hojd 59 60

figmain_c - 2 figurer[1] = new cirkel_c( 10, // x 10, // y 10 ); // radie figmain_c - 3 figurer[3] = new cirkel_c( 20, // x 20, // y 20 ); // radie figurer[2] = new rektangel_c( 20, // x 20, // y 20, // sida 20 ); // hojd 61 62 figmain_c - 4 for ( int index = 0; index < figurer.length; index++ ) if ( figurer[index] instanceof cirkel_c ) "Cirkel:" ); "Diameter: " + ((cirkel_c)figurer[index]).diameter() ); } else "Rektangel:" ); } // if 63 figmain_c - 5 "Högsta x: " + figurer[index].max_x() ); "Högsta y: " + figurer[index].max_y() ); "Area: " + figurer[index].area() ); "Omkrets: " + figurer[index].omkrets() ); "***********" ); } // for } // main } // class figmain_c 64 Vad är en Javaklass? samling av data (medlemsvariabler) samling medlemsfunktioner opererar på data nja, det där var C++ termer Vad är en Javaklass (terminologi)? samling av instansvariabler samling instansmetoder opererar på instansvariabler 65 66

Vad är ett objekt? Syntax en instans av en klass t.ex. cirkel_c cirkel; // får värdet null cirkel = new cirkel_c( 10, 10, 10 ); nu har vi en instans av cirkel_c cirkel pekar dit delete FINNS INTE! skräpsamling 67 <modifier> class <name> [extends <baseclassname] [implements <interfacename>]... <variable definitions>... <function definitions>... } 68 Anrop av instansmetod Peta på data i ett objekt cirkel_c cirkel = new cirkel_c( 10, 10, 10 ); "Area: " + cirkel.area()); anrop av area()-metoden i cirkel_c vad är this?? gör radie public i cirkel_c public int radie; kan petas på utifrån cirkel_c cirkel = new cirkel_c( 10, 10, 10 ); cirkel.radie = 27; // som en struct i C 69 70 Konstruktor metod med samma namn som klassen!! OBS!! INGEN RETURTYP varje klass har konstruktor default: en utan parametrar gör ingenting Destruktor "glöm det" nästan skräpsamling går ju av sig självt men det är klart finalize-metoden 71 72

Metod - överlagring Flera konstruktorer funktioner med samma namn olika typer på parametrar olika antal parametrar olika returtyper T.ex. i cirkel_c: public void rita( int skala ); public void rita( int x, int y ); 73 överlagring även här T.ex. i figur_c: public figur_c( int x, int y ); public figur_c(); 74