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

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

JAVA Mer om klasser och objektorientering

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

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

Objekt och klasser - Introduktion

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

(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

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

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

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

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Hur ser ett Java-program ut?

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

Introduktion till Java

Klassdeklaration. Metoddeklaration. Parameteröverföring

Objektorienterad programmering i Java

TENTAMEN OOP

Språkkonventioner och redigering av tal.

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

OOP Objekt-orienterad programmering

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

JAVAUTVECKLING LEKTION 11

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

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

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

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

SMD 134 Objektorienterad programmering

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

F4. programmeringsteknik och Matlab

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.

Övning2. Variabler. Data typer

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Kort om klasser och objekt En introduktion till GUI-programmering i Java

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 3-4 Innehåll

Klasshierarkier - repetition

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

OOP Objekt-orienterad programmering

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

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

TENTAMEN OOP

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Innehållsförteckning

Föreläsning 5-6 Innehåll

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Enkla variabler kontra referensvariabel

Konstruktion av klasser med klasser

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

Malmö högskola 2008/2009 CTS

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

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

JAVAUTVECKLING LEKTION 3

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Mer om klasser och objekt

Lösningsförslag övning 2.

Föreläsning 5. Föreläsning 5

Classes och Interfaces, Objects och References, Initialization

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

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 )

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Laboration 1 - Grunderna för OOP i Java

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

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

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

Objektorienterad programmering

Föreläsning 4. Klasser och objekt

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

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Tentamen OOP

Objektorienterad Programmering DAT043

Modeller, Objekt och Klasser

Typkonvertering. Java versus C

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

Del A (obligatorisk för alla)

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

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

Dynamisk bindning och polymorfism

Lösningar för tenta 2 DAT043,

Transkript:

Klasser och Objekt i Java Kap J2-1 C++ använder beteckningarna datamedlem resp. medlemsfunktion. Klassnamn Instansvariabler (attribut) Metoder (operationer) Passagerare id ankomsttid destination kliverpå kliverav åker (Passagerare) 12 14.21 Blg (Passagerare) 23 15.56 Fln Klassdefinition Kap J2-2 Exempel: public class DoubleCell //instansvariabler private double val; //metoder public double readvalue() return val; public void writevalue(double value)val=value; //Anv av DoubleCell public class TestDoubleCell public static void main(string[] args) DoubleCell d= new DoubleCell(); d.writevalue(3.14); System.out.println( Innehåll: + d.readvalue()); Variabler Kap J2-3 Java har två kategorier av variabler: enkla variabler int,double,char,byte etc. referensvariabler används för att referera olika objekt. Variabeldeklaration modifierare typ variabelnamn= initieringsvärde; T ex int antal=0, nr=33; final double PI= 3.141; Date d; private int antalbarn ; //instansvariabel Instansvariabler initieras automatiskt till ett defaultvärde: 0 för enkla aritmetiska variabler. null för referenser. false för boolska variabler. Obs, gäller ej för lokala variabler. 1

Enkla variabler och inbyggda typer Kap J2-4 Heltal byte 8-bitars heltal med tecken. [-128,127] short 16-bitarsheltal med tecken. [-32768,32767] int 32-bitarsheltal med tecken. [-2*10 9, 2*10 9 ] long 64-bitarsheltal med tecken. [-9*10 18, 9*10 18 ] Decimaltal float 32-bitarsflyttal. [-3*10 38, 3*10 38 ] double 64-bitarsflyttal. [-2*10 308, 2*10 308 ] Logiska typer boolean Endast värdena trueeller false. Tecken char Endast 16-bitars Unicode-tecken. Omslagsklasser Kap J2-5 Omslagsklasser (wrapper classes) finns för var och en av de åtta inbyggda typerna. Finns i java.lang. Byte, Character, Integer, Float, Double o s v. Innehåller diverse konstanter och metoder för att operera på dessa. Omslagsklasser är s k final -klasser. kan expanderas inline av kompilatorn. Ex: float f=float.min_value; int k= Integer.MAX_VALUE; if (Float.isInfinite(f)).. Operatorer Kap J2-6 Aritmetiska operatorer + - * / % Logiska operatorer &&! Jämförelseoperatorer ==!= < <= > >= fungerar alla som i C++! 2

