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

Storlek: px
Starta visningen från sidan:

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

Transkript

1 725G61 - Laboration 6 Objektorientering, modellering och arv Johan Falkenjack November 27, 2013

2 1 Inledning I labb 5 tittade vi på grundläggande objektorientering och skapade en första klass som vi kunde instansiera. Vi använde dock objektorientering för att representera en datastruktur, vilket väl i all ärlighet inte är så spännande (oavsett vad vi med datavetenskaplig bakgrund försöker lura i oss själva). I den här labben ska vi titta på hur objektorientering kan användas för att modellera världen. Istället för att ha en klass som representerar något så abstrakt som mängder av heltal ska vi hantera människor i ett enkelt informationssystem. Vi ska också gå vidare och titta på några mer avancerade objektorienterade koncept såsom arv och överlagring. 2 Inkapsling och accessormetoder I förra labben pratade vi som hastigast om publika och privata variabler. En grundprincip i Java är att man alltid ska skydda sina variabler så mycket som möjligt, om de inte måste vara publika bör de vara privata - det här kallas för principen om inkapsling inom objektorienterad programmering. En klass eller ett objekt ska alltså så långt det är möjligt själv få styra över värdena på sina variabler, och om det inte är absolut nödvändigt bör man inte tillåta att någon annan klass direkt får komma åt och läsa eller ändra värdet på dem. I många fall behöver trots det andra klasser, t.ex. kanske main-metoden för programmet, komma åt värdet på variabler. Då är det ändå bättre att göra sina variabler privata och istället använda så kallade accessormetoder för att komma åt dem. Accessorfunktioner kallas ofta för getters och setters, för det är precis vad de gör, de hämtar (get) och de tilldelar (set) värden. Utan att påpeka det skapade vi faktiskt getters i labb 5. Både getsize(), som hämtade storleken av en mängd, och instances(), som returnerade antalet instanser av MySet som skapats, är så kallade getters. I det generella fallet har getters och setters ofta namn i stil med getsize() och setsize(), där "size" är namnet på variabeln som hanteras. Om den privata variabel man hanterar är en boolean använd dock ofta is, t.ex. isactive() för att hämta värdet från varaibeln active som är en boolean. Detta gör koden mer lättläst då den i större utsträckning kan läsas som vanlig engelsk text. Anledningarna till att man skapar accessorfunktioner (getters och setters), istället för att ha variabler publika eller helt oåtkomliga, är många. Den mest uppenbara är kankse att man kan vilja lägga till felhantering och filter i sin set-metod, den som manipulerar värdet på variabeln, för att inga felaktiga data ska kunna skickas in. Till exempel vill man kanske inte att en instansvariabel som representerar ett namn ska kunna bestå av enbart siffror. För att då kunna garantera att en textsträng av enbart siffror aldrig tilldelas namn-variabeln används en set-metod som innehåller den felhanteringen, d.v.s. kontrollerar innehållet i textsträngen innan tilldelningen görs. En annan anledning är att man kanske inte alltid vill tillåta explicit ändring av en variabel utifrån, även om man vill kunna läsa den - då skapar man helt enkelt ingen set-metod. Det var fallet 1

3 med båda våra getters i labb 5, size kunde t.ex. bara ändras genom att lägga till eller ta bort element och instances() ändrades bara inifrån konstruktorn när nya instanser skapades. Det betydde att varken size eller noofinstances kunde få ett felaktigt värde, om inte vi gjort fel när vi skapade klassen förstås. För get-metoder finns inte lika uppenbara skäl till att ha en specifik metod, istället för att läsa direkt från variabeln, men för att kunna skydda variabeln från att ändras utifrån måste vi göra den privat, och det får helt enkelt konsekvensen att den heller inte kan läsas utan att vi har en specifik metod för det. I vissa fall kan man dock vilja läsa en variabel i ett annat format än den finns lagrad i internt, då kan get-metodern även användas för att omvandla värdet till en specifik datatyp eller till ett visst format. Till exempel skulle vi kunna ha två olika get-metoder för en variabel som innehåller en persons alla förnamn, en som returnerar strängen precis som den finns lagrad i vår variabel, t.ex. "Eva Maria" för en person med två förnamn, medan den andra get-metoden istället returnerar en String[] där namn-strängen delats upp och lagts i en array, t.ex. {"Eva","Maria"} i vårt exempel. 2

