Java, klasser, objekt (Skansholm: Kapitel 2)

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.

(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

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 5-6 Innehåll

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

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

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.

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

Modeller, Objekt och Klasser

Malmö högskola 2008/2009 CTS

Objektorienterad programmering Föreläsning 5

Objekt och referenser

Klasser och objekt. Henrik Johansson. August 20, 2008

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

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

DD1342 Programkonstruktion för F1,

Objektorienterad programmering i Java

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

Objekt och klasser - Introduktion

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen OOP

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

Laboration 1 - Grunderna för OOP i Java

Objekt, Klasser, Paket m. m.

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

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

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

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

TDDC77 Objektorienterad Programmering

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

Föreläsning 2, vecka 8: Repetition

TENTAMEN OOP

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

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

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorientering: Lagring, räckvidd och livstid

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Lösningsförslag övning 2.

Föreläsning 3-4 Innehåll

Enkla variabler kontra referensvariabel

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

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

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.

TUTORIAL: KLASSER & OBJEKT

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

TDIU01 - Programmering i C++, grundkurs

Objektorienterad Programmering DAT043

Objektorienterad programmering i Java

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Malmö högskola 2007/2008 Teknik och samhälle

Parameteröverföring. Exempel. Exempel. Metodkropp

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

TDIU01 - Programmering i C++, grundkurs

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Dynamisk bindning och polymorfism

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

TENTAMEN OOP

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

Klasser och objekt i C#

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

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 )

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

Typkonvertering. Java versus C

Övningar Dag 2 En första klass

Kopiering av objekt i Java

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

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

2D1339 Programkonstruktion för F1, ht 2003

Objektorienterad programmering

OOP Objekt-orienterad programmering

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.

Generiska konstruktioner. Kursbokens kapitel 13

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

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

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

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

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

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

TDDD78 Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid

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

Lektion 7. Datateknik A, Java I, 5 poäng

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

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Klassdeklaration. Metoddeklaration. Parameteröverföring

Transkript:

Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1

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 2

Klasser och objekt 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 3

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 Objectorienterad programmering Sida 4

Klassdefinition: Körexempel Person x; x = new Person (); x.ålder = 42; x.namn = "Kalle Karlsson"; System.out.println( "Personen " + x.namn + " är " + x.ålder + " år gammal"); ger utskriften Personen Kalle Karlsson är 42 år gammal Objectorienterad programmering Sida 5

Referensvariabler, exempel 1 Givet tidigare klassdefinition för Person och deklarationen Person x; Variablen x får värdet null (default-värde) Objectorienterad programmering Sida 6

Referensvariabler, exempel 2 Person x; Person y; x = new Person (); y = x; x.ålder = 42; x.namn = "Kalle Karlsson"; Vilken ålder har y? Objectorienterad programmering Sida 7

Referensvariabler och referenssemantik Givet en klassdefinition class X {... } och en variabeldeklaration X a; Variabeln a lagrar en referens. Objectorienterad programmering Sida 8

Exempel: X a, b; a = new X(); b = a; Referensvariabler (forts) Nu refererar a och b till samma objekt. Objectorienterad programmering Sida 9

Referensvariabel, regel Variabler av klasstyp har referenssemantik. Nya objekt skapas med new. Tilldelning kopierar referensen, inte objektet. Objectorienterad programmering Sida 10

Metoder ( Funktioner i klasser ) class A { returtyp metodnamn () {... } } Objectorienterad programmering Sida 11

Enkelt exempel: metod och fält class A { int x = 7; int x_plus_ett() { return x + 1; } } Om variabeln a är deklarerad och initializerad enligt A a = new A(); Vad returnerar uttrycket a.x_plus_ett()? Objectorienterad programmering Sida 12

Metoder (forts) Om inget värde ska returneras, skriv void i stället för returtyp. En variabel kan deklareras lokalt inom en metod (ungefär som inom en C-funktion). Kallas lokala variabler. Lokala variabler måste alltid ges startvärden. Objectorienterad programmering Sida 13

En return-sats gör två saker: 1. anger vilket värde som ska ges som resultat från metoden 2. avslutar metoden return; avslutar anropet för en metod som inte returnerar nåt värde (void). return Uttryck; beräknar uttrycket och avslutar anropet genom att returnera det beräknade värdet. Bara void-metoder får nå slutet av metodkroppen utan att stöta på ett return. Kontrollen återvänder automatiskt till anroparen. Objectorienterad programmering Sida 14

Metoder: exempel class A { int x = 5; int get_x() { return x; } } class B { int m1() { return 7; } int m2() { A a = new A(); return m1() + a.get_x(); } } Objectorienterad programmering Sida 15

Parametrar och argument En metod kan ges en parameterlista, tex int f(int x, float y) {... } En metods parametrar skrivs inom parenteserna i definitionen. Fungerar som lokala variabler, men får sina startvärden av anroparen. Med argumenten till ett anrop menas de faktiska värden som anroparen beräknar och skickar till metoden. När ett objekt passas som argument kopieras referensen (precis som vid tilldelning) Objectorienterad programmering Sida 16

Parametrar, exempel class A { } int add(int a, int b) { return a + b; int m() { int x = 4; return add(x,3) + 10; }} Objectorienterad programmering Sida 17

Referensvariabler i metodanrop 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 18

Konstruktorer: Att skapa nya objekt Exempel: class Person { int ålder; String namn; Person (String n, int å) { ålder = å; namn = n; } } Vi skapar en ny person med (tex) Person x = new Person("Kalle", 42); Objectorienterad programmering Sida 19

Konstruktorer (forts) 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) Objectorienterad programmering Sida 20

Namns räckvidd Alla namn på 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) De existerar bara då! Objectorienterad programmering Sida 21

Namns räckvidd (forts) 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 genom prefixa dem med this: this.namn ger instansvariabeln i nuvarande klassen även om namn skulle ha flera betydelser. Objectorienterad programmering Sida 22

Vad vi vet om objekt och klasser En klass definierar en typ av objekt. Varje klass har ett antal fält (instansvariabler) ett antal metoder en konstruktor Idé: Fälten beskriver den interna representationen. Metoderna beskriver gränssnittet till omvärlden. Allt data är kopplat till ett visst objekt. Objectorienterad programmering Sida 23