Föreläsning 2. Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer
|
|
- Ann-Marie Larsson
- för 6 år sedan
- Visningar:
Transkript
1 TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 2 Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer Objektorienterad programmering fk 1 Föreläsning 2
2 Polymorfism Java tillåter att man till variabel av en viss typ C kan tilldela objekt som är av typ C eller är subtyper till C. Till exempel är i tilldelningssatsen Runnable r = new FastRunner(); variabeln r av typen Runnable, medan det objekt som denna variabel refererar till är av subtypen FastRunner. Egenskapen att ett objekt som är en subtyp till typen C legal att använda varhelst ett objekt typen C förväntas kallas polymorfism. Polymorfism är en av de viktigaste koncepten i objektorientering och den allra viktigaste orsaken till att objektorienterade programspråk är så användbara. Objektorienterad programmering fk 2 Föreläsning 2
3 Betydelsen av polymorfism När man diskuterar hur bra designen hos en mjukvara är, kommer ofta konceptet plug-and-play upp. Idén med plug-and-play är att en komponent kan pluggas in i ett system och kan användas, utan att omfigurera systemet. Antag att vi i ett programsystem använder klassen LinkedList, från Javas standardbibliotek, för att hålla reda på t.ex. varor i ett lager. LinkedList list = new LinkedList(); List list = new LinkedList(); Vidga typtillhörigheten Vidga typtillhörigheten Collection list = new LinkedList(); Använd en factory-metod Manager factory = new Factory(); Collection list = factory.createnewlist(); public class Factory {... public Collection createnewlist() { return new LinkedList(); } } Objektorienterad programmering fk 3 Föreläsning 2
4 Återanvändbar kod Att en variabel kan deklareras som interfacetyp och referera till objekt som tillhör någon klasser som realiserar interfacetypen, innebär att vi kan minska beroendet av en specifik klass. Detta ger oss möjlighet att skriva kod som är mycket mer flexibel och återanvändbar än vad som annars skulle vara fallet. Objektorienterad programmering fk 4 Föreläsning 2
5 Interface vs abstrakta klasser En klass är abstrakt om någon metod som deklareras i klassen saknar implementation. Det är subklassernas uppgift att implementera de abstrakta metoderna. En abstrakt klass beter sig exakt som en vanlig klass med ett enda undantag: man kan inte skapa instanser av en abstrakt klass. Men det är möjligt att ha variabler vars typ är en abstrakt klass. Naturligtvis måste en sådan variabel ha referens till ett objekt av en konkret subtyp (eller null). Objektorienterad programmering fk 5 Föreläsning 2
6 Interface vs abstrakta klasser Abstrakta klasser är behändiga att använda för att faktorisera ut gemensamma beteenden. <<interface>> SceneShape isselected() setselected() draw() drawselection() translate() contains() SelectableShape {abstract} selected isselected() setselected() CarShape draw() drawselection() translate() contains() HouseShape draw() drawselection() translate() contains() Abstrakta klasser har en fördel jämfört med interface typer: de kan definiera gemensamma beteenden. Men de har också en allvarlig nackdel: en klass kan endast göra extend på en klass, men kan implementera många olika interface. Slutsats: Använd aldrig abstrakta klasser där alla metoder saknar implementation, utan använd istället interface. Använd abstrakta klasser för att faktorisera ut gemensam kod. Objektorienterad programmering fk 6 Föreläsning 2
7 Dynamisk bindning Vi har sett att arv tillhandahåller åtminstone två fördelar för mjukvaruutvecklaren. Först av allt ger det en mekanism för återanvändning av kod. För det andra är polyformism ett flexibilitet och kraftfullet verktyg. Vi skall ny behandla koncept dynamisk bindning som tillsammans med polyformism ger programutvecklaren ytterligare flexibilitet. Antag att vi har en superklass Automobile samt att denna har de tre subklasserna Sedan, Minivan och SportCar. Automobile +getcapacity():int... Sedan +getcapacity():int Minivan +getcapacity():int SportCar +getcapacity():int Automobile har metoden getcapacity() som även implementeras av de tre subklasserna, dvs dessa subklasser överskuggar (override) denna metod. Objektorienterad programmering fk 7 Föreläsning 2
8 Dynamisk bindning Eftersom Sedan, Minivan och SportCar är subklasser till Automobile är följande kod legal: Automobile[] fleet = new Automobile[3]; fleet[0] = new Sedan(); fleet[1] = new Minivan(); fleet[2] = new SportCar(); Fälet fleet innehåller således värden från tre olika klasser. Antag nu att vi vill ta reda på den totala kapaciteten för objekten som finns i fälet fleet. Här är ett första försök att göra det: //--- VERSION 1 --// int totalcapacity = 0; for (int i = 0; i < fleet.length; i++) { if (fleet[i] instanceof Sedan) totalcapacity += ((Sedan) fleet[i]).getcapacity(); else if (fleet[i] instanceof Minivan) totalcapacity += ((Minivan) fleet[i]).getcapacity(); else if (fleet[i] instanceof SportCar) totalcapacity += ((SportCar) fleet[i]).getcapacity(); } Koden fungerar, men är den bra? Objektorienterad programmering fk 8 Föreläsning 2
9 Dynamisk bindning Genom att dra nytta av dynamisk bindning kan vi få en elegant lösning. //--- VERSION 2 --// int totalcapacity = 0; for (int i = 0; i < fleet.length; i++) totalcapacity += fleet[i].getcapacity(); Javas runtime system (Java Virtual Machine) tittar efter aktuell typ för ett objekt när programmet exekvera och inte på vilken deklarerad typ det har. I vårt exempel innebär detta t.ex. att objektet som refereras av fleet[1] vid exekveringen har typen Minivan och inte typen Automobile som det har som deklarerad typ. Koden i Version 2 är mycket elegant i jämförelse med koden i Version1. Den är inte bara kortare, enklare och mer överskådlig, den behöver inte förändras om man senare behöver lägga till en ny subklass till Automobile, t.ex. subklassen SUV. Objektorienterad programmering fk 9 Föreläsning 2
10 Dynamisk bindning Vad händer om metoden getcapacity() inte finns deklarerad i superklassen Automobile? Finns inte metoden, finns det heller ingen metod som blivit överskuggad!! Kompilatorn kommer att ge ett kompileringsfel, eftersom fleet[i] är av typen Automobile och klassen Automobile då inte har någon metod getcapacity(). Vi har alltså två delar som är inblandade när det gäller anropet av fleet[i].getcapacity(). Den första delen sker under kompileringen. När kompilatorn ser att fleet[i] är deklarerad av typen Automobile, söker kompilatorn efter metoden i klassen Automobile. Det andra steget sker under exekveringen är den korrekta implementation av metoden getcapacity() skall väljas. Om det inte finns någon metod getcapacity() deklarerad i superklassen Automobile måste man använda lösningsmetoden som gavs i Version 1 ovan. Objektorienterad programmering fk 10 Föreläsning 2
11 Överlagring kontra överskuggning Om det finns två metoder i samma klass som har samma namn, men med olika signaturer, innebär detta att namnet på metoderna är överlagrat (overload). Signaturen för en metod bestäms av vilka typer som parametrarna i metodens parameterlista har (namnen på parametrarna är irrelevant). Två signaturer är lika om antal, typ och ordning på parametrarna är identiska. Överlagring betyder alltså att ett metodnamn används av två eller flera helt skilda metoder i samma klass. Överskuggning däremot involverar en superklass och en subklass, och berör två metoder som har samma metodsignatur den ena metoden finns lokaliserad i superklassen och den andra metoden finns lokaliserad i subklassen. Objektorienterad programmering fk 11 Föreläsning 2
12 Överlagring I klassen String finns metoderna: public String substring(int beginindex) public String substring(int beginindex, int endindex) Dessa metoder är överlagrade - de har samma namn men olika signaturer. Naturligtvis skall överlagring användas om och endast om de överlagde metoderna i allt väsentligt gör samma sak (som med metoderna substring i klassen String ovan). När parametrarna i de överlagrade metoderna är primitiva datatyper, som substring-metoderna ovan, är det enkelt att förstå vilken metod som blir anropad. Det är svårare att förstå vilken metod som verkligen blir anropad när parametrarna utgörs av referenstyper och därför kan anropas med subtyper till de typer som anges i parameterlistan. Objektorienterad programmering fk 12 Föreläsning 2
13 Överlagring ett exempel Låt oss titta på klassen Automobile igen. Eftersom alla klasser i Java är subklasser till klassen Object betyder detta att klassen Automobile bl.a. ärver en metod med följande metodhuvud: public boolean equals(object obj) (1) Antag nu att vi lägger till en metod i klassen Automobile som har metodhuvudet: public boolean equals(automobile auto) (2) Object +equals(o:object): boolean Automobile +equals(o:automobile): boolean Observera att parametern till metoden equals i klassen är Automobile, medan parametern till metoden equals i metoden Object är Object. På grund av detta har vi alltså inte överskuggning. Objektorienterad programmering fk 13 Föreläsning 2
14 Överlagring ett exempel Klassen Automobile, har två metoder med namnet equals - en deklarerad lokalt i klassen och en ärvd från Object. Dessa båda metoder är alltså överlagrade. Betrakta nedanstående kodavsnitt: Object o = new Object(); Automobile auto = new Automobile(); Object autoobject = new Automobile(); auto.equals(o); auto.equals(auto); auto.equals(autoobject); Kan du för vart och ett av de tre anropen av equals i koden ovan tala om ifall det är den lokala metoden i klassen Automobile som kommer att exekveras eller om det är den ärvda metoden från Object? Objektorienterad programmering fk 14 Föreläsning 2
15 Överlagring hur fungerar det Vilken metod som skall exkveras avgörs av den deklarerade typen på objektet som skickar anropet och på de deklarerade typerna på argumenten som skickas i metoden. När kompilatorn ser ett anrop t.ex. auto.equals(o) händer följande: 1. Kompilatorn tar reda på vilken deklarerad typ auto har. 2. Kompilatorn tittar i den aktuella i klassen (eller interfactet) och i dess superklasser (eller superinterface) efter alla metoder med namnet equals. 3. Kompilatorn tittar på parameterlistorna för dessa metoder och väljer den parameterlista vars typer bäst överensstämmer med de deklarerade typerna som skickas i det aktuella anropet. I anropet auto.equals(o), är auto av typen Automobile och o av typen Object. Parametertypen för den lokala equals-metoden i klassen är Automobile och är således to narrow, eftersom denna är av typen Automobile. Således väljs equals-metoden som har en parameter av typen Object. Objektorienterad programmering fk 15 Föreläsning 2
16 Överlagring hur fungerar det Vid runtime skall metoden med den signatur som kompilatorn valt letas upp. Sökningen startar i den aktuella klassen för objekt som skickar anropet. Har denna klass ingen sådan metod genomsöks kedjan av klassens superklasser tills metoden påträffas. I vårt fall påbörjas sökningen i klassen Automobile och metoden påträffas i klassen Object, således är det denna metod som kommer att exekveras. För anropet auto.equals(auto) kommer equals-metoden i klassen Automobile att väljas, eftersom denna metod har en parametera av typen Automobile (d.v.s.samma typ som den aktuella parametern auto i anropet). För anropet auto.equals(autoobject) är parametern autoobject deklarerad som Object och metoden equals i klassen Object väljs (pga av samma orsaker som var fall för anropet auto.equals(o) ovan). Notera att de aktuella typerna på argumenten i metodanropet inte påverkar vilken metod som väljs, eftersom metoden väljs vid kompileringen. De aktuella typerna på argumenten beaktas endast vid exekveringen. Objektorienterad programmering fk 16 Föreläsning 2
17 Fråga: Vilken metod väljs i nedanstående anrop o.equals(o) (1) o.equals(auto) (1) o.equals(autoobject) (1) autoobject.equals(o) (1) autoobject.equals(auto) (1) autoobject.equals(autoobject) (1) Objektorienterad programmering fk 17 Föreläsning 2
18 Överskuggning Låt oss nu införa metoden public boolean equals(object o) (3) i klassen Automobile. Detta innebär att klassen Automobile överskuggar metoden som ärvs från klassen Object. Object +equals(o:object): boolean Automobile +equals(o:automobile): boolean +equals(o:object): boolean Vad inträffar nu för de nio olika anropen vi diskuterade ovan? Object o = new Object(); Automobile auto = new Automobile(); Object autoobject = new Automobile(); auto.equals(o); (3) auto.equals(auto); (2) auto.equals(autoobject); (3) o.equals(o); (1) o.equals(auto); (1) o.equals(autoobject); (1) autoobject.equals(o); (3) autoobject.equals(auto); (3) autoobject.equals(autoobject); (3) Objektorienterad programmering fk 18 Föreläsning 2
19 Åtkomstmodifierare När man säger att en subklass ärver all data och alla metoder från sin superklass, betyder nödvändigtvis inte detta att subklassen direkt kan få access till all data och alla metoder i superklassen. I Java finns fyra olika synlighetsmodifierare: public protected utelämnad private tillåter access för alla andra klasser. tillåter access för alla andra klasser i samma paket och för subklasser i andra paket. tillåter access för alla andra klasser i samma paket. tillåter access endast inom klassen själv. När skall man använda protected- eller paketåtkomst? En bra tumregel är aldrig, eftersom den interna implementationen exponeras. Ett undantag är när man har ett paket som utgör en integrerad komponent, då kan det ibland på grund av effektivitetsorsaker vara meningsfullt. Dock kan en förändring i en klass kräva förändringar i andra klasser i paketet, men förändringarna är begränsade till paketet. Objektorienterad programmering fk 19 Föreläsning 2
20 Åtkomstmodifierare Om man vill göra klassen så generellt återanvändningsbar som möjligt, så måste man förutse att subklasser till klassen kanske vill förändra datat. Men subklasser kan inte ändra ärvd data om den är privat och det endast finns publika getter-metoder. Lösningen är att deklarera setter-metoderna i klassen som protected: public class SSNWrapper { private int socialsecuritynumber; private SSNWrapper(int ssn) { socialsecuritynumber = ssn; } public int getssn() { return socialsecuritynumber; } protected void setssn(int ssn) { socialsecuritynumber = ssn; } } public class SettableSSNWrapper extends SSNWrapper { public SettableSSNWrapper(int ssn) { super(ssn); } public void setsnn(int ssn) { super.setssn(ssn); } } Objektorienterad programmering fk 20 Föreläsning 2
21 Inkapsling Antag att vi har en klass som använder publika instansvariabler //-- Bad code --// public class Day { public int year; public int month; public int date; public Day(int ayear, int amonth, int adate) { } public int getyear() {...} public int getmonth() {...} public int getday() {...}... } En programmerare som använder klassen Day har i ett program skrivit koden Day d = new Day(2009, 10, 30);... int month = d.month; Vad händer som man bestämmer sig för att byta implementation i klassen Day, t.ex. att avbilda en dag som ett Julianskt datum? Objektorienterad programmering fk 21 Föreläsning 2
22 Inkapsling Ny implementation av klassen Day: //-- Bad code --// public class Day { public int julian; public Day(int ayear, int amonth, int adate) { } public int getyear() {...} public int getmonth() {...} public int getday() {...}... } Oförändrad kod i användarprogrammet Day d = new Day(2009, 10, 30);... int month = d.month; kommer nu att rendera i ett fel! Komponenten d.month finns inte längre. Objektorienterad programmering fk 22 Föreläsning 2
23 Inkapsling Använd aldrig synliga instansvariabler. En förändring i tillståndet hos ett objekt skall endast kunna ske via en publik metod. Om instansvariablerna i klassen Day är inkapslade public class Day { private int year; private int month; private int date; public Day(int ayear, int amonth, int adate) { } public int getyear() {...} public int getmonth() {...} public int getday() {...}... } måste koden i föregående exempel skrivas Day d = new Day(2009, 10, 30);... int month = d.getmonth(); Detta innebär att det är möjligt att byta implementation i klassen Day utan att program som använder klassen behöver förändras. Slutsats: Gör alla instansvariabler privata. Objektorienterad programmering fk 23 Föreläsning 2
24 Accessorer och Mutatorer Vi gör en konceptuell skillnad mellan metoder som förändrar tillståndet i ett objekt (mutator methods) och metoder som endast läser av värdet av en instansvariabel (accessor methods). En klass som inte har några mutator-metoder är en ickemuterbar (immutable) klass. Klassen String är ett exempel på en icke-muterbar klass. Objektorienterad programmering fk 24 Föreläsning 2
25 Accessorer och Mutatorer Klassen Day public class Day { private int julian; public Day(int ayear, int amonth, int adate) {...} public int getyear() {...} public int getmonth() {...} public int getday() {...} public Day adddays(int n) {...} public int daysfrom(day other) {...} } är icke-muterbar. Skall vi lägga till metoderna public void setyear(int ayear) public void setmonth(int amonth) public void setdate(int adate) i klassen Day? Objektorienterad programmering fk 25 Föreläsning 2
26 Accessorer och Mutatorer Antag att klassen Day har mutator-metoderna public void setyear(int ayear) public void setmonth(int amonth) public void setdate(int adate) och man i ett användarprogram ger koden Day firstddeadline = new Day(2010,1, 1); firstdeadline.setmonth(2); Day seconddeadline = new Day(2010,1, 31); seconddeadline.setmonth(2); Vad händer? Objektet seconddeadline hamnar i ett ogiltigt tillstånd, eftersom 31/2 inte är ett giltigt datum! Slutsats: Tillhandahåll inte slentrianmässigt set-metoder för alla instansvariabler! Objektorienterad programmering fk 26 Föreläsning 2
27 Accessor eller mutator När man har en klass som både har access-metoder och mutator-metoder är det en god ide att hålla dessa båda roller isär. En metod som returnerar information om ett objekt, dvs en access-metod, skall inte ändra tillståndet hos objektet, dvs samtidigt vara en mutator-metod. En mutator-metod skall inte returnera information om objektet, dvs metoden skall vara en void-metod. The Commmand-Query Separation principle: En metod är antingen en accessor eller en mutator, inte både och. Objektorienterad programmering fk 27 Föreläsning 2
28 Accessor eller mutator Det finns många exempel på klasser i Javas standardbibliotek som inte följer denna princip. Scanner sc = new Scanner("token1 token2 token3"); String t = sc.next(); Metod next() returnerar nästa token. Metoden är således en accessor, men metoden förändrar även tillståndet i hos Scanner-objektet. Nästa gång man anropar metoden next() får man en annan token. Således är metoden också en mutator. Varför konstruktörerna gjort som de gjort, kan de endast själva svara på. I klassen Stack finns en metod pop som både returnerar och tar bort det översta elementet på stacken. I detta exempel kan man dock säga att orsaken är att metoden pop() med detta beteende är vedertagen praxis. Klassen Stack har dock även en metod peek() som returnerar det översta värdet på stacken. Slutsats: Överallt där det är möjligt skall en metod antingen vara accessor eller mutator. Det är okey att ur bekvämlighetssynpunkt för användaren låta en mutator returnera ett värde, men då skall det även finnas en accessor som returnerar samma värde utan att objektets tillstånd förändras. Objektorienterad programmering fk 28 Föreläsning 2
Föreläsning 4 Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder
Föreläsning 4 Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder Grundbegreppen i objektorienterad design Encapsulation Abstraction & Information Hiding Composition
Läs merFöreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder
Föreläsning 4 Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder Statiska och dynamiska typer Den deklarerade typen hos en variabel är variabelns statiska typ.
Läs merFöreläsning 4. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder. Abstraction & Information Hiding
Föreläsning 4 Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder Grundbegreppen i objektorienterad design heritance Encapsulation Abstraction & Information Hiding
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Läs mer2I1049 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 merOutline. 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 merInnehå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 merFö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 merKlasshierarkier - 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 merF8 - 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 merUML. 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 merOOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Läs merOutline. 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 merStatic vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018
Static vs Dynamic binding Override vs Overload Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Quiz: Gissa typen? Object o = new Square(100,100); Polygon p =
Läs merObjektorienterad 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 merObjektorienterad 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 merTDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 1 Introduktion Variabler och typer Objektorienterad programmering fk 1 Föreläsning 1 Olika nivåer av programdesign Det är användbart
Läs merGrundlä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 merFö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 merArv. 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 merTDDC30. 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 merInstuderingsuppgifter läsvecka 2
Instuderingsuppgifter läsvecka 2 1. 2. 3. 4. 5. 6. 7. 8. 9. En referensvariabel har både en statisk typ och en dynamisk typ. Förklara dessa båda begrepp! Förklara begreppet polymorfism. Förklara hur statisk
Läs merDAT043 - 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 merObjektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim
Objektorienterad programmering Föreläsning 12 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till Arv Superklasser och Subklasser Dolda medlemmar (new och base) Statisk
Läs merFö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 merF9 - 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 merArv: 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 merFöreläsning 6. Använd beskrivande namn
Använd beskrivande namn Föreläsning 6 Eleganta metoder Separation of concern Command-Query Separation Principle Assertions Kontraktbaserad design Självdokumenterande kod Använd metodnamn som indikerar
Läs merOutline. 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 merObjektorienterad 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 merPolymorfi. Objektorienterad och komponentbaserad programmering
Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende
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
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 merIdag. 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 merTDDE10 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 merTDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Arv Polymorf UML (klassdiagram) 1 Arv Möt tre studenter
Läs merDAT043 - 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 merArv 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 merTentamen ID1004 Objektorienterad programmering December 15, 2012
Ordinarie tentamen för ID1004 Objektorienterad programmering, 15 december 2012, 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 merClasses 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 merTDDE10 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 merOOP 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 merKopiering 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 merKonstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Läs merIntroduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Läs merSubtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016
Subtyping, co- och contra-variance Objekt-orienterad programmering och design Alex Gerdes, 2016 Typer Java har två sorters typer primitiva typer och referens-typer. Primitiva typer är typer för värden:
Läs merSubklasser 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 merAbstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt
Läs merAbstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object
Läs merObjekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
Läs merLaboration 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 merKlasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
Läs merObjektorienterad 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 merEtt 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 merIntroduktion. 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 merClasses 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 merKort 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 merOutline. 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 merTENTAMEN 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 merTyphierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser Hur används hierarkier för att modellera nära relaterade typer? Nu:
Läs merProgrammering 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 merTDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 2 Vad krävs? Hur fungerar det? Hur får en subtyp fungera egentligen? Krav på hierarkier 1 3 Får subtypen LinkedList sakna metoder från
Läs merFö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 merTDDC30. 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 merInkapsling 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 merModeller, 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 merLö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 merBegreppet 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 merLÖ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 merObjektorienterad 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 merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Läs merFö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 merRekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254
Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java
Läs merI 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 merTentamen ID1004 Objektorienterad programmering May 29, 2012
Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga
Läs merFö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 merInnehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {
Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet
Läs merLösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Läs merTDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
Läs merVad ä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 merImperativ 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 merObjektorientering. 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 merTENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Läs merF12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
Läs merObjektorienterade 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 merIdag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Läs merTentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
Läs merProgrammering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42
Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser
Läs merArv och polymorfism i Java
1 (5) Arv och polymorfism i Java Objektorienterad programmering 5 Syfte Att ge en introduktion till arvsmekanismen i Java. Mål Efter övningen skall du kunna definiera klasser med arv i Java. förstå hur
Läs merpublic 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 merFö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 merIdag. 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Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!
Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar
Läs merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merObjektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Läs merLä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 merGrundkurs 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 merObjektorienterad 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 merTDDE10 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