Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Storlek: px
Starta visningen från sidan:

Download "Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass)."

Transkript

1 3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser. Liksom i de flesta objektorienterade språk så tillåter även Java att klasser definieras utifrån andra klasser. Det är detta som är arv. Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass). I en objektorienterad terminologi kan vi därför påstå att bilar, motorcyklar, traktorer, grävskopor och bulldozer är olika typer av motorfordon. Motorfordon utgör således en superklass till de andra fordonen vilka i sin tur är subklasser till motorfordon. Varje subklass ärver superklassens egenskaper (fält) och beteende (metoder). Normalt lägger man dock till nya egenskaper (nya fält) och utökar beteendet (nya metoder). För att dra en parallell till exemplet ovan så har en grävskopa bl a en metod för att kunna gräva, detta utgör då ett utökat beteende i förhållande till superklassen motorfordon som inte har detta beteende. Subklasser kan också omdefiniera superklassens egenskaper och beteende, detta är en viktig mekanism vid arv. För att återgå till exemplet så har alla motorfordon ett inbyggt beteende - att kunna köra framåt. När du som användare av en motorcykel vill köra framåt vrider du på styrets gashandtag med handen, vill du åstadkomma samma effekt med en bil trycker du på gaspedalen med foten. I detta ligger en viktig skillnad. För att kunna använda beteendet att köra framåt hos olika typer (subklasser) av motorfordon framåt så krävs att detta beteende implementeras på olika sätt för olika subklasser av motorfordon. Subklasser tillhandahåller specialiserade beteenden med utgångspunkt i de gemensamma element som ges av superklassen. Ett bra sätt för att avgöra om ett arv är lämpligt eller inte är att sätta samman påståendet: "Subklassen är en/ett superklass ". Om påståendet är jakande så är arvet sannolikt motiverat annars inte. Ett undantag skulle givetvis kunna uppträda om man idkat dålig namnsättning på klasserna. Arv bidrar bl a till att skapa en relation (är en/ett) mellan klasserna. att kunna återanvända kod (klasser). Detta är speciellt påtagligt i Java då språket innehåller massor med fördefinierade klasser och gränssnitt. (Javas API) modularisering genom att strukturera program i generell och specialiserad kod. att det blir lättare att underhålla mjukvaran. att det blir lättare att vidareutveckla mjukvaran.