4 UPPGIFT 6.1 Skapa en klass Person och lägg den i ett lämpligt paket som du själv namnger. Klassen ska ha tre privata instansvariabler, surname (efternamn) och givenname (förnamn), som båda är strängar, samt birthyear som är ett heltal. Getters och setters skall finnas för samtliga variabler. (Notera att Eclipse har en genväg för att generera getters och setters för en klass, när ni har skapat instansvariablerna - använd gärna den, men tänk på att ni kan behöva ändra koden som genereras för get- och set-metoderna, t.ex. för att lägga till felhantering nedan.) Klassen ska också ha två publika konstruktorer. En som inte tar några argument och inte tilldelar några av instansvariablerna något värde, och en som tar förnamn, efternamn och födelseår som argument och tilldelar dessa värden till respektive instansvariabel. Lägg sedan till lämplig felhantering i alla tre set-funktionerna. Ni behöver inte täcka alla eventualiteter, men se till att åtminstone kontrollera något som ni tycker är orimligt i varje set-metod, t.ex. kan det vara lämpligt att kasta ett undantag om man försöker ge någon ett namn som börjar på en siffra. Skapa till sist en klass PersonUI som bara innehåller en main-metod. Just nu ska ni bara använda den här klassen, och dess main-metod, för att testa er Person-klass, men vi kommer lägga till fler saker i PersonUI lite senare i labben, då kan ni kommentera bort (eller radera) test-koden som ni skriver i main-metoden i den här uppgiften. I main-metoden skapar ni nu ett par objekt, instanser av klassen Person, genom att anropa de två olika konstruktorerna. Testa sedan att använda era get- och set-metoder för att hämta och ändra värden. Var noga med att testa de olika villkoren, d.v.s. felhanteringen, ni har lagt in i era set-metoder, d.v.s. om ni har lagt till en kontroll för att förhindra att födelseår tilldelas ett negativt tal, testa att skriva en rad kod som försöker ändra födelseåret i en av era person-instanser till ett negativt tal och kontrollera att ni faktiskt får det resultat ni förväntar er, t ex ett undantag. 3

5 UPPGIFT 6.2 Nu ska vi modifiera vår klass PersonUI lite, du kan börja med att kommentera ut test-koden som du lade till i main-metoden i förra uppgiften. PersonUI ska ha en privat klassvariabel, YEAR, som innehåller det aktuella årtalet (2013 i skrivande stund). Variabeln ska vara en konstant, d.v.s. deklareras med hjälp av nyckelordet final och gärna ha ett namn som bara består av versaler (det sistnämnda är inte nödvändigt, men man använder oftast versaler för en konstant för att det ska bli lätt att se att det här är just en konstant när man använder variabeln senare i koden). Klassen PersonUI ska också ha en metod, age(), som tar ett Person-objekt som argument, hämtar ut födelseåret ur objektet och använder det aktuella året för att beräkna och returnera personens ålder (ett heltal). Använd sedan klassen Scanner i main-metoden för att läsa in förnamn, efternamn och födelseår för en person från användaren, och skapa ett nytt Person-objekt med hjälp av de inlästa värdena. Tänk på att ni alltid behöver ha någon felhantering när ni läser in data från användaren. Kan ni använda er av den felhantering ni skapade i set-metoderna i förra uppgiften? Till sist, låt er main-metod beräkna personens ålder m.h.a. metoden age() och skriv sedan ut åldern på skärmen. 4

