Föreläsning 7: Objektorienterad programmering - introduktion

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 7: Objektorienterad programmering - introduktion"

Transkript

1 Föreläsning 7: Objektorienterad programmering - introduktion Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1,

2 Innehåll Del 2 i kursen Objektorientering - vad är det? Objektorieterad programmering i Java Exempel vi redan stött på December 1,

3 Del 2 i kursen 4 labbar Från och med del 2 kommer labbhandledarna vara hårdare i rättningen på följande punkter Felhantering - använd interaktionsloopar med felhantering, undantag (om det behövs), testa noga innan inlämning Metodindelning - max 20 rader kod i en metod, annars dela upp i metoder! Dokumentation - välkommenterad kod och vettiga namn på variabler och parameterar Projektet kommer pågå parallellt (samma grupper) - start på torsdag 5/12 Observera: tre obligatoriska handledarmöten under projektets gång (viktiga för att kunna få VG) Ni bokar själva in tid med handledaren (utanför labbtid) December 1,

4 Objektorientering - vad är det? December 1,

5 Objektorienterade system Ett system där varje komponent representerar ett väldefinierat begrepp I första hand begrepp som har en motsvarighet i verkligheten, såsom personer, varor, bankkonton osv. I andra hand implementationsbegrepp, såsom databaser, fönster, mängder osv. Exempel: en flygplats Komponenter (objekt)? Flygplan Terminaler Start- och landningsbanor Objekten har värden på vissa attribut och beskrivna beteenden Flygplanet har värden såsom hastighet, antal säten osv. Flygplanet har beteenden, t ex om ett plan ska starta måste det få veta vilken start/landningsbana som ska användas, och när starten är genomförd kommer planet vara på en viss höjd och ha en viss hastighet December 1,

6 Objektorienterad analys Analys? - kravanalys Görs tidigt när man börjar planera ett system Bör utgå från en given kravspecifikation Krav = vad systemet ska klara av (men inte hur det ska göra det) Studera objekten i verksamheten som vi vill bygga ett system för Vilka objekt (objekttyper) finns? Vilka är relevanta för kraven på vårt system? Vad har de för egenskaper? Vilka beteenden uppvisar objekten och som måste återspeglas i systemet? I vilka scenarion kommer de olika objekten användas? Mål Förståelse för vad systemet ska utföra och områdets terminologi Skapa en "analysmodell" som underlag för designfasen December 1,

7 Objektorienterad design Design? Baserat på analysmodellen behöver vi nu anpassa den till något vi faktiska kan implementera som ett system Anpassning till en målmiljö - var ska systemet köras? Vilka resurser finns? Vilka existerande program måste vi ta hänsyn till? Operativsystem? Programmeringsspråk? Systemarkitektur Detaljerad beskrivning av objekten och deras relationer Studera objekten i analysmodellen och deras relationer i olika scenarion Vilka (data) värden ska representera objektens attribut? Hur ska beteenden fördelas över olika metoder? Hur ser varje objekts gränssnitt ut gentemot andra objekt? Kan vi specialisera eller generalisera vissa objekt? Hur ska objekten interagera med varandra i olika scenarion? Mål Förståelse för vilka anpassningar som måste göras för den specifika miljön Skapa en systemarkitektur och detaljerad design av systemets alla objekt December 1,

8 Objektorienterad programmering Implementation Baserat på den detaljerade designen behöver vi nu skriva koden för alla objekt vi behöver Mål Huvudprogrammet Alla klasser, deras datavärden och deras metoder Skapa ett körbart system som motsvarar vår detaljerade design och uppfyller alla de kvar vi hade i vår kravspecifikation OBS! Det är inte nödvändigtvis så att dessa "steg" görs ett och ett efter varandra för ett helt system (det kallas för en "vattenfallsmodell"), mer vanligt nuförtiden är agila metoder - men stegen i sig finns kvar! December 1,

9 Begrepp - Objekt I ett objektorienterat system kommer ett antal objekt samarbeta för att uppnå ett visst mål Objekt representerar Begrepp från verkligheten Personer, hus, bilar, varor i en butik, banker, bankkonton osv....eller konceptuella begrepp i systemet Fönster, menyer, knappar, databaser, textsträngar, mängder osv. Ett objekt har alltid tre delar (egenskaper) Ett tillstånd - ex: jag är just nu 35 år, jag befinner mig i Link. Unik identitet - ex: mitt personnummer Beteenden - ex: om ni frågar mig om mitt namn så kommer jag att svara "Eva Blomqvist", ni kan be mig skriva Java-kod i Eclipse December 1,