Referensvariabler Kap J2-7 new måste användas för att skapa ett objekt att referera till. Kopiering av objekt görs med hjälp av metoden clone() som många standardklasser har. DoubleCell d; d= new DoubleCell(); DoubleCell e=d; d null d e (d) 0.0 Garbage collection Kap J2-8 Java har inbyggd s k Garbage collection, d v s automatisk skräpsamling. Innebär att objekt som inte längre refereras förstörs. Det minnesutrymme som det upptog, frigörs och kan användas till annat. Systemet frigör inte ett minnesutrymme så länge det finns en referens till det! Obs! Finns ingen motsvarighet till deletei C++! Textvariabler - String Kap J2-9 Klassen String används för att hantera texter. är ej en enkel (primitiv) typ. objekten uppträder som en referenstyp. Definierar operatorerna + och += för konkatenering av texter: String m= Hej ; String n= igen! ; System.out.println(m+ + n); String-objekt är konstanta, kan EJ ändras (immutable)! String m += ; //nytt objekt skapas String m += n; //nytt objekt skapas System.out.println(m); Operanderna till operatorerna + och += skall båda vara av typen String. Används p s s som en inbyggd typ. 3

Jämförelse av strängar. Kap J2-10 För att undersöka om två strängar är lika används metoden equals(). För en lexikografisk jämförelse används metoden compareto(). String m= Hej ; String n= igen! ; if (m.equals(n)) System.out.println( Lika ); else System.out.println( Ej lika ); System.out.println(m.compareTo(n)); if (m==n) System.out.println( Refererar till samma objekt ); else System.out.println( Refererar Ej till samma objekt ); Andra String-metoder. Kap J2-11 Det finns ett antal metoder knutna till String-klassen. String m= Hej igen! ; int len= m.length() //=9 char ch= m.charat(2);//= j String s= m.substring(2,5); System.out.println(len + + ch + s); För de inbyggda typerna finns automatisk omvandling till typen String. Den görs även vid anrop av metoden System.out.println(). Kap J2-12 Omvandling mellan String och enkla typer, forts. Metoden tostring() kan också användas: System.out.println(Integer.toString(55)); Många klasser erbjuder en implementation av tostring(). Den anropas automatiskt vid omvandlingar. Förutsatt att den finns. Omvandlingar i den andra riktningen: int x= Integer.parseInt( 55 ); double y= Double.valueOf( 3.141 ).doublevalue(); //alt. y= Double.parseDouble( 3.141 );//JDK 1.2? 4

Metoder. Kap J2-13 Konstruktorer kontrollerar skapandet och initieringen av ett objekt. Överlagring möjliggör multipla konstruktorer. defaultkonstruktor skapas om ingen har getts. den initierar instansvariablerna med defaultvärden. (Mutators and Accessors) Accessmetoder avläser objektets tillstånd. Set-metoder ändrar ett objektets tillstånd. tostring() används för att kunna skriva ut ett objekts tillstånd. equals() används för att testa om två referenser refererar till likadana objekt. Statiska metoder Klassmetoder. Kan anropas direkt utan att gå via ett objekt. Klassen Date (egendef.) Kap J2-14 //Minimal Date class, No error //checks or javadoc comments public class Date // Fields private int month; private int day; private int year; // Zero-parameter constructor public Date( ) month = 1; day = 1; year=1998; // Three-parameter constructor public Date(int themonth, int theday, int theyear) month= themonth; day= theday; year = theyear; //Two equal values? public boolean equals(object rhs ) if(!(rhs instanceof Date ) ) return false; Date rhdate = ( Date ) rhs; return rhdate.month == month && rhdate.day == day && rhdate.year == year; // Conversion to String public String tostring( ) return day + "/" + month + " " + year; Metoden main Kap J2-15 När Java-interpretatorn anropas, så exekveras först den mainmetod som finns i den klassfil som refereras. Se föregående bild och nedan! // Sample main public static void main( String[] args ) Date d1 = new Date( ); Date d2 = new Date(1,1,1998); Date d3 = new Date(1,1,1999); System.out.println("Date 1: + d1 ); System.out.println("Date 2: + d2 ); System.out.println("Date 3: + d3 ); System.out.println("Date1==Date2?: " + d1.equals(d2)); System.out.println("Date1==Date3?: " + d1.equals(d3)); //end Date 5