6 UPPGIFT 6.3 Skapa en ny klass, Course, med instansvariablerna courseid (en sträng i stil med t.ex. "725G61"), coursename (en sträng, t.ex. "Programmering, grundkurs") och ap (academic points, d.v.s. hur många hp kursen är på, ett heltal). En konstruktor som tar in och tilldelar värden för samtliga dessa tre instansvariabler ska finnas, samt getters för alla. Kurser byter dock aldrig namn, kurskod eller antal hp så setters ska inte finnas (LiUs policy är generellt sett att vid stora ändringar skapa en ny kurskod osv.). Klassen Course ska också ha en privat klassvariabel courses som är en ArrayList<Course> som innehåller alla kursobjekt som skapats under tiden programmet körts. Dessa ska automatiskt läggas till i ArrayList:en när nya Course-objekt skapas. (Tips: Kom ihåg hur vi räknade hur många mängder vi skapat i labb 5.) Skapa också en publik klassmetod getcourses() som returnerar listan courses. Testa din nya klass genom att lägga till kod i main-metoden i PersonUIklassen. Skapa några (minst 4-5 stycken) kursobjekt och hämta sedan listan på kurser med hjälp at getcourses() och skriv ut listan på skärmen. Du ska alltså inte behöva manipulera courses på något sätt från PersonUI-klassen utan listan ska innehålla alla nya objekt så snart dessa har skapats med hjälp av konstruktorn. 3 Arv Arv är en av de viktigaste och mest kraftfulla konstruktionerna i objektorientering. Arv beskriver relationer mellan klasser. En sådan relation är t.ex. relationen mellan katter och tigrar. Alla tigrar är katter, men inte alla katter är tigrar. Skulle vi vilja modellera alla djurarter som Java-klasser (gud förbjude, det sägs finnas rätt många olika arter) skulle vi då t.ex. ha en klass Cat som t.ex. beskrev att katter har fyra ben och svans medan vi skulle ha en klass Tiger som ärvde av Cat. Tiger skulle då inte behöva ha koll på de fyra benen och svansen, det är givet av att alla tigrar är katter, men skulle behöva lägga till hantering av antal ränder. Man kan ha arv i flera nivåer, t.ex. Mammal, Quadriped, Cat, Tiger, d.v.s. Däggdjur, Fyrfoting, Katt, Tiger. 3.1 Automatiskt arv Alla klasser i java ärver till syvende och sist från klassen Object (java.lang.object) som ligger i toppen av arvshierarkin i Javas standardbibliotek. Om man inte explicit säger vilken existerande klass en ny klass ska ärva av så kommer den ärva direkt av Object. Slå gärna upp klassen java.lang.object (i Javadoc för standardbiblioteket) och läs igenom dess beskrivning. Slå även gärna upp några 5

7 andra klasser som ni är bekanta med, och titta på var någonstans i arvshierarkin dessa klasser finns - det kan ni se genom den "trädstruktur" som visas allra först på deras Javadoc-sida. Till exempel kan ni se att klassen String ärver direkt från Object, medan ArrayList har flera klasser mellan sig och Object (AbstractList och AbstractCollection) i hierarkin. Klassen Object har ett antal metoder som alla klasser som ärver av den, d.v.s. alla klasser vi någonsin skapar, direkt kan använda sig av, om de, eller en klass på vägen upp i hierarkin, inte överskuggar, d.v.s. implementerar en egen version av metoden. För att överskugga en metod skapar vi helt enkelt en metod med samma signatur (samma namn och likadan parameterlista) samt returtyp i vår klass, som den metod vi vill överskugga. Metoden bör lämpligen göra "ungefär samma sak" som original-metoden (i superklassen) som vi överskuggar, så läs gärna igenom dokumentationen för metoden ni vill överskugga för att förstå ungefär hur metoden ska bete sig, men sedan skapar vi alltså en anpassad variant av metoden genom att skriva en egen metodkropp. Vi ska undersöka detta i nästa uppgift genom at överskugga metoden tostring(). UPPGIFT 6.4 Använd din main-metod i klassen PersonUI och skapa ett objekt av klassen Person, se till att objektet har både för- och efternamn samt födelseår. Anropa nu metoden tostring(), som returnerar en textsträng, på objektet och skriv ut resultatet på skärmen. Vad som har hänt är att vi anropat Object-klassens tostring() som bara skriver ut en minnesadress, d.v.s. referensen som finns lagrad i variabeln, men inte själva värdet på textsträngen. Känns det bekant? Detta är t.ex. vad som händer varje gång vi skickar en array till System.out.println() så ni kanske har stött på detta redan. För att få tostring() att bete sig mer som vi kanske förväntar oss, d.v.s. skriva ut information om vårt Person-objekt och inte bara en minnesadress, ska vi nu skapa en egen version av tostring(), speciellt anpassad för vår Personklass. Klassen Person ska alltså ha en publik metod som heter tostring(), som överskuggar den tostring() som ärvts från Object. Denna skall returnera en textsträng som innehåller informationen från de tre instansvariablerna i ett rimligt format, t.ex. "Förnamn Efternamn, årtal." eller "Efternamn, Förnamn, årtal." (där såklart "Förnamn", "Efternamn" och "årtal" har ersatts med värdena på de tre variablerna för det aktuella objektet). Kör samma kod som du använde i main-metoden i PersonUI i början av den här uppgiften igen. Nu ska utskriften inte längre bli en minnesadress, utan istället informationen från de olika instansvariablerna formaterat på det sätt som du betämt i din variant av metoden tostring(). 6