10 Begrepp - Objekt (forts) Ett objekts tillstånd består av värdena på dess attribut just nu Anta att personer har ett namn, en ålder och en födelsort... Ett specifikt person-objekts tillstånd är alltså värdena på dessa tre egenskaper/attribut såsom de ser ut just nu Exempel: person-objektet "Eva" har namn=eva Blomqvist, ålder=36år, och födelseort="österhaninge" Inkapsling Ofta är ett objekts värden gömda för omvärlden Bara objektet självt kan ändra på värdena, och använda dem eller skicka vidare värdena till andra Exempel: ni måste fråga mig om min ålder för att få veta att jag är 36 år Exempel: ingen annan kan byta namn på mig, bara jag kan göra det - det är MITT namn, men någon kan be mig att byta namn Objekt måste kunna skicka "meddelanden" - anropa - varandra för att vi ska kunna bygga ett system December 1,

11 Begrepp - Klass I ett system finns ofta objekt som liknar varandra Ett system som hanterar personer: Eva, Anna, Per, osv... Olika identitet och olika tillstånd (genom olika värden) men samma beteende Eva, Anna och Per är alla personer, de är av typen "person", tillhör klassen Person Vad är en klass? Matematiskt: en mängd av objekt Datalogiskt: en abstrakt datatyp med attribut och metoder Intuitivt: en "mall" eller "stämpel" från vilken vi kan skapa (=instansiera) objekt - objekt är instanser av en klass! En klass har... Ett namn som identifierar det begrepp som klassen representerar Ex: Person En beskrivning av de attribut (=variabler) som klassens objekt ska ha Ex: namn, ålder, personnummer... En beskrivning av de tjänster som klassen erbjuder omvärlden (=metoder) Ex: "ge mig personens namn", "beräkna personens ålder", osv... December 1,

12 Vad är en klass? En mängd av individer Person p 1 p 2 p 3 p 4 p 5 p 6 December 1,

13 Vad är en klass? En beskrivning av individerna i klassen - ett mönster eller "stämpel" för att skapa individerna Klassen som en datatyp Klassen skapas när vi skriver koden Individerna skapas när programmet körs Klassen måste innehålla information om hur individerna ska se ut (variabler och metoder) samt en metod för att skapa nya individer (konstruktorn) December 1, p 5 p 1 Person p 3 p 6 p 2 p 4

14 Vad är en klass? En klassbeskrivning (koden) innehåller alltså både... information om klassen i sig = mängden av alla personindivider beskrivning av information och beteende som ska finnas för varje individ när programmet väl körs Exempel: Person information/beteende för klassen: lista över alla personer, fråga efter listan information/beteende som ska finnas för individerna: namn, personnr, metod för att fråga efter ålder... December 1, p 5 p 1 Person p 3 p 6 p 2 p 4

15 University Klasser = typer = "stämpeln" name city startyear Person name birthyear getname() setname(...) getcity() setcity(...) getstartyear() setstartyear(...) calculateage() getname() setname(...) getbirthyear() setbirthyear(...) calculateage() Person Objekt = instanser = "avtrycken" Ola Anna Ola Anna Per student1 student2 Person December 1, 2013 LIU 15 Person myuni University

16 University Klasser = typer = "stämpeln" ID = type = Person Person name = Ola birthyear = 1994 name birthyear getname() setname(...) getbirthyear() Person setbirthyear(...) calculateage() getname() setname(...) getbirthyear() setbirthyear(...) calculateage() name city startyear getname() setname(...) getcity() setcity(...) getstartyear() setstartyear(...) calculateage() Objekt = instanser = "avtrycken" student1.getname(); Ola "Ola" Anna Ola Anna Per student1 student2 Person December 1, 2013 LIU 16 Person myuni University

17 Klasser = typer = "stämpeln" Inget nytt! ArrayList String add(...) contains(...) get(...) remove(...) size() toarray() iterator() charat(...) indexof(...) replace(...) touppercase() tolowercase() String Objekt = instanser = "avtrycken" "Hej" "Text" "Hej" "Text" "Mer..." s1 mytext String December 1, 2013 "Mer..." 17 String s2 String