Inkapsling och synlighet. Kap J2-16 Modifierare, vilka anger synlighet: private, public, protected Utelämnad modifierare innebär paketsynlighet Tanken är att de klasser som ingår i samma paket skall kunna lita på varandra. Synlighet Synlig i private paket protected public annan klass i samma paket NEJ JA JA JA i subklass i ett annat paket NEJ NEJ JA JA en klass i ett annat paket NEJ NEJ NEJ JA Initiering av objekt. Kap J2-17 Instansvariablerna kan initieras direkt! Konstruktorer kan överlagras. En konstruktor kan anropa en annan konstruktor m h a this! this refererar till objektet självt! public class Date // Fields private int month=1; private int day=1; private int year=1998; public Date( ) //Bör oftast finnas public Date(int month, int day, int year) this.month= month; this.day= day; this.year = year; public Date(int themonth, int theyear) this(themonth,1,theyear); public Date(int theyear) this(1,theyear);... Kontrollstrukturer Kap J2-18 Kontrollstrukturerna i Java fungerar i stort som i C++. Tyvärr i vissa fall. Typ av struktur Konstruktion ====================================== Villkor if - else switch case a? s : f Frågeteckensoperatorn ---------------------------------------------------------------------------------- Iteration while do - while for ----------------------------------------------------------------------------------- Avbrott break continue return ----------------------------------------------------------------------------------- Ingen operatoröverlagring i Java. 6

Klassvariabler och klassmetoder Kap J2-19 Kallas även statiska variabler/metoder. Är gemensamma för alla objekt i en viss klass. en klassvariabel finns bara i en instans. Klassvariabler kan initieras i en speciell klassinitierare, även kallad statisk initierare. Syntax: static deklarationer och satser Konstanter bör vara statiska. Klassmetoder använder ej vanliga instansvariabler. Litet testprogram Kap J2-20 import java.io.*; public class Sample private int x; private static int y; public final static int MAX_VAL = 10; static y=6; public static void main( String [ ] args ) Sample s1=new Sample(),s2= new Sample(); s1.y=4; s2.y=5; System.out.println( MAX_VAL + Sample.MAX_VAL); System.out.println( y= + y ); System.out.println( s1.x= + s1.x + s1.y= + s1.y ); System.out.println( s1.x= + s1.x + s1.y= + s1.y ); Kompileringsfel, eller...? Kap J2-21 import java.io.*; public class Sample private int x; private static int y; public final static int MAX_VAL = 10; static y=6; public class TestSample public static void main( String [ ] args ) Sample s1=new Sample(),s2=new Sample(); s1.y=4; s2.y=5; System.out.println(" MAX_VAL " + Sample.MAX_VAL); System.out.println(" y= " + y ); System.out.println(" s1.x= " + s1.x + " s1.y= " + s1.y ); System.out.println(" s1.x= " + s1.x + " s1.y= " + s1.y ); 7

Standardklassen Math. Kap J2-22 Standardklassen Math finns i paketet java.lang. innehåller metoder för de vanliga matematiska funktionerna. trigonometri, kvadratrötter, logaritmer, exponenter, min, max etc. java.lang.math ================================================ PI E talen pi resp. e abs(a) absolutvärdet av a max(a,b) min(a,b) största resp. minsta av a och b ---------------------------------------------------------------- ------------------ Följande returnerar värde av typ double (x och y reella tal) exp(x) log(x) sqrt(x) e x ln(x) x ceil(x) floor(x) minsta >=x resp. största <=x pow(x,y) x y round (x) x avrundat till heltal (long ) random(x) ger slumptal [0,1] ---------------------------------------------------------------- ------------------- sin(x) cos(x) tan (x) x anges i radianer asin(x) acos(x) atan (x) ger arcsin etc. sinh(x) cosh(x) tanh(x) hyperboliska funktionerna Standardklassen Math, forts. Kap J2-23 Några anrop: z=9.9*math.log(x); hyp= Math.sqrt(Math.pow(x,2)+ Math.pow(y,2)); d= Math.max(a, Math.max(b,c)); A=PI * Math.pow(r,2); Kap J2-24 8