8 3.2 Ange arv i klassdeklarationen Vi såg i förra avsnittet att alla klasser automatiskt ärver av klassen Object. Vi pratade dock också om att ärva från andra klasser, t.ex. att Tiger kan ärva från Katt. Detta är något man kommer vilja göra ofta när man programmerar objektorienterat. För att ärva från en viss klass i Java används nyckelordet extends på följande sätt: 1 public class Tiger extends Cat { 2 //Meow... Sorry, I mean GROWL! 3 } Vid ett sådant arv så ärver Tiger alla egenskaper som Cat har. Om Cat t.ex. har en instansvariabel name så kommer även Tiger ha det utan att explicit behöva skriva koden för det igen, likandant med metoder. Detta sparar enormt mycket arbete och innebär att man inte behöver skriva samma kod flera gånger när man har flera klasser som påminner om varandra, men inte är exakt lika. Man säger att Tiger är en subklass till Cat som i sin tur är en superklass till Tiger, detta från de latinska begreppen sub (under) och super (över). UPPGIFT 6.5 Skapa en klass Student som är en subklass till Person. Student ska ha två instansvariabler, utöver de som ärvs från Person. Dels ett liu-id, en sträng i stil med abcde123, och dels en ArrayList<Course> som är en förteckning över de kurser en student läser. Nu kan det även vara lämpligt att ändra modifieraren private för alla instansvariablerna i Person till protected, som betyder att de direkt kan användas av instanser av subklasser (d.v.s. både instanser av Person men även Student som är en subklass till Person). Skapa en uppsättning kurser i main-metoden i PersonUI (kom ihåg att klassen ju själv ska hålla koll på alla skapade kurser). Skriv sedan en liten interaktionsloop som låter användaren mata in all information om en student (glöm inte felhantering - liksom tidigare behöver ni inte ta hänsyn till alla eventualiteter, men någon kontroll ska göras för varje värde), inklusive det som ärvs från Person, och sedan visar en lista med alla kurser och låter användaren välja en eller flera kurser att lägga till i studentens personliga kurslista. Tips: När kurserna listas är det smart att skriva ut vilket index i courses de ligger på, då kan denna siffra användas för att välja en kurs. Till sist, skriv ut all information om studenten som skapats på skärmen, inklusive de kursen som denne har i sin personliga kurslista. 7

9 3.3 Interface I Java kan en klass bara ärva från en annan klass direkt (som sagt ovan kan man dock sätta ihop arv i långa kedjor). Vi kan alltså bara ha en klass efter extends-kommandot. Ett sätt att komma runt detta i Java är att använda sig av interface eller gränssnitt, även om jag nästan aldrig hört den svenska termen användas. Ett interface är en mall som ställer vissa krav på en klass. Dessa krav yttrar sig genom instansvariabler som måste finnas och/eller metoder som måste implementeras för att interfacets krav ska vara uppfyllda. Vi kan tänka på ett interface nästan som ett kontrakt som vår klass lovar att uppfylla. Om vi ser att en klass implementerar ett visst interface som vi känner till, då vet vi också vilka variabler och/eller metoder vi kan anta att den har. I vårt exempel med djur kan vi prata om egenskapen att flyga. Det finns alla möjliga djur som kan flyga som inte är nära släkt med varandra och därför opraktiska att sätta ihop med vanliga arv. T.ex. är det lite orimligt att säga att fåglar ärver av fladdermöss eller tvärt om, då de förstnämnda är närmare släkt med dinosaurierna än med de sistnämnda. I det fallet kan det vara lämpligt att använda ett interface som hanterar flygförmågan. Om en viss djurart kan flyga kan vi i så fall säga att arten implementerar interfacet "flygförmåga", då vet vi kanske att arten (klassen) kommer att ha variabler såsom flyghastighet och vingspann som hör ihop med just flygförmåga. I Java finns mängder av inbyggda interface, d.v.s. gränssnitt som finns fördefinierade i Javas standardbibliotek. Gränssnitten hittar ni i standardbiblioteket precis som klasserna, men skillnaden är att gränssnitten ju inte innehåller någon egen kod som implementerar de variabler och metoder som beskrivs, utan ni måste själva implementera dessa för att de ska kunna användas - interfacet beskriver bara själva "kontraktet" som ska uppfyllas. Några av de interface man kan stöta på är t.ex. Serializable (ett interface som används när man vill kunna lagra hela Java-objekt på disk eller skicka Java-objekt över ett nätverk), Runnable (används när kod ska kunna köras i en egen tråd, om ni inte vet vad en tråd är så oroa er inte för det, det är överkurs) eller Comparable (används när man vill säga att objekt av klassen kan jämföras, t.ex. med varandra, och därför kan de sorteras). För att visa att en viss klass i Java implementerar ett visst interface används nyckelordet implements på följande sätt: 1 public class Bird implements Flying { 2 /*Code for the Bird-class, which 3 * needs to include all the variables 4 * and methods specified by the 5 * Flying-interface 6 */ 7 } En klass kan implementera flera olika interface, till skillnad från arv, där varje klass bara kan vara en direkt subklass till en annan klass. 8

10 Vissa interface kan, liksom vissa klasser, ha en typparameter. Tänk t.ex. på när vi skapar en ArrayList, då talar vi om vilken typ objekten ska ha som vi vill kunna lagra i vår lista genom att ange typen inom <> efter ArrayList, t.ex. ArrayList<Integer> för en lista med heltal. På liknande sätt kan även interface ha en typparameter. I uppgiften nedan kommer vi att stöta på just ett sådant inerface, nämlingen Comparable. När ni slår upp interfacet i Javadoc för standardbiblioteket så ser ni att det beskrivs som Comparable<T>, där T är typen av objekt som vi ska kunna jämföra med. I vårt fall vill vi kunna jämföra en person med en annan person, så vårt T kommer alltså att vara klassen Person. Detta anger vi direkt i klassdeklarationen när vi talar om att vår klass implementerar Comparable, d.v.s. vi skriver Comparable<Person> istället för bara Comparable. UPPGIFT 6.6 Modifiera klassen Person så att den implementerar interfacet Comparable (java.lang.comparable) för att kunna jämföra två personer med varandra. Eclipse kommer då kräva av er att ni lägger till en metod. Den metoden, compareto(), ska ta ett annat Person-objekt som argument och beräkna vilken person som kommer "först" i ordningen. Vad innebär då "kommer först" i vårt fall? Jo, om Person-objektet som skickats in har ett namn som kommer före det aktuella objektets i bokstavsordning (notera att strängar kan jämföras med sin egna compareto()-metod eftersom String också implementerar interfacet Comparable) ska -1 returneras, är namnen exakt lika ska 0 returneras och annars ska 1 returneras. Först ska ni jämföra efternamnen, men om dessa är samma ska förnamnen jämföras, bara om även dessa är exakt lika ska metoden returnera 0. Utöka sedan main-metoden i klassen PersonUI (det är okej att tillfälligt kommentera ut koden som ni använt för de övriga uppgifterna, men ta inte bort den - koden från uppgift 6.2 ska ni t.ex. återanvända i senare labbar) med en interaktionsloop som läser in och skapar 4 personer och lagrar dessa i en Person-array, d.v.s Person[]. Använd sedan Arrays.sort() för att sortera arrayen. Tack vare copareto() kommer arrayen förhoppningsvis vara korrekt sorterad nu. Ni behöver alltså inte explicit anropa compareto() någonstans, utan Arrays.sort() kommer automatiskt att använda den. Använd en loop för att skriva ut Person-objekten en gång före ni sorterar dem, samt en gång efter sorteringen för att kontrollera att sorteringen fungerat som förväntat. Testa att mata in personer som har samma efternamn, så att ni ser att jämförelsen fungerar även när endast förnamnen skiljer personerna åt. 9

11 4 Bonusuppgift Övning 6.1 Gå tillbaka och titta på labb 4 och se hur interaktionsloopen var designad. Skapa sedan en interaktionsloop för vårt system med kurser och studenter. Bra kommandon att ha är t.ex. kommandon som skapar studenter, skapar kurser, listar studenter, listar kurser, lägger till kurser i studentens lista etc. Tänk på att all inmatning ska ha lämplig felhantering. 10

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack 725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer

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

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator

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

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv

Läs mer

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp. Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar

Läs mer

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel

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

"Ä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. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Instansiering Åtkomst Abstrakt datatyp UML Överlagring

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Föreläsning 7: Objektorienterad programmering - introduktion

Föreläsning 7: Objektorienterad programmering - introduktion Föreläsning 7: Objektorienterad programmering - introduktion Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1, 2013 1 Innehåll Del 2 i kursen Objektorientering - vad är det?

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

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

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

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

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

Klasser och objekt. Henrik Johansson. August 20, 2008

Klasser och objekt. Henrik Johansson. August 20, 2008 Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

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

ID1004 Laboration 4, November 2012

ID1004 Laboration 4, November 2012 06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt

Läs mer

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om? Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

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

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

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1

Läs mer

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine. Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (

Läs mer

Design av en klass BankAccount som representerar ett bankkonto

Design av en klass BankAccount som representerar ett bankkonto Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers

Läs mer

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

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

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

Modeller, Objekt och Klasser

Modeller, Objekt och Klasser Modeller, Objekt och Klasser Bildserie 3 Objekt Orienterad Programmering OO-programmering bygger på att vi som människor uppfattar tillvaron i termer av objekt - Bastu, pizza, öl,... Det borde vara lättare

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

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Övningsuppgift Bankkonton Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod

Läs mer

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda

Läs mer

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML. Outline Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vad händer under HT2 Laborationsserie del två I Klasser

Läs mer

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:

Läs mer

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.

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. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Laboration 1: Figurer i hierarki

Laboration 1: Figurer i hierarki Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

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

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

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

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

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 Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:

Läs mer

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

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

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

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Introduktion HT2 Åtkomst Abstrakt datatyp UML Överlagring

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder

Läs mer

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

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass). 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.

Läs mer

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2018-05-28 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

Läs mer

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus. Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016 Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl 10.00 13.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

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

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

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

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-7, TDA540 Dag: 208-0-3, Tid: 4.00-8.00 Uppgift a) class används för en klassdeklaration som

Läs mer

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... } Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa

Läs mer

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Objektorienterad Programmering DAT043

Objektorienterad Programmering DAT043 Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

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

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Exempel: Exempel: Exempel: Exempel: $djur=array(ko,katt,älg); foreach ($djur as $d) { echo $d.  ; } Resultat. ko katt älg Loopar och upprepning Vill man upprepa kod flera gånger så istället för att skriva en massa rader så kan man lägga koden i ett kodblock som man sedan loopar. Det finns ett par olika typer av loopar, FORloop,

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

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

Objekt och referenser

Objekt och referenser Objekt och referenser Antag att vi har följande enkla klass: public class Person { private String namn; private String adress; private String personnummer; public Person() { namn = NN ; adress = ; personnummer

Läs mer

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. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält

Läs mer

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll Mera om generik Begreppet subtyp/supertyp i Java Innehåll Wildcards Vektorer och generik Supertyper för en viss klass C är alla klasser från vilka C ärver och alla interface som klassen implementerar.

Läs mer

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det). LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut

Läs mer

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

Läs mer