TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer
|
|
- Henrik Lundberg
- för 7 år sedan
- Visningar:
Transkript
1 TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 1 Introduktion Variabler och typer Objektorienterad programmering fk 1 Föreläsning 1
2 Olika nivåer av programdesign Det är användbart att särskilja mellan olika perspektiv eller nivåer av mjukvarudesign: konceptuell specifikation implementation Under grundkursen låg fokus på implementationsnivån. Skall i denna kurs även beakta specifikationsnivån. Objektorienterad programmering fk 2 Föreläsning 1
3 Utmaningen med utveckling av mjukvarusystem När man utvecklar ett mjukvarusystem finns en rad krav och önskemål som skall uppfyllas. Vi vill åstadkomma ett system som: är färdigutvecklat på utsatt tid och inom givna budgetramar uppfyller sin uppgift så bra som möjligt är så enkelt att använda som möjligt har tillräckligt höga prestanda är felfritt är robust är så enkelt att underhålla som möjligt är så enkelt att modifiera som möjligt är så enkelt att bygga ut som möjligt är så enkelt att implementera som möjligt är så återanvändbart som möjligt... Objektorienterad programmering fk 3 Föreläsning 1
4 Utveckling av mjukvarusystem Det är inte ovanligt att ett programsystem består av miljontals rader kod och att 100-tals programmerare varit delaktiga i att skriva koden. Ingen enskild person kan vara insatt i och förstå alla enskilda delar i så stora system. Att ett programsystem skall vara lätt att underhålla är en mycket viktig egenskap! fel i den ursprungliga mjukvaran måste fixas mjukvaran måste anpassas till nya användarkrav den som ändrar i koden är är sällan eller aldrig den som ursprugligen skrivit koden största delen av pengarna och tiden under ett systems livstid åtgår till detta (ca 80%). Utveckla för förändring! Detta kommer att vara en ledstjärna under kursen. Objektorienterad programmering fk 4 Föreläsning 1
5 Utveckla för förändring Det finns många faktorer som som bidrar till hur lätt eller svårt ett system är att underhålla. Några viktiga aspekter att beakta är: Läsbarhet. En förutsättning för underhåll är att koden kan läsas och förstås. Enkelhet. Ett enkelt system är lättare att implementera och få felfritt. Flexibilitet. Innebär att ett system är lätt att ändra i. Objektorienterad programmering fk 5 Föreläsning 1
6 Grundläggande designprinciper Nedan ges en lista på saker som är viktiga för att åstadkomma programsystem som är lätta att underhålla: Enhetlig kodstil. Minskar risken för fel och underlättar förståelsen av koden. Genomtänkt namngivning. Ett namn skall avspegla vilken roll en entitet har. Dokumentation. Oavsett hur bra design en mjukvara har är den värdelös utan dokumentation. Modularitet. Ett system skall brytas ned till en samling sammanhängande men löst kopplade moduler. Abstraktion. Inkapsling. Abstrahera bort implementationsdetaljer Decoupling. Minimera beroenden mellan klasser, minimera beroenden av specifika typer. Delegering.Skicka vidare uppgifter till de klasser som är bäst lämpade att göra arbetet. Designmönster. Best practices. Återanvändning av kod. Objektorienterad programmering fk 6 Föreläsning 1
7 Complexity is your enemy Mycket i programmering handlar om att reducera komplexiteten hos den mjukvara som utvecklas. Objektorientering är en metodik som utvecklats specifikt för att reducera komplexiteten i mjukvarusystem. Komplexitet i ett program handlar inte om hur bra ett program går att köra på datorn, utan helt och hållet om hur lätt det är att läsa och förstås av människor. Miller's Law: A person can only keep 7 plus or minus 2 items in mind at one time. Man måste försöka reducera komplexiten på alla nivåer i utvecklingsarbetet, allt ifrån när man designar den övergripande systemarkitekturen till när man väljer ett variabelnamn. Man måste hela tiden vara medveten om problemet med komplexitet och lära sig best practices för hur komplexitet skall hanteras. Objektorienterad programmering fk 7 Föreläsning 1
8 Kodstil och namngivning För att underlätta för andra att läsa den kod du utvecklar skall du använda en kodkonvention. Lämpligen En av de viktigaste aspekterna på kodkonvention berör namngivning. Identifierarnamnen måste väljas mycket omsorgsfullt. Namnet är det första läsaren ser och skall vara en ledtråd för att förstå vad identifieraren representerar och vilken uppgift den har. Klasser: Namnen är oftast substantiv, t.ex Date, BankAccount och Car. Interface: Namnen slutar ofta på able, t.ex Cloneable och Comparable. Metoder: Namnen skall vara ett verb eller innehålla ett verb, t.ex. print, setsize, isvisible och getsize. Variabler: numberofmembers och loadingdone är bra namn. thenumberofthreadsintheapplicationrunningrightnow, nt, notyetdone och done är dåliga namn. Använd engelsk namngivning. Objektorienterad programmering fk 8 Föreläsning 1
9 Principer för OOP (Alan Kay) Allt är ett objekt (dvs alla datastrukturer representeras som objekt). Ett program är en samling objekt. Objekten kommunicerar genom att skicka meddelanden till varandra. Varje meddelande är en begäran om en handling (aktion) som ska utföras. Varje objekt har sitt eget minne. Ett objekt kan bestå av andra objekt. Varje objekt tillhör en klass. En klass representerar ett visst beteende alla objekt som är instanser av samma klass kan utföra samma aktioner. Klasser organiseras i en trädliknande arvshierarki. En klass ärver beteende och datastrukturer från tidigare klasser. Objektorienterad programmering fk 9 Föreläsning 1
10 Objekt i Java Java är ett objektorienterat språk: program skapar objekt o = new SomeClass(); program anropar metoder i objekt o.somemethod(); program hämtar värden i objekt-variabler x = o.somefield; program lägger nya värden i objekt-variabler o.samefield = 5; Om nu Java är objektorienterat, var har vi objekten i programmet? Objektorienterad programmering fk 10 Föreläsning 1
11 Exempel Vilka uttryck i detta program beräknas till objekt? //-- Bad code, only used for illustration --// public class NumberList { int num; NumberList next; public NumberList(int i, NumberList nl) { num = i; next = nl; } } public class TestNumList {... public void somemethod() {... NumberList nl_1 = new NumberList(52, null); NumberList nl_2 = new NumberList(71, nl_1); NumberList nl_3 = nl_2.next; nl_2.next.num = 22; int x = nl_3.num; } } Objektorienterad programmering fk 11 Föreläsning 1
12 Referensvariabler Det finns inga Java-uttryck som är objekt. Istället hanterar Java-program referenser till objekt. referensvariabel objekt-referens objekt variabel1 värde variabel2 värde Objektorienterad programmering fk 12 Föreläsning 1
13 Åter till exemplet NumberList nl_1 = new NumberList(52, null); NumberList nl_2 = new NumberList(71, nl_1); NumberList nl_3 = nl_2.next; nl_2.next.num = 22; x = nl_3.num; Uttryck som beräknas till primitiva värden: nl_3.num Uttryck som beräknas till objekt-referenser: null new NumberList(52, null) nl_1 new NumberList(71, nl_1) nl_2 nl_2.next nl_3 Värden av uttryck: primitiva värden eller objektreferenser, aldrig objekt. Objektorienterad programmering fk 13 Föreläsning 1
14 Vad spelar det för roll Skillnaden mellan ett objekt och dess referens är mycket viktig, då det gäller: exekvering typer frågan om olika alias frågan om dynamisk bindning frågan om olika typer för objekt och deras referenser Objektorienterad programmering fk 14 Föreläsning 1
15 Beräkningarna i vårt exempel NumberList nl_1 = new NumberList(52, null); nl_1 num: 52 next: null NumberList nl_2 = new NumberList(71, nl_1); nl_1 nl_2 num: 71 next: num: 52 next: null NumberList nl_3 = nl_2.next; nl_1 nl_3 nl_2 num: 71 next: num: 52 next: null nl_2.next.num = 22; nl_1 nl_3 nl_2 num: 71 next: num: 22 next: null Objektorienterad programmering fk 15 Föreläsning 1
16 Alias Två eller flera referenser till samma objekt kallas alias. nl_1 nl_3 nl_2 num: 71 next: num: 22 next: null Allt som görs via en referens påverkar alla alias till denna referens. Risken att göra fel är stor. Man måste därför vara mycket noggrann när man använder alias. Objektorienterad programmering fk 16 Föreläsning 1
17 Objekt kontra referenstyper Java skiljer mellan typen av en objektreferens och typen av (det refererade) objektet. Exempel: public class SomeClass implements someinterface{... } Betrakta nu: SomeInterface si = new SomeClass(); typ: SomeInterface typ: SomeClass Variabeln si och objektet si refererar till har olika typer! Både typen av objektet och typen av dess referens är signifikanta på olika sätt. Innebär: Viktigt att förstå typer i Java. Objektorienterad programmering fk 17 Föreläsning 1
18 Typer i Java Java är ett starkt typat språk. Om programmet kompilerar skall man inte under körning kunna få några fel som beror på typer. Medför att vi i stor utsträckning slipper i från problem med fel sort. Typinformationen används vid två olika tillfällen vid kompilering (compile time) och vid körning (run time). Java är utvecklat för att vara typsäkert, d.v.s. de operationer man skall kunna utföra på datat i programmet skall bara vara de som anges av typen. Den statiska typinformationen används vid själva kompileringen, efter kompileringen är den borta (det finns inga int, double, i.class-filen). Förklaringen till varför saker är som de är bottnar ofta i typsäkerheten. Objektorienterad programmering fk 18 Föreläsning 1
19 Typer i Java Java har två olika sorters typer: Primitiva typer, dessa är inbyggda.vi kan inte ändra eller skapa nya primitiva typer. Referenstyper, vi kan skapa nya typer. float Primitive Types Numeric Types Floating-Point Types double boolean returaddress Integral Types byte short Reference Types reference class types interface types int long char array types Objektorienterad programmering fk 19 Föreläsning 1
20 Värde eller referens? Att det finns två olika sorters typer får följder för betydelsen av språkliga konstruktioner. Värdesemantik (by value). Inget delat tillstånd, dvs kopior saknas. Primitiva datatyper. Referenssemantik (by referencs). Tillståndet kan vara delat (d.v.s. det kan finnas alias). Referenstyper. Återkommande frågeställning: Har vi värde- eller referenssemantik? Objektorienterad programmering fk 20 Föreläsning 1
21 Typomvandling (casting) Typsystemet behöver inte vara hur strikt som helst, att t.ex. använda en long istället för en int innebär aldrig någon fara. Det finns ett stort antal regler för vilka typer som får användas istället för en given typ, kallas typkompabilitet. Kompilatorn känner till dessa regler och utför vid behov implicita typomvandlingar. Exempel på godtagbara omvandlingar på primitiva typer är mindre till större (i bytes) och heltal till flyttal (kallas widening): char int float long -> int -> float -> double -> float Gör vi tvärsom riskerar vi att tappa information, kallas (narrowing): (int) double (double) long Återkommande frågeställning: Är typerna kompatibla? Går det att omvandla A till B utan att typsäkerheten bryter samman. Objektorienterad programmering fk 21 Föreläsning 1
22 Explicit typomvandling Vi kan säga åt kompilatorn att inte kontrollera en viss sak, t.ex. Object o =...; String s = (String) o; Vi gör en explicit typomvandling. Eftersom vi här säger att o är av typen String, så kontrollerars inte detta. Ansvaret är vårt! Förhoppningsvis stämmer det, annars exekveringsfel. Explicita typomvandlingar innebär alltid en risk! Sätter typcheckningen ur spel. Kan leda till fel vid runtime. si Undvik! För att kontrollera att tilldelning och explicit typomvandling är möjlig (dvs. bibehåller typsäkerheten) kan man använda instanceof-operatorn. Men även detta bör undvikas. Object o =...; if (o instanceof String) String s = (String) o; Typomvandlingar mellan helt oreleterade typer (inget superklass/subklass förhållande) är inte tillåtet. Objektorienterad programmering fk 22 Föreläsning 1
23 Definiera nya typer Det finns två standardsätt i Java att definiera nya typer: klasser interface Varje klass C introducerar en typ C. Uppsättningen publika metoder som klassen C tillhandahåller utgör mängden operationer för typen C. Alla instanser av klassen C eller av subklasser till C utgör mängden av objekt för typen C. Till exempel definierar klassen Person, nedan, en typ Person som har operationerna getname() och getbirthdate(). Person -name: String -birthdate: Date +getname(): String +getbirthdate(): Date Det andra sättet att skapa typer i Java är att använda interface. Ett interface kan ses som en namngiven mängd av operationer. Alla objekt vars klasser explecit implementerar interfacet bildar mängden av objekt för typen. Objektorienterad programmering fk 23 Föreläsning 1
24 Interface public interface Runnable { public void run(); } Operationerna i typen Runnable består endast av metoden run(). Mängden av objekt i typen Runnable består av alla objekt av alla klasser som implementerar Runnable. Om t.ex. klasserna SlowRunner och FastRunner implementerar Runnable tillhör objekten i typerna SlowRunner och FastRunner typen Runnable. <<interface>> Runnable run() SlowRunner run() FastRunner run() Notera alltså att ett objekt av en subklass S till klassen T tillhör både typ S och typ T. Runnable thewinner = new FastRunner(); Runnable theloser = new SlowRunner(); Objektorienterad programmering fk 24 Föreläsning 1
25 Klassen Object Eftersom alla klasser är subklasser till klassen Object tillhör alltså ett objekt av typerna SlowRunner och FastRunner även typerna Runnable och Object. <<interface>> Runnable Object run() SlowRunner run() FastRunner run() Det finns en speciell relation mellan typen av en subklass och typen av superklassen, eftersom subklassen till en klass definierar en subtyp till superklassens typ. Om S är en subtyp till T, så är mängden av objekt i typen S en delmängd till mängden av objekt i typen T och mängden operationer i typen T är en delmängd till mängden operationer i typen S. Dessutom måste alla operationer i typen T också finnas i typen S. Objektorienterad programmering fk 25 Föreläsning 1
26 Polymorfism Java tillåter att man till en variabel av typen 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 legalt att användas varhelst ett objekt av 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 26 Föreläsning 1
Föreläsning 3 Arvsmekanismen Variabler och typer Typer och subtyper
Föreläsning 3 Arvsmekanismen Variabler och typer Typer och subtyper Grundbegreppen i objektorienterad design Encapsulation Abstraction & Information Hiding Composition Nested Objects Distribution of Responsibility
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
Föreläsning 3. UML Arvsmekanismen Variabler och typer Typer och subtyper. Vad är UML?
Föreläsning 3 UML Arvsmekanismen Variabler och typer Typer och subtyper Vad är UML? Unified Modeling Language (UML) är ett modelleringsspråk för att beskriva olika aspekter av objektorienterade system.
Föreläsning 3. UML Arvsmekanismen Variabler och typer Typer och subtyper. Vad är UML?
Föreläsning 3 UML Arvsmekanismen Variabler och typer Typer och subtyper Vad är UML? Unified Modeling Language (UML) är ett modelleringsspråk för att beskriva olika aspekter av objektorienterade system.
Introduktion. Grundkursen
Föreläsning 1 Introduktion Utveckla för förändring 1 Grundkursen I grundkursen fick ni: lära er de grundläggande principerna för objektorienterad programmering lära er de grundläggande konstruktionerna
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:
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018
Subtyping och variance Objekt-orienterad programmering och design Alex Gerdes, 2018 Typer Java har två sorters typer primitiva typer och referens-typer. Primitiva typer är typer för värden: int, float
Föreläsning 1. Introduktion Utveckla för förändring
Föreläsning 1 Introduktion Utveckla för förändring Grundkursen I grundkursen fick ni: lära er de grundläggande principerna för objektorienterad programmering. lära er de grundläggande konstruktionerna
Static 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
Objektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility
Föreläsning 3 Encapsulation UML Arvsmekanismen Composition Variabler och typer Typer och subtyper Distribution of Responsibility Message Passing Grundbegreppen i objektorienterad design Inheritance Encapsulation
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
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
Föreläsning 1 Introduktion Utveckla för förändring
Föreläsning 1 Introduktion Utveckla för förändring Grundkursen I grundkursen fick ni: lära er de grundläggande principerna för objektorienterad programmering lära er de grundläggande konstruktionerna i
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Static 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 =
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
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
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
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
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
Encapsulation. Composition. Distribution of Responsibility. Message Passing. Inheritance. Föreläsning 3
Grundbegreppen i objektorienterad design Föreläsning 3 UML Arvsmekanismen Variabler och typer Typer och subtyper Encapsulation Composition Distribution of Responsibility Message Passing Abstraction & Information
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
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:
(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
TDDC30. 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
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
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
TDA550 - Objektorienterad programvaruutveckling, fk
Lösningsförslag: Övning vecka 2. Uppgift 1 Utskriften blir: a: Vector, b: Vector, c: Vector, x: 1 y: 2 z: 3 För detaljer se bilaga 1. Kommentarer:
F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
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
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018
Principles of subclasses Objekt-orienterad programmering och design Alex Gerdes, 2018 Implementation inheritance Subclassing, eller implementation inheritance (implementationsarv), ger oss två fördelar:
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
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
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
Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga
Historik: OOP Simula-67 Norge, 1967 Byggde på Algol-60, avsett för simulering Garbage collection, arv, klasser (inte olikt Java) Smalltalk, Alan Kay, Xerox, 70-tal Introducerade begreppet objekt-orienterad
Föreläsning 1. Introduktion Utveckla för förändring. Grundkursen. Programming in the small. Koncept som är kända från grundkursen (?
Föreläsning 1 Introduktion Utveckla för förändring Grundkursen I grundkursen fick ni: lära er de grundläggande principerna för objektorienterad programmering lära er de grundläggande konstruktionerna i
Static 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 =
OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson
OOP F1:1 Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning OOP Objekt-orienterad programmering Delkursansvarig: First Class-konferens: Kursens webbsidor:
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
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
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
Arv. Objektorienterad och komponentbaserad programmering
Arv Objektorienterad och komponentbaserad programmering Arv Regel nr 1: Ett objektorienterat språk ska tillåta inkapsling av data Regel nr 2: Ett objektorienterat språk ska tillåta arv Regel nr 3: Ett
OOP Objekt-orienterad programmering
OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första
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.
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
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)
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
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och
Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält
Föreläsning 2. Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 2 Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer Objektorienterad
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Fö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.
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Kursplanering Objektorienterad programmering
Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Parameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Objektorienterad programmering
Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development
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
Programmering = modellering
Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal
Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Implementation inheritance Subclassing, eller implementation inheritance (implementationsarv), ger oss
Objektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
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
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
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
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
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ö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:
Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018
Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018 Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh
Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?
När skall man använda implementationsarv? Föreläsning 5 När skall implementationsarv användas? The Open-Closed Principle (OCP) Liskov Substitution Principle (LSP) Implementationsarv är en konstruktion
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
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
Föreläsning 15: Repetition DVGA02
Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras
Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018
Introduktion och OO Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart? Testbart?
Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 9 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Fält Grunderna Fält med komponenter av struct-typ Fält med referenser Standardklassen
Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll
Mera om generik Begreppet subtyp/supertyp i Java Innehåll Wildcards Vektorer och generik Supertyper för en viss klass C är alla klasser från vilka C ärver och alla interface som klassen implementerar.
Generisk klass med typparameter Inre klass - ListIterator
Objektorienterad programmeringsmetodik Generics, clone Generics Återanvändning Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Vi vill ha metoder som fungerar på olika klasser
Tentamen Programmering fortsättningskurs DIT950
Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00
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
Innehå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
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
Personal Objektorienterad programmeringsmetodik 5DV081 5DV109
Personal Objektorienterad programmeringsmetodik 5DV081 5DV109 VT-10 Lärare Johan Eliasson (johane@cs.umu.se) Handledare Thomas Johansson Mikael Öhman Lucas Lindström 1 2 Här sitter vi MIT-huset våning
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.
Föreläsning 11 Arrayer Arrayer Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt int[] tal = new int[3]; Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen
Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016
Objekt-orienterad Programmering och Design TDA551 Alex Gerdes, HT-2016 Kursteamet Dr. Alex Gerdes kursansvarig, föreläsare Dr. Niklas Broberg examinator, (föreläsare) Fredrik Sjöholm handledare Johan Andersson
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar
Tentamen 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
Objektorienterad 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
Introduktion till Java
Översikt Introduktion till Java (del2) Vad är det som händer när man kör Java? Kompilator (före körning) Interpretator (under körning) Statisk vs. dynamisk variabelbindning Parameter-passing Call by value
Subtyping, 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: