Objektkonstruktion. Vilka sorter finns? Varför ärver vi? Aggregering ger en lösare koppling till delarna än komposition. 1nJUDÃJUXQGOlJJDQGHÃUHJOHU
|
|
- Alexander Bergqvist
- för 6 år sedan
- Visningar:
Transkript
1 'HVLJQDYREMHNW 6HSWHPEHUÃÃ +XUÃVNDSDUÃYLÃREMHNWÃRFKÃNODVVHU" 1nJUDÃJUXQGOlJJDQGHÃUHJOHU %M UQÃ(LGHUElFN 1$'$Ã.7+ (PDLOÃEMRUQH#QDGDNWKVH Innehåll Arv eller komposition/aggregering Cohesion och coupling Några mönster för att designa system Ett par tekniker för att identifiera klasser och attribut Vad är trenden då man bygger system idag?, F7 $JJUHJHULQJHOOHUNRPSRVLWLRQ Aggregering ger en lösare koppling till delarna än komposition Vid komposition försvinner delarna också om den som använder dem försvinner Vad är bäst aggregering eller komposition? Det beror återigen på Om man tex har en Person så kan denna samtidigt finnas i både ett telefonlist och en lista av låntagare på ett bibliotek Då vill vi att personen ska finnas kvar även om respektive lista rensas previous next previous next 4, F7 $UYHOOHUDJJUHJHULQJ" Vad är att föredra arv eller aggregering? Tumregeln är att använda arv om: Den nya klassen är en subtyp till en existerande, är-en Cirkel är en ellips Båt är en farkost För snabba prototyper, F7 $UY Arv är fundamentalt i objektorienterad programmering För att ett språk skall kallas objektorienterat så måste arv ingå som en möjlig väg att återanvända kod och beskrivningar I programspråksammanhang låter vi VXENODVVHU ärva både struktur och attribut från VXSHUNODVVHU dvs både variabler och metoder ärvs A 6KDSH position : Point bounds() :Rectangle draw() : void extent() : Point Annars bör man nog i första hand försöka med aggregering En personlista kan byggas mha av aggregering med hjälp av en Vector eller Collection (tex ArrayList) B E C D 6KDSH extent : Point draw() : void 6KDSH extent : Point draw() : void previous next 2 previous next 5, F7 $UY Vilka sorter finns? Varför ärver vi?, F7 DUY Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur Arv kan vara av olika typ Generalisering (eng. extension) subklassen är rikare än, eller en utvidgning av, superklassen Specialisering (eng. specialisation) subklassen är mer specialiserad än, eller ett specialfall av, superklassen Arv är transitivt Om A superklass till B och B superklass till C så ärver C attribut och beteende från både B och A previous next 3 previous next 6 %M UQ(LGHUElFN 1
2 , F7 Boolean Byte -DYDVEDVNODVV2EMHFW Klassen Object är överst i Javas klassträd Number Integer String 2EMHFW equals(obj : Object) : boolean tostring() : String getclass() : String Graphics Klassen Object med några subklasser och några viktiga metoder Component Button Label Container, F7 Arv för utvidgning Subklassen lägger till ny funktionalitet i förhållande till superklassen men förändrar inte existerande beteende En Egenskapslista kan implementeras genom att utvidga en HashTable (en hashad tabell med nyckel/värde-par) Arv för begränsning Subklassen inskränker superklassens beteende En MängdKlass kan implementeras som en "inskränkt" Vector Arv för kombination Subklassen ärver från mer än en superklass En Amfibiebil kan implementeras genom att kombinera en Bil med en Båt Window Panel previous next 7 previous next 10, F7 6XENODVVVXEW\SRFKHUVlWWEDUKHW Abstrakt datatyp Är en inkapsling av data och dom metoder som opererar på dessa data Subtyp En viss typ A är VXEW\S till en annan typ B omm A åtminstone erbjuder samma beteende som B och att A kan användas överallt där B kan användas utan att någon skillnad kan observeras Subklass En subklass ärver struktur och beteende från sina superklasser En subklass kan berika, inskränka eller förändra det ärvda beteendet från sina superklasser Ersättbarhet Ett objekt av typ A som är subtyp till typen B kan användas som om det vore av typ B eftersom det åtminstone uppvisar B:s beteende, F7 ([HPSHOROLNDW\SHUDYDUY Arv för specialisering Ellipse Circle Arv för specifikation Win95Window tank engine wheels() speed() Window MotorLandVehicle MacWindow Car Bike Lorry MotorCycle previous next 8 previous next 11, F7 2OLNDIRUPHUDYDUY Arv för specialisering subklassen är ett specialfall av superklassen, dvs subklassen är en subtyp till superklassen En Tandemcykel är en speciell sorts Cykel Arv för specifikation Superklassen specificerar beteende som inte är implementerat i superklassen men måste implementeras i dess subklasser Ett Fordon specificerar en Bil och Cykel Arv för konstruktion Subklassen utnyttjar superklassens beteende men är inte subtyp till superklassen En FigurGrupp kan implementeras mha av en Vector, F7 Arv för konstruktion Arv för utvidgning Arv för begränsning Polyline Vector Circle Vector Cartoon Stack Ellipse Set Arv för kombination Collection GraphicObject Car Boat GraphicComponent AmfibieCar previous next 9 previous next 12 %M UQ(LGHUElFN 2
3 , F7, F7 ) UGHODUPHGDUY 0HNDQLVPHUI UnWHUDQYlQGQLQJDYPMXNYDUD Återanvändning av mjukvara Enkelt att modifiera passande klass (på ett strukturerat sätt) Ökad tillförlitlighet Klasser i "bibliotek" som används av många blir hela tiden testade Delande av kod Likartade komponenter kan dela (stora delar) kod som kan beskrivas i gemensam superklass Överenstämmande gränssnitt Klasser som ärver från gemensam superklass överenstämmer troligare än om dom ärver från separata grenar Ersättbarhet Vi strävar efter att skriva programvara där vissa komponenter kan ersättas av andra utan att påverka några andra delar av systemet Är-en eller har-en Ofta användbar tumregel: använd arv då en komponent är-en (specialisering) av någon annan en tandemcykel är-en cykel, en bil är-ett fordon, en student är-en person använd komposition då en komponent har-en annan komponent som en av sina delar en bil har-en motor, en människa har-en vän Arv av kod eller arv av beteende Arv av gemensam klass bör väljas då kod och struktur delas Ett gränssnitt bör delas då specifikation av beteende men inte den egentliga koden delas previous next 13 previous next 16, F7, F7 RPSRVLWLRQHOOHUDUY Klassen Vector ser förenklat ut på följande sätt: class Vector{ public boolean isempty() {... public int size() {... public void addelement(object value) {... public Object lastelement() {... public Object removeelementat(int index) { Nu kan vi konstruera en stack genom att utnyttja Vector med Mjukvarukomponenter Arv gör det enkelt att konstruera återanvändbara komponenter Snabb konstruktion av prototyper Ofta snabbt att återanvända klasser och endast ändra det som skiljer Polymorfi och frameworks Genom polymorfi och arv är det relativt enkelt att beskriva systemstruktur och beteende på hög nivå vars detaljer sedan kan beskrivas av användarnas konkreta subklasser Inkapsling av information Ofta tillräckligt att känna till superklassens protokoll utan detaljer om dess implementation.rpsrvlwlrq $UY previous next 14 previous next 17, F7, F7 RVWQDGHUI UDUY Exekveringshastighet Viss extra kostnad för metoduppslagning Programstorlek Programbibliotek ger ofta mer binärkod än specialdesignade klasser Programkomplexitet Kod skriven med djupa arvshierarkier ger ofta komplexa strukturer med svårgripbara programflöden Jo-Jo-problemet: där metoder än i superklasser än i subklasser används om vartannat NRPSRVLWLRQ 6WDFN isempty() : boolean push(v : Object) : void peek(): Object pop() : Object Stack() : Stack data 9HFWRU previous next 15 previous next 18 %M UQ(LGHUElFN 3
4 , F7, F7 NRPSRVLWLRQ $UYHOOHUNRPSRVLWLRQ" class Stack{ SURWHFWHGÃ9HFWRUÃGDWD public Stack() {GDWD = new Vector(); public boolean isempty() {return GDWD.isEmpty(); public void push(object v) {GDWD.addElement(v); public Object peek() {return GDWD.lastElement(); public Object pop(){ Object result = peek(); GDWD.removeElementAt(GDWD.size() - 1); return result; Arv ger implicit (eller explicit) antagande om ersättbarhet Subklasser antas vara subtyper Detta "antagande" gäller inte för komposition Komposition är enklare än arv Komposition anger mer tydligt vilka operationer som kan tillämpas på en viss klass Vid arv är subklassernas mängd av operationer en supermängd av superklassens mängd av operationer Programmeraren måste undersöka superklassen för att ta reda på vilka operationer som är legala för subklassen Arv ger kortare beskrivningar än komposition Arv förhindrar inte manipulation av den nya strukturen via ("illegala") operationer i superklassen previous next 19 previous next 22, F7, F7 DUY 9HFWRU Komposition döljer implementationsdetaljer mer än vad arv gör Det är enkelt att ersätta en viss struktur med en annan En stack kan använda en vektor, byta till en länkad lista eller använda sig av en databas 6WDFN Vid arv har subklasser tillgång till alla icke privata fält i superklassen medan man vid komposition endast har tillgång till publika fält push(v : Object) : void peek(): Object pop() : Object Arv låter oss använda den nya abstraktionen som argument i en polymorf funktion previous next 20 previous next 23, F7, F7 DUY class 6WDFNÃH[WHQGVÃ9HFWRU{ public void push(object v) {addelement(v); public Object peek() {return lastelement(); public Object pop(){ Object result = peek(); removeelementat(size() - 1); return result; Vid arv får vi kortare kod än vid komposition. Därmed blir koden mer överskådlig. Å andra sidan är gränssnittet mer tydligt vid komposition Vid arv måste man fråga sig: Vilka delar av den ärvda koden är tänkt att användas? Vilka delar är nödvändiga eller riskabla att initiera respektive förändra? En implementation med arv har en liten fördel i exekveringstid Ett extra funktionsanrop behövs vid komposition previous next 21 previous next 24 %M UQ(LGHUElFN 4
5 , F7, F7 &RKHVLRQ När man pratar om cohesion pratar man om hur sammanhållen i viss komponent, eller ett antal komponenter i ett system, är. Med hög cohesion menas att komponenten gör ett väldefinierat sammahållet arbete.diihnrnduqãeu\jjhuãndiihãphqãvnlfnduãlqwhãid[ 1nJRWRPGHVLJQP QVWHU Ett designmönster beskriver lösningar på ett sätt så att mönstret kan användas i olika (snarlika) situationer Å(DFKÃSDWWHUQÃGHVFULEHVÃDÃSUREOHPÃZKLFKÃRFFXUVÃRYHUÃDQGÃRYHUÃDJDLQÃLQÃRXUÃ HQYLURQPHQWÃDQGÃWKHQÃGHVFULEHVÃWKHÃFRUHÃRIÃWKHÃVROXWLRQÃWRÃWKDW SUREOHPÃLQÃ VXFKÃDÃZD\ÃWKDWÃ\RXÃFDQÃXVHÃWKLVÃVROXWLRQÃDÃPLOOLRQÃWLPHVÃRYHUÃZLWKRXWÃHYHUÃ GRLQJÃLWÃWKHÃVDPHÃWZLFHÃÅ &KULVWRSKHUÃ$OH[DQGHUÃ Å$ÃGHVLJQÃSDWWHUQÃVLPSO\ÃFDSWXUHVÃWKHÃVDOLHQWÃFKDUDFWHULVWLFVÃÃRIÃDÃVROXWLRQÃWRÃD SUREOHPÃWKDWÃKDVÃEHHQÃREVHUYHGÃWRÃRFFXUÃUHSHDWHGO\ÃLQÃPDQ\ÃGLIIHUHQWÃSUREOHPÃ GRPDLQVÅ %XGGÃ Å$ÃGHVLJQÃSDWWHUQ SURYLGHVÃDÃVFKHPHÃIRUÃUHILQLQJÃWKHÃVXEV\VWHPVÃRUÃFRPSRQHQWVÃRIÃ DÃVRIWZDUHÃV\VWHPÃRUÃWKHÃUHODWLRQVKLSVÃEHWZHHQÃWKHPÃ,WÃGHVFULEHVÃDÃFRPPRQO\Ã UHFXUULQJÃVWUXFWXUHÃRIÃFRPPXQLFDWLQJÃFRPSRQHQWVÃWKDWÃVROYHVÃDÃJHQHUDOÃGHVLJQÃ SUREOHPÃZLWKLQÃDÃSDUWLFXODUÃFRQWH[WÅÃ*DPPDÃÉÃFRÃ previous next 25 previous next 28, F7 &RXSOLQJ Med coupling menas hur mycket olika komponenter beror av, eller är relaterade till, varandra, F7 9DUI UGHVLJQP QVWHU" 'RPÃHUEMXGHUÃH[SHUWNXQVNDS Man strävar efter att bygga system med så lite coupling mellan komponenterna som möjligt 'RPÃJHUÃRVVÃHQÃNUDIWIXOOÃYRNDEXOlU 9LÃI UVWnUÃSURJUDPV\VWHPÃVQDEEDUH RPÃGRPÃlUÃGRNXPHQWHUDGHÃ En strävan är att om ett objekt ändras så ska så få andra objekt som möjligt påverkas PHGÃGHVLJQP QVWHU 'RPÃI UHQNODUÃRPVWUXNWXUHULQJ DYÃV\VWHPÃXQGHUKnOO previous next 26 previous next 29, F7 *HQHUHOODNRGQLQJVUHJOHUHWWXUYDO Välj klass-, attribut- och metodnamn med omsorg Ingen duplicerad kod Skriv korta metoder (typiskt max fem rader kod per metod) Långa metoder är en signal till att något är fel och refactoring behövs Undvik case-satser Undvik villkorsatser (fundera åtminstone först...) Programmera mot interface Om det inte är en subtyp fundera på aggregering innan arv Fast då det är naturligt, vid prototyping eller om det redan finns färdiga klasser kan arv vara bäst Använd om möjligt Interface som typ (för parametrar, variabler, etc) previous next 27, F7 *5$63 I Larman diskuteras objektdesign i form av en uppsättning mönster General Responsibility Assignment Software Patterns (GRASP) previous next 30 %M UQ(LGHUElFN 5
6 , F7, F7 1nJUDP QVWHUIUnQ*5$63 Expert Creator /RZ&RXSOLQJ Hur bygger man ett system med där komponenterna inte är strakt beroende av varandra, förändringar i en del så lite som möjligt påverkar varandra och gör det möjligt att återanvänds så mycket som möjligt? Low Coupling High Cohesion Tilldela ansvar så att beroendet mellan objekten, kunskapen ett visst objekt har om (det inre av) ett annat är så liten som möjligt, dvs coupling är så liten som möjligt Se Larman 16.8 previous next 31 previous next 34, F7, F7 ([SHUW +LJK&RKHVLRQ Hur tilldelar man ansvar till objekt? Hur gör man systemets komplexitet så hanterbar som möjligt? Tilldela ansvaret till informationsexperten, dvs den klass som har nödvändig informationen för att lösa problemet Tilldela ansvar [åt klasserna] så att cohesionen blir så hög som möjligt. Dvs en klass/objekt skall helst bara göra en sak. Se Larman 16.6 Se Larman 16.9 previous next 32 previous next 35, F7, F7 &UHDWRU Vem ansvarar för att skapa nya instanser av en viss klass? Ge klassen B ansvaret för att skapa instanser av klassen A om: B aggregerar A-objekt B innehåller A-objekt B bokför instanser av A B använder A-objekt B har dom data som behövs för att initera A (B är en Expert i förhållande till A) 0RGXOlU'HVLJQ Redan innan objektorienterad programmering försökte man dela in ett system på olika moduler eller paket som gjorde (väldefinierat) olika saker Se Larman 16.7 previous next 33 previous next 36 %M UQ(LGHUElFN 6
7 , F7, F7 0 QVWUHW&RQWUROOHU Från 70-talsmönstret Model View Controller (MVC) (WWÃDQQDWÃVlWWÃlUÃ:LUIV%URFNVÃQRPLQDOIUDVVWUDWHJL Läs och förstå kravdokumentet. Målet är att hitta en modell som väl avspeglar den aktuella problemdomänen Grundidén är att separera logik, kontroll och presentation från varandra Läs igenom dokumentet igen. Titta speciellt efter nominalfraser. Skapa en preliminär lista av dessa fraser och ändra alla plural till singular Vi vill alltså att ett visst objekt ansvarar för kontrollen, dvs tar hand om händelser, tex från mus och tangentbord Dela nominalfraserna i tre kategorier: definitivt objekt, nonsensobjekt och möjliga objekt MVC är också pappa till massa andra mönster Två av dom mest kända är Observer Factory method CRC-kort previous next 37 Strunta i nonsenobjekten Diskutera "möjliga objekt" och placera vart ett av dom i någon av dom andra två kategorierna previous next 40, F7, F7 Vy Visualisera modellen Transformera koordinater Kontroll Modell Modell relaterad information Skicka ut meddelanden om förändringar Kontroll Tolka inmatning från användaren Fördela kontroll &5&NRUWÃI UÃÅ.ODVVLVNDÅÃ09& Vy Modell ([HPSHO Vi skall bygga ett datorsystem för ett universitetsbibliotek Några krav % FNHUÃRFKÃWLGQLQJDU. Biblioteket innehåller böcker och tidningar. Det kan finnas flera kopior av en given bok. Vissa böcker kan bara lånas på korttidslån. Alla andra böcker kan lånas av en lånekortsinnehavare i tre veckor. En lånekortsinnehavare kan normalt låna sex saker samtidigt, men anställda kan låna upp till 12 saker på en gång. Endast anställda får låna tidningar. /nq. Systemet måste hålla reda på när böcker och tidningar är lånade och tillbakalämnade under reglerna som beskrevs ovan. previous next 38 previous next 41, F7, F7 +XUÃKLWWDVÃNODVVHUÃRFKÃREMHNW" Vi har bla diskuterat användningsfall och scenarier som sätt att identifiera vad ett system skall göra Från dessa beskrivningar kan man hitta en del objekt i systemet (se Larman för detaljer och exempel) 2EMHNWGHVLJQLSUDNWLNHQ Från OOAD till XP Intresset för mer lättviktiga metoder som extreme Programming är stort Fast kanske inte riktigt än bland stora organisationer som fortfarande misslyckas med stil! (genom att använd RUP eller liknande...) Vi har också diskuterat CRC-kort som ett sätt att spåna fram klasser, ansvar och relationer CRC-kort Vi försöker brainstorma fram systemet Kan, självklart, kompletteras med en del UML-diagram ock liknande Senare i kursen kommer vi också diskutera designmönster som ett sätt att applicara återanvända och identifiera framgångsrika strukturer på olika designproblem Skriv tester först, designa lite, implementera det enklaste som fungerar, omstrukturera (eng. refactoring) Denna strategi har visat sig fungera bra H;WUHPHÃ3URJUDPPLQJÃ;3ÃUHIDFWRULQJÃWHVWQLQJÃPPÃ NRPPHUÃYLÃSUDWDÃPHUÃRPÃVHQDUHÃLÃNXUVHQ previous next 39 previous next 42 %M UQ(LGHUElFN 7
OOMPA 2D1359 Föreläsning 8
OOMPA 2D1359 Föreläsning 8 Innehåll Arv, polymorfi och gränssnitt Arv Subtyp, ersättbarhet Olika former av arv Polymorfi Abstrakta klasser och gränssnitt - 1 - Arv l Arv är fundamentalt i objektorienterad
..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ.
Arv, polymorfi och gränssnitt Innehåll 2203$ ) UHOlVQLQJ Arv Subtyp, ersättbarhet Olika former av arv Polymorfi Abstrakta klasser och gränssnitt..arv Arv kan delas in i två huvudtyper Arv för specifikation
OOMPA 2D1359 Föreläsning 2
OOMPA 2D1359 Föreläsning 2 Objektorienterad Modellering Programmering och Analys Objektorientering grunder l Vad är OO? Programspråk?, paradigm?, gränssnitt?, struktur?, eller? l Termer och fundament Objekt,
Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl
NADA, KTH OOMPA 1998-10-13 Sid 1 (8) Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl. 11-13 Inga hjälpmedel tillåtna. Poäng och betyg: För godkänt
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
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
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
Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla
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
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
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
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
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
Teoridel (svaren direkt på lydelsen)
ND, KTH 2D359 998-0-20 Sid (0) Tentamen i 2D359 Objektorinterad modellering programmering och analys Tisdag den 20 oktober 998 kl. 4-9 MED KORT LÖSNINGSFÖRSLG Inga hjälpmedel tillåtna. Poäng och betyg:
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
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
Tentamen i Objektorienterad modellering och design
Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram
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
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
Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.
Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv
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
Klasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
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
Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram
Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.
Föreläsning 2 Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys
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
Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Separation of Concern Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Modulär design Fördelar med välgjord modulär design: Lätt att utvidga Moduler går
Inkapsling (encapsulation)
UML UML är en standard för att dokumentera och visualisera sina tankar och beslut under analys och design. Att lära sig allt om UML får inte plats i den här kursen, men vi kommer lära oss vissa delar.
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
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
HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet
UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer
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
Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser
Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta
Tentamen i Objektorienterad modellering och design Helsingborg
Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng
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
Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design
RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign
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:
Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor
Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.
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
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
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
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:
Laboration 2: Designmönster
Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om
Objektorienterad konstruktion
Analys - Objektorienterad konstruktion Vad är objektorientering?» Ett sätt att angripa programmeringsproblem» Ett sätt att tänka när man programmerar Vad innebär objektorientering?» Att uppmärksamheten
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
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
Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018
Dependencies High cohesion, low coupling Objekt-orienterad programmering och design Alex Gerdes, 2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart?
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Typhierarkier 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:
Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002
Pedher Johansson Institutionen för datavetenskap LÖSNINGSFÖRSLAG Lösningsförslag Tentamen Programmeringsmetodik, KV: Java och OOP 17 januari 2002 Uppgift 1 (20 p) Teoriuppgifter Resultat och uppgifter
Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017
Separation of Concern Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017 Modulär design Ett programsystem är för stort för att kunna förstås i sin helhet.
Föreläsning 8 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML O2P 2000
2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML och lite mer om OOA (och OOD) - Översikt grundläggande diagram - Kravanalys användningsfall samarbetsdiagram sekvensdiagram meddelandestereotyper tillståndsdiagram
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
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:
Objektorienterad Programkonstruktion. Föreläsning jan 2016
Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor
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
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.
F12 - 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
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
Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl
NADA, KTH OOMPA 998-0-3 Sid () Extentamen i 2D359 Objektorinterad modellering programmering och analys Tisdag den 3 oktober 998 kl. -3 MED KORTA LÖSNINGSFÖRSLAG I dom flesta fall finns också lösningarna
Tentamen. 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ösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle
Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML
Målet Mer OOP Mer om klasser Några exempel UML Modularitet Språkligt modulära enheter Få gränssnitt Små gränssnitt Tydliga gränssnitt Dold information Återanvändbarhet Variation i typer Variation i datastrukturer
Föreläsning 12. Länkade listor
Föreläsning 12 Länkade listor Jämför en array med en länkad lista m in n e t Array (med 5 element): + effektiv vid hämtning - ineffektiv vid insättning och borttagning Länkad lista (med 5 element): + effektiv
TDDE10 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ösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 21 aug 2017 Lösning 1 Javaklasser (många varianter finns naturligtvis): class Client { private Invoker invoker; public void newcommand(string cmdtext) { Command cmd; if
Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
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
Datastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
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
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
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.
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
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #
Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }
Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa
Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur
Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt
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:
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
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
OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram
2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Föreläsning 7 OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram - Kravspecifikationer, användningsfall, systemarkitektur - Analysfas vad är analys?
Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Generics och polymorfism Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code Pair public class Pair { private A a; private B b; public A getfirst() { return a; public
Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
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?
Laboration 2: Designmönster
Laboration 2: Designmönster Bakgrund Det har visat sig väldigt svårt att beskriva hur ett system, eller en dellösning, skall konstrueras på ett bra sätt. Det har överhuvud taget varit svårt att veta om
Abstrakt 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
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
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Introduktion HT2 Åtkomst Abstrakt datatyp UML Överlagring
Objektorienterad analys och design
Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 1 Objekt-orienterad analys och design: Litteratur Skansholm: Kapitel 4 Se även 1. http://www.uml.org/ 2. http://www-306.ibm.com/software/rational/uml/
Arrayer. results
Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1
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
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
Akronymer. CD5130 OOP, fk. Mjukvarumönster. Mjukvarumönster. Mjukvarumönster, forts. Mjukvarumönster, forts
Akronymer CD5130 OOP, fk Software Design Patterns Object-Oriented Analys and Design: (OOAD) Object-Oriented Programming: (OOP) Software design Patterns: (SDP) Gang of Four: (GoF) Graphic User Interface
Abstrakt 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
Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Model View Controller Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Model View Controller Model View Controller (MVC) är ett design pattern (architectural pattern) som är väldigt