18 Objektorienterad programmering i Java December 1,

19 Klasser i Java Som ni har sett spelar klasser en central roll i Java Man kan inte skriva ett program utan att skapa en klass! Alla värden som hanteras lagras antingen i en variabel av en primitiv datatyp (byte, short, int, long, float, double, char, boolean) eller så är det en referens till ett objekt objekt = antingen en vektor av primitiva typer eller en instans av en klass Javas standardbibliotek är en samling användbara klasser Hittills i kursen har vi sett klasser som samlingar av metoder Vi måste skapa en klass för att kunna skapa metoden "main" och köra vår kod som ett program Vi har skapat statiskta metoder (klassmetoder) Vi har inte skapat några instanser av våra klasser December 1,

20 Klasser i Java (forts) Ett annat sätt att se på klasser Klasser som datatyper - typer av objekt Person är en typ av objekt där instanserna är enskilda personer Hjul är en typ av objekt där instanserna är enskilda hjul på en bil Jämför med Javas standardbibliotek String är en typ av objekt där instanserna är specifika textsträngar ArrayList är en typ där instanserna är listor som innehåller andra objekt av en given typ... De flesta av klasserna i Javas standardbibliotek är abstrakta datatyper! December 1,

21 Klasser vs. filer Från början hade vi bara en fil Samma namn på filen som på klassen Från och med nu kommer vi att ha flera filer, med en klass per fil - samma namn på filen som på klassen Kan vi ha flera klasser i en fil? (överkurs) Ja - men bara en klass får vara public och den klassen måste överensstämma med filnamnet En klass som inte är deklarerad som public (vi skriver ingenting före "class") kan bara kommas åt inom samma paket Kompilering av en fil med flera klasser i kommer generera flera.class-filer, en för varje klass Begreppet kompileringsenhet (överkurs) kompileringsenhet = en källkodsfil (som kan innehålla flera klasser) När vi ska köra ett program måste vi starta från den klass som innehåller vår "main"-metod December 1,

22 Varför behöver vi klasser som datatyper? Kom ihåg: en metod kan bara returnera ett enda värde (eller en vektor med värden av samma typ) Vad händer om vi behöver kunna returnera flera olika sorters värden? Exempel: en metod för att få information om en person, t ex en persons förnamn, efternamn och födelseår - vi vill kunna returnera tre värden (textsträng + textsträng + heltal) Lösning: vi måste skapa en abstrakt datatyp Person som kapslar in all den här informationen Då kan vi returnera ett enda Person-objekt, men som innehåller all information vi behöver! Annat exempel: en metod för att hämta kontohavare och saldo, givet ett kontonummer December 1,