2 3.2 Syntax vid arv I Java kan man endast ärva från en superklass (enkelt arv). Dock kan man samtidigt ärva ett godtyckligt antal s.k. gränssnitt (interface). Arv av en superklass indikeras med nyckelordet extends och arv av gränssnitt indikeras med nyckelordet implements. [public] [abstract final] class <ClassName> [extends SuperClass] [implements InterfaceList] { [Constructors] // initialiseringsmetod(er) [Fields] // Fält [Methods] // och metoder }// i godtycklig ordning Nyckelorden abstract och final betyder att klassen inte kan instansieras och att den inte kan ärvas respektive. Mer information om abstrakta klasser finns i avsnittet Abstrakta klasser. Om man inte anger något arv (dvs. extends saknas) så kommer ändå klassen som deklareras att ärva automatiskt från klassen Object, vilken är en fördefinierad klass i Java som innehåller en del generella metoder som alla klasser skall ha. 3.3 Generella åtkomstregler Vad gäller kontroll av åtkomst så finns public, protected, private och default = "åtkomst inom paketet att tillgå. För att använda sig av default-åtkomst så utelämnar man åtkomstmodifieraren. Konstruktorer, fält och metoder kan använda sig av alla accessdeklarationer medan klasser endast kan använda sig av public och default. default ( paket åtkomst ): Åtkomsten som man får om man inte anger någon åtkomstmodifierare ger full tillgänglighet inom eget paket men ingen åtkomst utanför. public: Klasser, interface och medlemmar som är publika är åtkomliga överallt förutsatt att paketet där de deklareras har importeras. Dock är publika medlemmar som ligger i en klass som endast har default-åtkomst normalt inte åtkomliga utanför det paketet där de är deklarerade. private: Medlemmar som är privata är endast åtkomliga inom den egna klassen. protected: Medlemmar som har skyddad åtkomst är fullt tillgängliga inom eget paket.

3 3.4 Åtkomstregler vid arv Klasser måste vara publika för att kunna ärvas av klasser i andra paket. Har klassen default-åtkomst så kan den bara ärvas inom eget paket. I en subklass ärvs alla medlemmar av superklassen med de restriktioner som åtkomstmodifierarna i superklassen sätter. Medlemmar som är public nedärvs som public. Samma sak gäller även för de medlemmar som är protected. Det som är intressant med medlemmar som har åtkomstmodifieraren protected är att dessa nedärvs även av subklasser som tillhör ett annat paket. M a o medlemmar med skyddad åtkomst (protected) i en publik klass vilken ärvs av klasser i andra paket nedärvs inom dessa subklasser. Vid arv så frångås alltså åtkomstmodifieraren protected sin generella restriktion att gälla endast inom det egna paketet. Vill man att en medlem av en klass endast skall kunna ärvas inom det egna paketet använder man default-åtkomst. Medlemmar som är private är inte åtkomliga ens för subklasser. Ett ord om private-medlemmar som inte ärvs. I litteraturen anges ofta att de medlemmar som är private inte nedärvs. Detta är en sanning med modifikation. En superklass är alltid en delmängd av en subklass, detta betyder att subklassen faktiskt består av hela superklassen (inklusive de medlemmar som är private) med eventuellt utökade egenskaper och beteenden. Det enda som åtkomstmodifieraren private egentligen åstadkommer är an accessrestriktion. 3.5 Konstruktorer vid arv Konstruktorer ärvs inte. Om ett objekt instansieras utifrån en subklass så kommer denna att anropa superklassens konstruktor, om superklassen i sin tur är en subklass till en annan klass så kommer denna att anropa dess konstruktor o s v. Eftersom en arvshierarki kan vara hur djup som helst så kommer den konstruktor som ingår i den "överst liggande" superklassen att exekvera först. Konstruktorn för den klass man instansierar ett objekt utav kommer att exekvera sist. Om man inte deklarerar någon konstruktor explicit så skapas en defaultkonstruktor som endast anropar en defaultkonstruktor i superklassen. En defaultkonstruktor innehåller endast satsen: super(); Om en superklass har en explicit deklarerad konstruktor som skiljer sig från defaultkonstruktorn, så måste denna också explicit anropas med en super-sats i subklassens konstruktor. Om superklassen har flera konstruktorer så måste åtminstone en av dem anropas explicit såvida inte en av dem är defaultkonstruktorn. Denna kan då anropas automatiskt av subklassen.

4 Om en konstruktor initialiserar en variabel så överrider det eventuell initialisering i variabeldeklarationen. 3.6 Utökning och modifiering av beteende I Java finns det tre viktiga begrepp som har att göra med hur man kan utöka och modifiera en klass. Dessa begrepp är gömma (hide) omdefiniera (redefine) även kallat överrida (override) överlagra (overload) Man kan gömma fält och klassmetoder. Att gömma fält innebär att man i subklassen deklarerar fält med samma namn som finns i superklassen. Då har man gömt superklassens fält. Att gömma en klassmetod innebär att man i subklassen deklarerar en klassmetod med samma returtyp, namn och parametrar som i superklassen, men med en annan implementation. Fält och klassmetoder kan endast gömmas, de kan inte omdefinieras eller tas bort. Man kan omdefiniera instansmetoder. Att omdefiniera en instansmetod innebär att man i subklassen deklarerar en instansmetod med samma returtyp, namn och parametrar som i superklassen, men med en annan implementering. Man kan överlagra metoder. Att överlagra metoder (klassmetoder och instansmetoder) innebär att man deklarerar ytterligare metoder med samma namn som en befintlig metod, men med andra parametrar och annan implementering. Överlagring kan göras både av ärvda metoder (rekommenderas ej!) och egna metoder. 3.7 Gömmande av fält och klassmetoder Det som kännetecknar gömmande är att det som gömts fortfarande finns kvar i den meningen att åtkomst fortfarande är möjlig enligt deklarerade åtkomst regler. För att komma åt en instansvariabel som gömts kan man använda en referensvariabel av superklassens typ eller göra en explicit typecast. Detta gäller även för klassvariabler och klassmetoder, dock kan dessa givetvis också accessas direkt utan att något objekt existerar. Antag att vi har en gömd instansvariabel storlek, en gömd klassvariabel maxstorlek och en gömd klassmetod AndraMaxStorlek() som ursprungligen deklarerats i klassen Bild, men som gömts av subklassen Foto. Vi befinner oss i en tredje klass som har åtkomst till klasserna Bild och Foto och vi har en referensvariabel aktuelltfoto av klasstypen Foto som refererar till ett objekt av klassen Foto. Då kan vi komma åt de gömda sakerna på följande sätt:

5 Anrop av det nya: Anrop av det gömda: Bild aktuellbild = (Bild)aktuelltFoto; int s = aktuelltfoto.storlek; int s = aktuellbild.storlek; int ms = Foto.maxStorlek int ms = Bild.maxStorlek; Foto.andraMaxStorlek(); Bild.andraMaxStorlek(); Regler vid gömning Fält: Fält som gömmer behöver inte ha samma typ som det gömda fältet. En instansvariabel kan gömma en klassvariabel och tvärtom. Gömmande av fält bör undvikas eftersom det lätt leder till svårbegripliga program där man lätt blandar ihop olika variabler med samma namn. Oftast går det inte att motivera gömmande av fält, detta brukar oftast tyda på att den som gjort det tror att gömmandet omdefinierar superklassens fält vilket det inte gör. Metoder: En klassmetod kan ej gömma en instansmetod, ej heller kan en instansmetod gömma en klassmetod eftersom detta skulle innebära att man försöker omdefiniera en klassmetod vilket inte är tillåtet. Returtyp och argument måste vara samma för den metod som gömmer som för originalet och undantag som kastas måste överensstämma. Accessen till den gömmande medlemmen måste vara större än eller lika med accessen till originalet. 3.8 Omdefinition av instansmetoder Det som kännetecknar omdefinition är att den omdefinierade metoden (gamla metoden) inte finns kvar i den meningen att den är oåtkomlig från utsidan av klassen. Den gamla metoden är dock fortfarande åtkomlig inom klassen. Detta för att möjliggöra att den omdefinierande metoden (nya metoden) ska kunna använda den gamla metodens implementation om den vill. Anrop till den gamla metoden sker med hjälp av super: super.gammalmetod(); Det är viktigt att betydelsen av en metod bibehålls vid omdefinition. I annat fall får man svårhanterliga program Regler vid omdefinition Endast instansmetoder kan omdefinieras. En instansmetod kan inte omdefiniera en klassmetod.

6 Omdefinierade metoder måste ha samma signatur (dvs. samma namn och parametrar) och samma returtyp som originalet i superklassen. Dessutom måste exakt samma undantag deklareras i throws-satsen. Utifrån kommer man alltid att anropa de omdefinierade metoderna på ett objekt oavsett om man sätter referenstypen till subklassen eller superklassen. Konstruktorn ärvs inte och kan således inte omdefinieras. Metoder som är final kan inte omdefinieras. Metoder som är private kan aldrig omdefinieras. Accessrättigheterna för det som omdefinieras/göms måste vara lika eller större än för det som göms. 3.9 Överlagring av metoder Överlagring och omdefiniering sker var för sig i Java. Detta är en skillnad mellan Java och C++. Överlagrade metoder måste ha samma namn och måste ha olika parametrar samt kan ha olika returtyp. Throws-satserna kan vara olika, dvs. olika undantag kan kastas. Vid ett anrop till överlagrade metoder så bestäms vilken metod man ska ta genom att titta på metodernas signatur (dvs. namn och parametrar). Returtypen kan som sagt vara olika mellan de överlagrade metoderna. Överlagrade metoder som ärvs kan omdefinieras var och en för sig. De metoder som inte omdefinieras ärvs som de är. Ärvda metoder bör dock överhuvudtaget inte överlagras eftersom det leder till svårläst kod. Omdefinierade metoder kan överlagras, men detta bör undvikas Objektreferenser i samband med arv Fall 1: konvertering av objektreferenser uppåt i arvshierarkin. Om man har en objektreferens till ett objekt av en subklass, så kan denna objektreferens användas i alla sammanhang där en referens till någon av klassens superklasser kan användas. Det sker en implicit typkonvertering (cast) i detta fall då man går uppåt i arvshierarkin. Fall 2: konvertering av objektreferenser nedåt i arvshierarkin. En motsatt situation är om man har en referensvariabel som är typad för en superklass, men som innehåller ett referensvärde till en subklass, och man vill tilldela detta referensvärde till en annan referensvariabel som är typad för subklassen. I detta fall måste man göra en explicit cast, och då bör man först testa med instanceof-operatorn för att försäkra sig om att cast:en är möjlig att göra.

7 Sådana explicita casts nedåt i arvshierarkin enligt fall 2 bör man försöka undvika. Ofta leder dessa typkonverteringar till att man lyckas generera ett ClassCastException, detta är också ett fel som uppstår under exekvering, varför risken finns att man kraschar sitt program. Situationer där man kan frestas till detta går ofta att lösa med polymorfism om man från början tänker på det Polymorfism Polymorfism är en hörnsten i objektorienterad programmering. Det betyder många former. I Java har alla metoder automatiskt stöd för polymorfism och det krävs inte något speciellt nyckelord för att beskriva att en metod skall ha möjligheten att vara polymorf. Den stora fördelen med polymorfism är att programmeraren inte behöver bry sig om att kontrollera typer, systemet sköter detta. Polymorfism kan realiseras på olika sätt för olika programmeringsspråk och kan därför ges olika innebörder rent praktiskt. I Java har polymorfism implementerats med s.k. dynamisk bindning, det som är dynamiskt är typbestämmandet av ett objekt. Typen för ett objekt kan alltså avgöras under exekvering. Vad är nu detta bra för? Detta är bra p g a att "rätt" metod kan anropas "automatiskt". I Java utnyttjas polymorfism vid arv (liksom i de flesta objektorienterade språk). Rectangle void draw(); double area(); ColourRectangle void draw(); Color getcolor(); ImageRectangle void draw(); void rotate(); VideoRectangle void play(); void stop(); I figuren ovan ses en arvshierarki där vi har tre subklasser av superklassen Rectangle. Polymorfism bygger på att vi i subklasserna omdefinierar metoder som ärvs av

8 superklassen. Som ses av figuren ovan så omdefinierar två av subklasserna superklassens draw() - metod. Fördelen med detta är att jag kan skapa en referensvariabel till superklassen Rectangle och tilldela denna ett objekt av en subklass. Rectangle cr = new ColorRectangle( ); cr.draw(); Trots att cr är deklarerad som en referensvariabel till superklassen Rectangle så kommer anropet till dess draw() - metod att innebära ett anrop till den draw() - metod som finns implementerad i klassen ColorRectangle. Detta p g a att objektet som tilldelats referensvariabeln cr typbestämms vid exekvering. public void handlerectangle (Rectangle r) { r.draw(); } Metoden handlerectangle demonstrerar ytterligare nyttan med polymorfism då denna kan anropas med alla objekt av typen Rectangle eller subklasser härav som argument. Om metoden anropas med en subklass som ej har omdefinierat metoden draw() så kommer superklassens metod att anropas. Obs! Endast metoder som deklarerats i superklassen kan anropas på detta sätt: r.rotate(); går inte! 3.12 Abstrakta klasser och metoder En önskvärd egenskap att ha hos en generell basklass är att kunna definiera metoder som saknar implementation. Antag att vi har en basklass Figur, vi vet att vi vill ha en metod rita(), men det är meningslöst att försöka implementera denna då vi inte vet vad för sorts figur som skall ritas. Om vi däremot gör en subklass Kvadrat till Figur så kan vi ge metoden rita() en implementation eftersom vi vet exakt hur en kvadrat skall ritas. Genom att inte ge någon implementation av metoden rita() i klassen Figur vill vi tvinga alla subklasser att implementera denna. De metoder som saknar implementation och bara innehåller namn, returtyp och parametrar deklareras som abstrakta.

9 En klass som innehåller en eller flera abstrakta metoder måste deklareras som abstrakt. Klasser och metoder deklareras som abstrakta med hjälp av nyckelordet abstract. En abstrakt klass kan inte instansieras (eftersom den helt eller delvis saknar exekverbar kod), det förutsätts att den ärvs och att subklassen implementerar de metoder som är abstrakta. Att deklarera en abstrakt metod är ett sätt att tvinga en subklass att tillhandahålla en implementation av metoden. Om subklassen inte tillhandahåller en implementation av alla abstrakta metoder i superklassen så måste även subklassen deklareras som abstrakt. En klass kan deklareras som abstrakt även om full implementering finns av alla metoder, men en sådan klass går trots detta inte att instansiera. En abstrakt klass kan lämpligen användas när man vill ha en generell basklass, och det inte är möjligt att ge en generell implementation av alla samtliga metoder. (Om samtliga metoder måste göras abstrakta så är det sannolikt bättre att använda gränssnitt.) 3.13 Gränssnitt (Interface) Gränssnitt kan endast innehålla abstrakta metoder och konstanter. Gränssnitt tillämpas typiskt på så sätt att man definierar ett gränssnitt för varje typisk egenskap som man vill ge en klass, t.ex. Cloneable, Drawable, Storeable,. Gränssnittet definierar signatur och returtyp för alla metoder som behövs för egenskapen ifråga, men ingen implementering. En klass som vill ha en sådan egenskap måste då implementera motsvarande gränssnitt. Java tillåter att ett godtyckligt antal gränssnitt implementeras i en klass (multipelt arv av gränssnitt), så att man kan ge en klass många olika egenskaper. En klass kan alltså samtidigt ärva högst en klass men ett godtyckligt antal gränssnitt. En klass som implementerar ett gränssnitt måste implementera samtliga metoder i gränssnittet. En referensvariabel vars typ är en gränssnittstyp kan användas för att referera till alla objekt som implementerar gränssnittstypen ifråga. Ett gränssnitt kan ärva ett eller flera gränssnitt, så att man kan bygga upp gränssnitt hierarkiskt.

10 3.14 Gränssnittsdeklaration [public] interface <InterfaceName> [extends SuperInterfaceList] { //Konstantdeklarationer <Typ> <Konstantnamn>=<värde>[,<Konstantnamn>=<värde>]; } //Deklaration av abstrakta metoder <ReturTyp> <Metodnamn> ( [Formella parametrar] ) [throws Exceptionklasser]; Nyckelordet extends anger arv. Ett obegränsat antal superinterface kan ärvas. Klasser kan inte ärvas av gränssnitt. Alla medlemmar (konstanter och metoder) i ett interface har implicit åtkomsten public, och är åtkomliga i vilket paket som helst förutsatt att interfacet har åtkomsten public. Alla konstanter är implicit public, static och final. Dessa modifierare ska alltså inte anges. Alla metoder är implicit public och abstract. Dessa modifierare ska heller inte anges Skillnader mellan arv och gränssnitt När man ärver en klass ärver man både en specifikation och en implementation, såvida inte klassen är helt abstrakt. När man implementerar ett gränssnitt så ärver man endast en specifikation. Varför kan man inte använda en helt abstrakt klass lika väl som ett gränssnitt? Arv bör användas då ett verksamhetsmässigt släktskap mellan klasser råder. Om ett sådant finns så är det osannolikt att en generell basklass inte kan tillhandahålla någon implementation alls. Gränssnitt används för generella, ofta tekniska egenskaper som många orelaterade klasser ska kunna stödja, ett gränssnitt kan jämföras med ett protokoll. Ett gränssnitt påtvingar inte en klass ett släktskap. Exempel på gränssnitt är Storeable, Drawable, Sendable, Observable etc. Om många klasser använder ett visst gränssnitt och implementationen i klasserna är någorlunda lika så måste detta gränssnitts implementation upprepas i alla klasser. Detta är inte i enlighet med objektorienteringens filosofi, att skapa återanvändbar kod. Lösningen är att koden för att implementera gränssnittet läggs i en egen klass, och alla andra klasser som behöver detta gränssnitt skapar ett objekt av denna klass. När en metod i gränssnittet anropas så vidarebefordras

11 denna begäran till implementationsobjektet som då hanterar anropet. Denna teknik kallas delegering. Rent praktiskt så är gränssnitt också ett sätt att ge en klass fler utökade egenskaper och beteenden än vad som kan ges med ett enkelt arv. Ytterligare en skillnad som är viktig är att arvshierarkin för ett gränssnitt och arvshierarkin för en klass är oberoende. Klasser som implementerar samma gränssnitt kan men behöver inte ha ett släktskap. Detta är en viktig skillnad i jämförelse med multipelt arv, vilket påtvingar ett släktskap Inre klasser Det är tillåtet i Java att deklarera klasser (s.k. inre klasser) inuti klasser. De inre klasserna ligger alltså inbäddade i en annan klass och har ingen egen fil. Sådana inre klasser är bara åtkomliga inuti den klass de ligger i. Där kan den inre klassen instansieras. En inre klass kan implementera gränssnitt och ärva andra klasser på samma sätt som vanliga klasser. Inre klasser ska användas endast till tydligt avgränsade uppgifter som endast berör den klass de ligger i. Exempel på sådana uppgifter är implementering av gränssnitt eller händelselyssnare. En inre klass kan definieras direkt efter new-satsen där den instansieras. Detta kallas "inline" definition. Klasser som behöver användas på många ställen i en applikation ska inte vara inre klasser.

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

Läs mer

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

Läs mer

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

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1 Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan

Läs mer

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

Till skillnad från Pascal/C/C++ finns det inget globalt scope där exempelvis main finns deklarerad utan enbart objekt.

Till skillnad från Pascal/C/C++ finns det inget globalt scope där exempelvis main finns deklarerad utan enbart objekt. 3 Klasser och objekt 3.1 Objektorientering Java är (nästan) helt objektorienterat - det saknas stöd för någon annan form av programstrukturering (förutom de inbyggda typerna int, char, float etc. som inte

Läs mer

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika

Läs mer

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

Läs mer

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15 DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) 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

Läs mer

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

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

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F11:1 OOP Objekt-orienterad programmering Föreläsning 11 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F11:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

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

Lektion 5. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att lära sig utöka befintliga klasser med hjälp av arvsmekanismen och skapa egna klasshierarkier. Att lära sig använda verktyget jar för att packa ihop Javafiler. Att läsa: Kursboken,

Läs mer

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

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016 Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.

Läs mer

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Objektorienterad Programmering (OOP) Murach s: kap 12-16 Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,

Läs mer

Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Generics och polymorfism Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code Pair public class Pair { private A a; private B b; public A getfirst() { return a; public

Läs mer

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat

Läs mer

Distanskursen objektorienterad programmering med Java

Distanskursen objektorienterad programmering med Java Tidigare exempel: en fordonshierarki Distanskursen objektorienterad programmering med Java Sven-Olof Nyström Uppsala Universitet 7 april 2005 Fyra klasser: Fordon (abstrakt) Motorfordon (abstrakt) Bil

Läs mer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad programmering. Grundläggande begrepp Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Objekt och klasser - Introduktion

Objekt och klasser - Introduktion Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder

Läs mer

TDDC Terminologi Uppdaterad Fö #1

TDDC Terminologi Uppdaterad Fö #1 Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller

Läs mer

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt

Läs mer

JAVAUTVECKLING LEKTION 11

JAVAUTVECKLING LEKTION 11 JAVAUTVECKLING LEKTION 11 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Mer om klasser och objekt Statiska/instans-metoder Överlagrade metoder Inkapsling Konstruktorer 1 UPPGIFT

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

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

Lektion 3. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att få en djupare förståelse hur metoder i Java konstrueras och används. Veta vad en konstruktor är och hur vi använder dem för att skapa objekt. Kunna generera dokumentation med hjälp

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer! itop F8 Arv (Inheritance) Läsanvisning: arv: i kap 10, exceptions: i kap 15 mer kommer sen UML: tas bara upp i OH Object Kalle Student Person Graduate Lärare! Arv! Object, instanceof! Relationer! UML Nästa

Läs mer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

Föreläsning 9: Arv och UML

Föreläsning 9: Arv och UML TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;

Läs mer

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015 Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

Lektion 7. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att kunna skapa och använda fält av både primitiva typer och egendefinierade klasser. Kunna skriva en egen enkel algoritm för sortering samt använda befintliga klasser i Javas API

Läs mer

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt Föreläsning 15 & 16 ARV Objektorienterad programmering (OOP) Idé: vi ser ett program som en modell av verkligheten Ursprung: Simula-67, Norsk regnesentral, 1960-talet Smalltalk-80: Xerox PARC, 1970-talet

Läs mer

5 Arv och dynamisk bindning FIGUR

5 Arv och dynamisk bindning FIGUR 5 Arv och dynamisk bindning Arv är en av hörnstenarna i objektorienterad programmering. Med hjälp av arv kan man skapa underhållsvänliga och förändringsvänliga system. Att hitta arvsrelationer är en viktig

Läs mer

Mer om klasser och objekt

Mer om klasser och objekt Klassvariabler och klassmetoder En klass kan innehålla klassvariabler och klassmetoder. TDA143 I1 Programmerade system Föreläsning 5 (OH-bilder 5) Mer om klasser och objekt Christer Carlsson Det som skiljer

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016 Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik

Läs mer

Arv. En klassdefinition class A extends B {... } definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som definierade för B.

Arv. En klassdefinition class A extends B {... } definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som definierade för B. Arv En klassdefinition class A extends B {... } definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som definierade för B. A är en subklass till B. B är en superklass till A. Arv:

Läs mer

Lektion 12. Talbas - Radix. Funktioner. Primitiva datatyper. Procedurer. Att anropa en metod. Repetition Genomgång av gammal tenta

Lektion 12. Talbas - Radix. Funktioner. Primitiva datatyper. Procedurer. Att anropa en metod. Repetition Genomgång av gammal tenta Talbas - Radix Lektion 12 Repetition Genomgång av gammal tenta 123 10 = 1 10 2 + 2 10 1 + 3 10 0 = 100 + 20 + 3 = 123 1110 2 = 1 2 3 + 1 2 2 + 1 2 1 + 0 2 0 = 8 + 4 + 2 + 0 = 14 FA8 16 = 15 16 2 + 10 16

Läs mer

Arv bakgrund (kap. 9)

Arv bakgrund (kap. 9) Föreläsning 4 Arv bakgrund (kap. 9) Hund pälsfärg favoritben smutsa_ned() ät_katt() Kanin pälsfärg slaktvikt smutsa_ned() Katt pälsfärg smutsa_ned() klös_soffa() Arv bakgrund Många klasser delar på egenskaper

Läs mer

Lösningsförslag övning 2.

Lösningsförslag övning 2. Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static

Läs mer

(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

(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 (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

Läs mer

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p) Tentamen för TTIT71 Programmering 2007-01-10 kl. 08-12 Institutionen för datavetenskap Linköpings universitet Antal uppgifter: 6 Max: 32 poäng Betyg: 3:a 16 poäng, 4:a 24 poäng, 5:a 28 poäng Hjälpmedel:

Läs mer

F8: Typkonvertering i C++

F8: Typkonvertering i C++ Institutionen för datavetenskap Umeå Universitet F8: Typkonvertering i C++ Objektorienterad programmering för ingenjörer, VT04 Innehåll Implicit konvertering Konverteringskonstruktor Konverteringsoperator

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 3 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: ca 3-6 timmar Att läsa: sidan 150,151, 170-174, 200, 201 (arv) sidan 178-179, 360 (abstrakta klasser, metoder) + utdelat

Läs mer

725G61 - Laboration 6 Objektorientering, modellering och arv. Johan Falkenjack

725G61 - Laboration 6 Objektorientering, modellering och arv. Johan Falkenjack 725G61 - Laboration 6 Objektorientering, modellering och arv Johan Falkenjack November 27, 2013 1 Inledning I labb 5 tittade vi på grundläggande objektorientering och skapade en första klass som vi kunde

Läs mer

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Föreläsning 1, vecka 6: Abstraktion genom objektorientering TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 6: Abstraktion genom objektorientering Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Hur skulle ni implementera detta? (3D demo) Vi återkommer

Läs mer

OOMPA 2D1359 Föreläsning 3

OOMPA 2D1359 Föreläsning 3 OOMPA 2D1359 Föreläsning 3 Objektorienterad Modellering Programmering och Analys Objektorientering grunder-2 l Komponenter och beteende l CRC-kort Teknik för att beskriva och ta fram objekt, klasser och

Läs mer

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

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

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

Läs mer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND

Läs mer

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, KVÄLL (ITM - ÖSTERSUND) LÖRDAG 18 JANUARI, 2003, KL. 9-14 TID: 5 TIMMAR ANTAL UPPGIFTER: 9 MAX POÄNG: 45 BETYGSKALA: UNDERKÄND

Läs mer

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p) TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för Sy 2 2002-03-15, kl 09.00 13.00 Hjälpmedel: Endast bifogat kompendium Max: 66 poäng, för godkänt krävs 50%. Skriv tydliga och kortfattade svar 1. Grunderna

Läs mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

Läs mer

Klasser och objekt i C#

Klasser och objekt i C# Klasser och objekt i C# Från klassdiagram till C#-klass till objekt initierat av en konstruktor. Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F5:1 OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling Vi skall nu titta på ett exempel med myror. Varje myra har ett namn

Läs mer

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Introduktion TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd Vi har diskuterat vilka möjligheter till OO som erbjuds i C++. Vilka vill vi använda och varför? Allt har användningsområden

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

Agenda. Objektorienterad programmering Föreläsning 13

Agenda. Objektorienterad programmering Föreläsning 13 Objektorienterad programmering Föreläsning 13 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Ett objektorienterat exempel Repetition Mer om arv Abstrakta klasser Abstrakta metoder

Läs mer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 2 TID: 4 timmar Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt

Läs mer

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1, 2013 1 Innehåll OO-programmering fortsättning Skapa

Läs mer

Laboration 3, uppgift En klass för en räknare

Laboration 3, uppgift En klass för en räknare Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer

Läs mer

Objekt, Klasser, Paket m. m.

Objekt, Klasser, Paket m. m. Objekt, Klasser, Paket m. m. Bildserie 3 Objekt Ett objekt karakteriseras av - Identitet, det som gör det möjligt att särskilja objektet från andra objekt - Tillstånd, den data som finns i objektet - Beteende,

Läs mer