(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



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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Objektorienterad Programmering (TDDC77)

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

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

Programmering för språkteknologer I, VT2012. Rum

SMD 134 Objektorienterad programmering

OOP Objekt-orienterad programmering

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

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

Programmering A. Johan Eliasson

Objektorienterad programmering

Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

Parameteröverföring. Exempel. Exempel. Metodkropp

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 5-6 Innehåll

TDDC77 Objektorienterad Programmering

Tentamen OOP

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

Classes och Interfaces, Objects och References, Initialization

Introduktion till Java

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Undervisning. Examination

Typkonvertering. Java versus C

Föreläsning REPETITION & EXTENTA

Objektorienterad programmering i Java

Innehållsförteckning

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Objektorienterad programmering i Java

Undervisning. Examination

OOP Objekt-orienterad programmering

Objektorienterad programmering Föreläsning 4

TENTAMEN OOP

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

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

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

Anteckningar 1: Grundläggande saker

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

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

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

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

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

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

TDDC77 Objektorienterad Programmering

Föreläsning 3: Booleans, if, switch

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Föreläsning 2, vecka 8: Repetition

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Objekt och referenser

Malmö högskola 2008/2009 CTS

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

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

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Arrayer. results

TENTAMEN OOP

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Klasser och objekt. Henrik Johansson. August 20, 2008

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

Övning2. Variabler. Data typer

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Objektorienterad Programmering (TDDC77)

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Hur ser ett Java-program ut?

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

DD1342 Programkonstruktion för F1,

SMD 134 Objektorienterad programmering

Introduktion till Java

F4. programmeringsteknik och Matlab

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Transkript:

(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart robust, säkert oberoende av hårdvaruarkitektur (portabelt) web-anpassat: applets, div bibliotek Objectorienterad programmering Sida 1 Objectorienterad programmering Sida 3 Historik: Java Hette från början OAK (James Gosling, 1991). Utvecklades vid SUN Microsystems. Från början avsett för inbyggda system (tex tvättmaskiner, mobiltelefoner, TV/video, spel, mm). (Storlek och pålitlighet var viktiga) Med WWW fick projektet en annan inriktning Java blev ett programspråk för web-applikationer Kompilering av Java Traditionella kompilatorer översätter programtexten till maskinkod. De flesta Java-kompilatorer översätter till en slags maskinkod; Javabytekod (JVM). Det finns inga maskiner som kör Javabytekod (nja, nästan inga). Därför måste JVM-koden vid körning antingen översättas till maskinkod, eller interpreteras. Objectorienterad programmering Sida 2 Objectorienterad programmering Sida 4

Utvecklingsverktyg för Java Senaste versioner är J2SE 1.4.2 samt J2SE 5.0 J2SE 5.0 (även känt som Java 1.5) innehåller viktiga utökningar, inte helt bakåtkompatibelt. Vi fokuserar på Java 5. Arbetsgången är: Verktyg man redigerar sina filer (klasser) med något redigeringsverktyg (tex Emacs), kompilerar dem med javac och kör den med java (applikationer) eller appletviewer. Objectorienterad programmering Sida 5 Objectorienterad programmering Sida 7 Verktyg (forts) On-line dokumentation När man arbetar med Java behöver man dokumentation av alla standardklasser. http://java.sun.com/j2se/1.5.0/docs/api Suns tutorial http://java.sun.com/docs/books/tutorial Applets kan också visas i webbläsare som t.ex. Explorer, Netscape eller Mozilla. Kompilator, interpretator och appletviewer startas från ett terminalfönster (Unix) eller från ett MS-DOS-fönster (Windows). Om filen heter MinTest.java skriver man alltså: javac MinTest.java java MinTest Objectorienterad programmering Sida 6 Objectorienterad programmering Sida 8

Ett första exempel Klassen Hej implementerar ett klassiskt exempel: en applikation som skriver ut ett meddelande. Filen ska heta Hej.java, samma namn som klassen public class Hej { public static void main(string[] args) { System.out.println("Hej hopp"); Datatyper i Java: Tre slag Primitiva: Sanningsvärden, tecken, heltal, flyttal (8 stycken) Arrayer (nästan inte alls som i C) Objekt Objectorienterad programmering Sida 9 Objectorienterad programmering Sida 11 Enkelt exempel (testkörning Unix) De åtta primitiva typerna Typ Innehåll Defaultvärde Storlek harpo$ javac Hej.java harpo$ java Hej Hej hopp harpo$ harpo$ java -Djava.compiler=NONE Hej Hej hopp boolean true, false false 1 bit char Tecken \u000 16 bit byte Heltal 0 8 bit short Heltal 0 16 bit int Heltal 0 32 bit long Heltal 0 64 bit float Flyttal 0.0 32 bit double Flyttal 0.0 64 bit Objectorienterad programmering Sida 10 Objectorienterad programmering Sida 12

Typkonvertering heltal & flyttal Typen boolean 1. representerar ett sanningsvärde 2. genereras av relationsoperatorer (tex ==, <) 3. if och while-satser kräver att alla sanningsvärden representeras som boolean Ett tal kan automatiskt omvandlas till ett tal av en vidare representation. (Exempel: int->long, int->double, float->double) Ett heltal kan omvandlas till en mindre representation via en uttrycklig omvandling, Aritmetiska operatorer (tex +) returnerar alltid ett värde av type int eller long. b = b + 1 är ej korrekt om b är en byte. Objectorienterad programmering Sida 13 Objectorienterad programmering Sida 15 Arrayer i Java: Inte som i C Typen char Ett tecken i Unicode. 16 bitar. Unicode omfattar alla levande och utdöda språk. Hur får dessa plats i 16 bitar? arrayer skapas explicit storlek anges dynamiskt index testas int[] a = new int [10]; a[-1] och a[10] ger felmeddelande! inititiering int[] a = {1, 2, 3; men även int[] a = {1, n+1, 2*n, n*n; Objectorienterad programmering Sida 14 Objectorienterad programmering Sida 16

Tilldelning Inte som i C (forts) int[] a = new int [10]; int[] b = a; a och b refererar till samma array! Storlek på array ges av.length. int[] a = new int[10]; int x = a.length; Exempel: Byt värde på två array-variabler static void main (String args[]) { int[] a = {1,2,3; int[] b = {99, 98, 97, 93, 92, 91; int[] temp; temp = a; a = b; b = temp; a = new int[100]; int y = a.length; System.out.println("b[0] = " + b[0]); Objectorienterad programmering Sida 17 Objectorienterad programmering Sida 19 Lite om strängar Inte som i C (forts) null står för ingen array. int[] a = null; betyder samma sak som int[] a; I Java är strängar objekt av en speciell klass String ; inte en primitiv datatyp och inte heller en array. Tecknen i en sträng är av char -typ, dvs Unicode-tecken. Objekt av typ String är konstanta man kan inte ändra i en sträng. (Det finns en klass StringBuffer som tillåter ändringar.) Man kan skapa ett nytt sträng-objekt med syntaxen "En sträng". Objectorienterad programmering Sida 18 Objectorienterad programmering Sida 20

Strängar (forts) Strängar slås ihop (konkateneras) med +. Om a och b är strängar så returnerar uttrycket a + b en ny sträng som är konkateneringen av a och b. Om det ena argumentet till + är ett String-objekt, så omvandlas det andra till en sträng. Exempel: int x = 42; System.out.println("Shoesize: " + x); Resultat: Shoesize: 42. Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma egenskaper. En klassdefinition innehåller datafält...... och metoder (= funktioner i C). Man kan också säga: En klassdefinition beskriver kod och data. Ett Javaprogram består av en eller flera klassdefinitioner (och ingenting kan finnas utanför en klassdefinition). Objectorienterad programmering Sida 21 Objectorienterad programmering Sida 23 Strängar, jämförelse Klasser och objekt Notera att två strängar kan ha samma innehåll utan att vara identiska. Operatorn == testar om två referenser är till samma objekt. För att testa om två strängar har samma innehåll, skriv (tex) s1.equals(s2) Varje objekt tillhör en viss klass. (Objektets klass är detsamma som objektets typ.) Vi säger att objektet är en instans av klassen. Alla objekt av en viss klass kan användas på samma sätt de har samma gränssnitt. En definition av en viss klass kan ses som en mall för objekt av den typen. Objectorienterad programmering Sida 22 Objectorienterad programmering Sida 24

Klassdefinition: Exempel class Person { int ålder; String namn; Konvention: Namnet på en klass skrivs med stor bokstav. namn och ålder är fält i objekt av typen Person. Skansholm: instansvariabler Engelska: field Referensvariabler och referenssemantik Person x; Person y; x = new Person (); y = x; x.ålder = 42; x.namn = "Kalle Karlsson"; Vilken ålder har y? Objectorienterad programmering Sida 25 Objectorienterad programmering Sida 27 Person x; x = new Person (); Klassdefinition: Körexempel x.ålder = 42; x.namn = "Kalle Karlsson"; System.out.println( "Personen " + x.namn + " är " + x.ålder + " år gammal"); Referensvariabler och referenssemantik(forts) Givet en klassdefinition class X {... och en variabeldeklaration X a; Variabeln a lagrar en referens. Objectorienterad programmering Sida 26 Objectorienterad programmering Sida 28

Metoder Exempel: X a, b; a = new X(); b = a; Referensvariabler (forts) Nu refererar a och b till samma objekt. public class Person { int age; void incrementage() { age = age + 1; En klassdefinition även innehålla definitioner av metoder. Liknar funktioner i C, men en metod kan referera till objektets instansvariabler. Objectorienterad programmering Sida 29 Objectorienterad programmering Sida 31 Referensvariabler i metodanrop Referensvariabel, regel Variabler av klasstyp har referenssemantik. Nya objekt skapas med new. Tilldelning kopierar referensen, inte objektet. Med en metoddefinition void f(x c) {... och ett anrop f(a) kommer variabeln c inom metodkroppen att referera till samma objekt som a Regel: Objekt kopieras aldrig (om man inte ber uttryckligen om det). Objectorienterad programmering Sida 30 Objectorienterad programmering Sida 32

Exempel: Konstruktorer: Att skapa nya objekt class Person { [...] Person (String n, int å) { ålder = å; namn = n; Skapa en ny person: Person x = new Person("Kalle", 42); Namns räckvidd Instansvariabler och metoder kan kommas åt direkt inom hela den egna klassen Namn på lokala variabler inom ett block (metodkropp) kan bara kommas åt inom blocket (metodkroppen). Om samma namn används för flera olika saker gäller den användning som är "närmast". Instansvariabler och metoder kan alltid kommas åt med this: this.namn ger instansvariabeln i nuvarande klassen även om namn har andra betydelser. Objectorienterad programmering Sida 33 Objectorienterad programmering Sida 35 Konstruktorer (forts) Referenssemantik, repetition En konstruktor har alltid samma namn som klassen En konstruktor deklareras utan resultattyp (inte ens void) En konstruktor ska initialisera objektets fält (instansvariabler) Om en klass inte har någon konstruktor, kommer Javakompilatorn att definiera en parameterlös konstruktor (defaultkonstruktorn) Vad händer om... man tilldelar två variabler samma objekt? K x = new K(); K y = x; passar ett objekt som parameter? void m(k x) {... K y = new K(); m(y); Objectorienterad programmering Sida 34 Objectorienterad programmering Sida 36

Referenssemantik (forts) en metod returnerar ett objekt? K m() { K x = new K(); return x; om variabeln redan är bunden? K x = new K(); K y = new K(); y = x; Objectorienterad programmering Sida 37