23 Varför behöver vi klasser som datatyper? (forts.) public class BankKonto {!!public int kontonr;!!public String kontohavare;!!public double saldo;! }!! public class HanteraKonto {!!public static void main (String[] args){!!!// här gör vi en massa saker!!!bankkonto konto = hamtainfo();!!}!!!!public static BankKonto hamtainfo(){!!!bankkonto k = new BankKonto();!!!// här fyller vi objektet med rätt information!!!return k;!!}! }! December 1,

24 Vad ska en klass innehålla? En klass kan innehålla följande: En klassdeklaration (obligatoriskt) public class MittKlassNamn {! Klass- och instansvariabler "globala variabler" som kan kommas åt från vilken metod som helst (i klassen om de är private, även från andra klasser om de är public) Skrivs gärna högst upp i klassens kropp En eller flera konstruktorer metod som talar om vad som händer när ett nytt objekt (instans) av metoden skapas Klass- och instansmetoder metoder som representerar klassens och instansernas beteende - vad kan den här typen av objekt göra? En main-metod...om det här är "huvudklassen" varifrån programmet ska köras December 1,

25 Konstruktorer En metod med samma namn som klassen som används för att skapa nya objekt av klassen Exempel på använding: Person pers = new Person();! BankKonto k = new BankKonto();! java.util.scanner in = new java.util.scanner(system.in);! En konstruktor returnerar aldrig något värde har ingen returtyp (inte ens void) Konstruktorn används för att initialisera variabler i det nya objektet (instansvariabler) till lämpliga värden kan även göra annat som är lämpligt när ett nytt objekt skapas Defaultkonstruktorn en klass som saknar konstruktor har en "defaultkonstruktor" som tillhandahålls av Javamiljön - den gör ingenting vill man göra något får man skapa en eller flera egna konstruktorer Precis som för vanliga metoder kan man ha flera olika konstruktorer (som ju har samma namn) bara de har olika signatur (olika argument) December 1,

26 Konstruktorer (forts.) Exempel: konstruktorer för BankKonto-klassen! public class BankKonto {!!public int kontonr;!!public String kontohavare;!!public double saldo;!!!public BankKonto (int nr, String person, double s) {!!!kontonr = nr;!!!kontohavare = person;!!!saldo = s;!!}!!!!public BankKonto () {!!}! }! December 1,

27 Instansvariabler Variabler som tillhör en klass, men inte är static, tillhör varje instans (objekt) av den klassen för varje instans vi skapar av klassen, skapas dessa variabler när vi har skapat en instans av klassen kan dessa instansvariabler till delas värden och vi kan hämta och använda deras värden Exempel: kontonr, kontohavare och saldo i klassen BankKonto för att komma åt en instansvariabel måste vi tala om vilken instans vi menar (eftersom det kan finnas flera) BankKonto konto1 = new BankKonto(); konto1.saldo = ;! Instansvariabler kan vara public (går att komma åt utanför klassen själv) eller private (bara klassens egna metoder kan komma åt dem) Kallas även fält (eng. field) eller medlemsvariabler (medlem = instans) December 1,

28 Instansvariabler (forts.) Exempel: konstruktor för BankKonto-klassen här är det underförstått att vi menar variablerna i den nya instanser vi håller på och skapar för att referera till den explicit kan vi skriva this för att göra klart att vi menar just den här instansen (men detta är alltså onödigt i exemplet!) public class BankKonto {!!public int kontonr;!!public String kontohavare;!!public double saldo;!!!public BankKonto (int nr, String person, double s) {!!!this.kontonr = nr;!!!this.kontohavare = person;!!!this.saldo = s;!!}! }! December 1,

29 Inkapsling Ett objekts tillstånd = värdet på dess instansvariabler just nu I exemplet tidigare deklarerade vi alla instansvariabler public - det är ovanligt Oftast vill vi inte att vem som helst (vilka andra objekt som helst) ska kunna komma åt och modifiera ett objekts instansvariabler Inkapsling = bara objektet självt har full tillgång till sina instansvariabler = vi deklarerar dem private! Andra objekt kan bara komma åt dem och manipulera dem på vissa fördefinierade sätt Instansmetoder används för att komma åt värden På engelska "getters and setters", dvs "get"-metoder för att hämta värden och "set"-metoder för att ändra värden December 1,

30 Inkapsling - get/set exempel public class BankKonto {!!private int kontonr;!!private String kontohavare;!!private double saldo;!!!public BankKonto (int nr, String person, double s) {!!!//konstruktor som initialiserar värden!!}!!!public double getsaldo (){!!!return saldo;!!}!!!public void setsaldo (double s){!!!//här kan vi lägga in någon kontroll!!// som körs innan värdet ändras!!!saldo = s;!!}!! }! I Eclipse kan ni få hjälp att generera "getters and setters" - men modifiera dem sedan så de passar! Source -> Generate Getters and Setters... December 1,

31 Inkapsling - get/set exempel (forts.) public class HanteraKonto {!!public static void main (String[] args){!!!bankkonto k = new BankKonto(12345,!!!!!!!"Eva",120.0);!!!//Vi kan inte ändra saldot direkt!!!// k.saldo = 130.0; fungerar inte!!!!// vi måste använda set-metoden!!!k.setsaldo(130.0);!!}!!! }! OBS: var försiktiga när ni hanterar vektorer - en "get"-metod som returnerar en referens till vektorn gör ju att vektorn kan ändras - returnera en kopia av vektorn istället (anv. clone()) December 1,

32 Inkapsling (forts.) Bara objektet självt har full tillgång till sina instansvariabler (sina data) = vi deklarerar dem private! Andra objekt kan bara komma åt dem och manipulera dem på vissa fördefinierade sätt Publika instansmetoder används för att komma åt värden På engelska "getters and setters", dvs "get"-metoder för att hämta värden och "set"-metoder för att ändra värden OBS! metoder kan också vara private/public - en privat metod kan bara anropas inifrån den egna klassen medan en publik kan anropas från andra klasser Klassen ska vara så "självständig" som möjligt, dvs varje klass ska ta hand om sina egna värden och definiera sina egna beteenden Fundera över var metoderna hör hemma - oftast är det på samma ställe där vi lagrar data Tänk er att man ska kunna återanvända klassen oberoende av main-metoden eller andra klasser December 1,

33 Instansmetoder Instansmetoder är de som INTE är deklarerade static! Detta innebär att den kan anropas med någon specifik instans (objekt) av klassen som syftning - utföras av ett specifikt objekt (inte av klassen i sig) Det är genom instansmetoder som objekten i vårt system "skickar meddelanden till varandra" - kommunicerar "get" och "set" metoder för att hantera inkapsling av instansvariabler är alltid instansmetoder "get"-metoder ger information om tillståndet hos ett objekt "set"-metoder ändra tillståndet hos ett objekt Instansmetoder anropas genom att först tala om på vilken specifik instans metoden ska anropas (vilken instans vi syftar på Exempel: k.setsaldo(130.0);! December 1,

34 Klassvariabler Variabler som tillhör en klass - dvs hela "typen" Deklareras som static! Deklareras precis efter klassdeklarationen (innanför { } som omsluter klassen) Exempel: en lista som håller reda på alla instanser vi skapat av den här klassen - Bankkonto = lista på alla konton som finns i vår bank public class BankKonto {!!public static ArrayList<Konto> kontolista;!!public int kontonr;!!public String kontohavare;!!public double saldo;!...! }! December 1,

35 Klassvariabler/metoder vs. instansvariabler/metoder Klassvariabler ger information om själva klassen Deklareras som static! Åtkomst genom att ange klassnamn före syftningsoperatorn Klass.variabel Innehåller information om klassen, t ex kan man hålla reda på hur många instanser som skapats av klassen, eller rent av lagra en lista med alla instanserna Klassmetoder är operationer som själva klassen tillhandahåller Deklareras som static! Åtkomst genom att ange klassnamn före syftningoperatorn Klass.metod() Utförs oberoende av eventuella instanser av klassen, kan bara utnyttja klassvariabler inte instansvariabler i klassen December 1,

36 Klassvariabler/metoder vs. instansvariabler/metoder (forts) Instansvariabler ger information om tillståndet hos ett specifikt objekt (instans) av klassen Är INTE static! Åtkomst genom att ange namnet på objektet (variabeln där vi lagrat objektet) före syftningsoperatorn - bara om de deklarerats som public (annars åtkomst genom get/set metoder) instans.variabel Instansmetoder är operationer på ett specifikt objekt (instans) av klassen Är INTE static! Åtkomst genom att ange namnet på objektet (variabeln där vi lagrat objektet) före syftningoperatorn - bara om de deklarerats som public! instans.metod() December 1,

37 Vad hör till klassen och vad hör till individen/instansen? Nyckelordet "static" = allt som hör till klassen anropas med hänvisning till klassen, t ex String flyttalsstrang = String.valueOf(2.35);! kan vara variabel (t ex lista med alla instanser) men även metoder (t ex main-metoden eller valueof()) vi behöver inte skapa en enda instans av klassen för att använda det som är deklarerat som "static" Allt som INTE är "static" = hör till varje individ som skapas av klassen och kan inte användas förrän vi skapat minst en instans anropas med hänvisning till en instans ur klassen (t ex en variabel med klassen som sin typ), t ex Person minperson = new Person(Anna, ); int alder = minperson.calculateage();! varje instans innehåller EN EGEN variabel och det är just den som används, med värden ur den egna instansen, när en icke-statisk metod körs för att kunna använda det som inte är static måste vi först skapa en individ, en instans, av klassen December 1,

38 Vad hör till klassen och vad hör till individen/instansen? (forst.) Jämför med klassen String static String valueof(double d) - "Returns the string representation of the double argument" Statiskt metod = klassmetod = anropas genom att ange klassen Exempel: String flyttalsstrang = String.valueOf(2.35);! char charat(int index) - "Returns the char value at the specified index" Icke-statisk metod = instansmetod = anropas genom att ange vilken instans den ska anropas på Exempel: String mintext = new String("hej"); char bokstav = mintext.charat(1);! December 1,

39 Sammanfattning av modifierare - det viktigaste! Klasser, variabler, metoder mm kan vara private, protected eller public! private - privat, kan bara användas inom klassen protected - skyddad, kan användas av subklasser public - offentlig/publik, kan användas av alla klasser Vi har sett att variabler och metoder i en klass kan vara static eller så anges inget alls static - variabel/metod som tillhör själva klassen (kan bara använda sig av variabelvärden som också är static) (inte static) - variabel som varje individ/instans har en egen "upplaga" av i minnet, resp. metod som körs med variabelvärden för den specifika instansen December 1,

40 Sammanfattning av modifierare (forts.) Klasser Offentlig - public Pakettillgänglig - (om inget sägs) Nästlade klasser (klass i klass) - private Metod i en klass Offentlig - public Pakettillgänglig - (om inget sägs) Skyddad (åtkomst från subklasser + paketet) - protected Privat för den klassen - private Klassmetod (statisk metod) - static Instansmetod - (om inte static) December 1,

41 Sammanfattning av modifierare (forts.) Variabel Offentlig - public Pakettillgänglig - (om inget sägs) Skyddad (åtkomst från subklasser + paketet) - protected Privat för den klassen - private Klassvariabel (statisk variabel) - static Instansvariabel - (om inte static) Konstant - final Tre beslut Åtkomst (offentlig, paket, skyddad, eller privat)? Klass- eller instans (-variabel/-metod)? Möjlig att ändra? December 1,

42 Vad ska jag välja? Tumregel: Gör alla klasser, metoder, variabler osv så lite tillgängliga som möjligt - då undviker du att fel uppstår när de används/ modifieras utifrån... INKAPSLING! Det vanligaste är att... En klass är public! Dess instansvariabler är private! Det finns offentliga (public) "get" och "set" metoder för att komma åt instansvariablerna Dess övriga metoder är public om de ska anropas av ett objekt som är av en annan typ - de är protected om de ska anropas av en instans av en subklass - de är private om de bara används internt av instansen själv December 1,

43 Sammanfattning Objektorienterade system System där varje komponent representerar ett väldefinierat begrepp (som ofta återfinns i verkligheten) Systemet löser problem genom att låta objekten samarbeta Begreppen klass och objekt Klassen är mallen från vilken objekten skapas Varje objekt (instans) tillhör en klass Inkapsling Ett objekt vill oftast dölja sina attribut (variabler) från yttre påverkan - de är private! "get" och "set" metoder används för att kontrollera åtkomst Klassvariabler och metoder vs. instansvariabler och metoder static = hör till klassen (inte static) = hör till instansen December 1,

44 December 1,

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

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

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

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

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

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

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

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

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90 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

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

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

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

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

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

Föreläsning 9: Projektintroduktion, programmeringsmetod, samt att skapa körbara program och dokumentation

Föreläsning 9: Projektintroduktion, programmeringsmetod, samt att skapa körbara program och dokumentation Föreläsning 9: Projektintroduktion, programmeringsmetod, samt att skapa körbara program och dokumentation Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Information

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

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

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

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

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

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

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

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

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

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

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

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

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

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

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

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

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

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

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

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

Objektorientering: Lagring, räckvidd och livstid

Objektorientering: Lagring, räckvidd och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)

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

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

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

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

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

(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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

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

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

Enkla variabler kontra referensvariabel

Enkla variabler kontra referensvariabel Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen

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

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

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

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

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

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

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

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

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

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

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

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

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

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

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

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

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

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

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: 2D1387, Programsystemkonstruktion med C++ 00/01 1 Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: Klasser, åtkomst Medlemmar, medlemsfunktioner, inline Slide 1 Konstruktorer Destruktorer

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

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

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål: Klasser och objekt Ett program i Java är en modell som används för att simulera uppträdandet hos en verklig eller påhittad värld. I ett objektorienterat programspråk modelleras den värld som man vill avbilda

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

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

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

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

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

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

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

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Läs mer

1 Klasser och objektorientering Vad är objektorientering?

1 Klasser och objektorientering Vad är objektorientering? 1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det

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

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

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

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 fredag

Tentamen i Grundläggande programmering STS, åk 1 fredag Tentamen i Grundläggande programmering STS, åk 1 fredag 2003-05-23 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Anders besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka kl.

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer