Refaktorisering i ett XP-projekt
|
|
- Julia Göransson
- för 4 år sedan
- Visningar:
Transkript
1 Författare: Erik Norberg, Joakim Puusaari E-post: {d00en, Datum: Refaktorisering i ett XP-projekt
2 Sammanfattning I denna djupstudie delar vi med oss av våra erfarenheter av refaktoriseringar, som vi har fått under vår tid som coacher i ett litet XP-projekt med c:a 10 utvecklare Införskaffandet av underlag till vår studie har gjorts kontinuerligt under projektens gång då vi har studerat hur refaktoriseringarna utförts Nästa års coacher kommer att hitta flera tips och förslag till riktlinjer i den här studien I grova drag kan resultatet av vår studie delas upp i två delar: Observationer Vilka bakomliggande orsaker till refaktoriseringar vi har upptäckt Baserat på observationerna ger vi förslag på hur man kan undvika stora refaktoriseringar Erfarenheter Våra erfarenheter summeras genom att vi tar upp ett par exempel av refaktoriseringar Exemplena används för att identifiera olika typer av refaktoriseringar utifrån Martin Fowlers definitioner - 1 -
3 Innehållsförteckning 1 Inledning 3 2 Bakgrund 3 3 Allmänna observationer 3 4 Refaktoriseringsexempel 4 41 Information om exempelkoden i appendix 4 42 Absorbering av klass 4 43 Namnändring av klass 5 44 Namnändring av metod 5 45 Förflyttning av metod 5 46 Förbättring av metod 5 47 Utbrytning av metod 5 5 Slutsatser 6 6 Referenser 7 61 Litteratur 7 62 Artiklar 7 63 Internet 7 7 Appendix 8 71 Exempel Exempel Exempel
4 1 Inledning I den här artikeln kommer vi att först gå igenom bakgrunden kring refaktoriseringar inom XPmetodiken och hur projekten vilka vi har använt som underlag till vår studie är uppbyggda Vi kommer därefter att berätta lite om vad vi har upptäckt under projektens gång Därefter visar vi några konkreta exempel på refaktoriseringar som gjordes under projekten Till slut så sammanfattar vi våra erfarenheter under slutsatser Vi har hämtat refaktoriseringsexempel från de team vi har coachat, analyserat dem och tagit fram goda råd för när refaktorisering skall ske Det är de stora fallen där refaktorisering motsvaras av en story eller en spike som vi har studerat och inte de små som skett innan varje story avslutats Den ena anledningen till detta är att de stora kräver mer resurser och därmed är intressantare att titta närmare på Den andra anledningen är att det är mycket svårare att samla in exempel av små refaktoriseringar eftersom de alltid sker i en utvecklares privata workspace som en del av hans uppgift 2 Bakgrund I enlighet med XP-metodiken är refaktorisering inte bara en god programmeringsvana utan också en förutsättning för att uppnå ett bra program Detta skall göras hela tiden och alla refaktoriseringar, stora som små, är viktiga Refaktorisering är en vana som andra metodiker skulle kunna ta till sig av för att förbättra deras utvecklingscykel En av de viktigaste anledningarna till att använda sig av refaktorisering är att man gör koden lättläslig, vilket gör att andra utvecklare vågar ändra på koden vid behov Andra anledningarna till att refaktorisera är att få bra namngivning, objektorienterad design och kod med hög prestanda I XP-projekt blir refaktorisering speciellt viktigt då man ser koden som dokumentation, dvs man har en snyggt strukturerad och lättförståelig kod istället för en massa dokument som beskriver krav, design mm 3 Allmänna observationer Vi har kommit fram till att följande saker kan visa på att man är i behov av refaktorisering: 1) Nya funktioner tillkommer istället för att gamla modifieras 2) Bristande kännedom om interaktionen mellan klasserna 3) Olika datastruktur används på samma sätt 4) Svårigheter att skapa förståelse för koden Det bör observeras att punkterna inte på något sätt är självständiga utan sammankopplade på många sätt Exempelvis kan punkterna ett och tre leda till punkt fyra och tvärtom Vilket gör det lätt att komma in i en negativ spiral av sjunkande kvalité på koden om ingenting görs Här följer en ingående beskrivning på hur punkterna har dykt upp i våra projekt Observera att detta bara är ett möjligt utfall av flera Alltså ska nedanstående upptäckter inte ses som allmänna tecken på problem utan de är vissa speciella yttringar av de ovanstående problemen - 3 -
5 I början av projektet såg vi mycket av punkt ett då de började skapa klasser och funktioner för sina stories Detta ledde bla till att man inte ändrade på coachernas iteration noll klasser utan istället skapades piratkopior av de gamla klasserna dvs nya klasser med samma ansvarsområden Orsakerna till detta är att man inte förstår de befintliga klasserna och hur de skall ändras för att uppnå sitt syfte Vid andra planeringsmötet var många eniga om behovet av en översikt då alla hade skapat klasser för sina stories Här kommer punkt två in i utvecklingen då det kan vara så att systemet innehåller många klasser med vagt definierade ansvarsområden tex piratkopior Då vi kommit en bit på utvecklingen började vi märka att en massa olika datastrukturer började användas i samma syfte, punkt tre Botemedlet här är att refaktorisera till en enda datastrukturera och att anamma sig meningen med KISS, Keep It Simple Stupid Ju längre fram i utvecklingen man kommer desto mer vikt bör läggas vid att förstå koden då det kommer allt mer avancerade stories Vid extrema problem med att förstå koden ska man i ett XP-projekt kunna skriva om koden från grunden Detta är möjligt eftersom vi har ett säkerhetsnät i form av enhetstesterna, vilka försäkrar oss om att all funktionalitet finns kvar Vi har kommit fram till att följande saker kan göras för att undvika behovet av stora refaktoriseringar: 1) Man kan ha korta designsessioner under laborationerna, vilket är extra lätt i början av projektet då det inte är så svårt att snabbt besluta sig för en design 2) Skapa ett klassdiagram som uppdateras under utvecklingens gång 3) Lär känna all kod genom att kontinuerligt ta sig tid till att gå igenom programmet 4) En namnkonvention som är överenskommen redan från början 4 Refaktoriseringsexempel I detta avsnitt tänker vi visa några speciellt intressanta refaktoriseringar som teamen gjort och koden till dem finns i appendix Vi kommer att gå igenom flera i projekten återkommande typer av refaktoriseringar Till varje refaktorisering som tas upp ges en motivation till varför det är bra att utföra dem 41 Information om exempelkoden i appendix I våra exempel har vi tagit bort alla funktioner som inte har berörts av refaktoriseringarna, vilket har gjorts för att läsaren lättare ska kunna koncentrera sig på det som har ändrats Av samma anledning har exception-hanteringen och alla importsatser tagits bort Notera speciellt att vi i exempel 2 inte har tagit med klassen FinishList, vilken ser exakt likadan ut som StartList men med annat syfte 42 Absorbering av klass Denna refaktorisering används för de gånger man flyttar en klass funktionalitet till en annan klass Exempelvis om man har en liten klass med oklart ansvarsområde kan det vara lämpligt att slå samman den med en annan liknande klass Detta visas med tre klasser i Exempel 2 i Appendix Se M Fowler definitionen Inline Class - 4 -
6 43 Namnändring av klass Denna refaktorisering används då man har ett otydligt namn på en klass och behöver döpa om klassen för att namnet bättre ska återge klassens ansvarsområde Vi visar ett exempel på detta i Exempel 2 där det finns en klass vid namn DatabaseHandler, vilken är i tydligt behov av ett bättre namn Nu var det inte bara namnändring som skedde utan lösningen i det här fallet var att flytta all funktionalitet och ta bort klassen 44 Namnändring av metod Denna refaktorisering används då man har ett otydligt namn på en metod som inte reflekterar metodens funktion Vi visar ett exempel på detta i Exempel 2 där det finns en metod addstart som byter namn till addtime då klassen byter namn Se M Fowler definitionen Rename Method 45 Förflyttning av metod Denna refaktorisering används när en metod i en klass passar bättre in i en annan klass Var en metod passar bäst in beror på de olika klassernas syften och ansvarsområden Se Exempel 2 för ett exempel Se M Fowler definitionen Move method 46 Förbättring av metod Denna refaktorisering används för att göra en metod bättre prestandamässigt och/eller lättare att förstå Se exempel 1 där en metod går från att läsa in en fil ett tecken i taget till att läsa in en rad i taget Se M Fowler definitionen Substitute algorithm 47 Utbrytning av metod Denna refaktorisering används för att dela upp en lång funktion i flera mindre funktioner Detta ökar läsbarheten, förståelsen och gör det lättare för senare ändringar av funktionaliteten Se exempel 3 i Appendix där en skriv funktion extraheras ur en ohyggligt stor funktion Se också M Fowler definitionen Extract method - 5 -
7 5 Slutsatser Den tid vi nu har haft som coacher har visat oss att vissa team har haft svårt att skriva ett snyggt och fint program Definitionen av snyggt program är enligt vår mening att det är objektorienterat och med bra strukturerad kod där alla funktioner är små och lättlästa Svårigheterna för teamet att skriva ett sådant program beror inte på brist av motivation utan på att de inte kan principerna för refaktorisering och objektorientering Detta pekar på ett glapp i deras utbildning där de inte fått undervisning eller konkreta exempel på vad som menas med dåliga lukter i kod Vi vet att deltagarna i XP-projektet har fått en laboration i refaktorisering, som mestadels innebär att de prövar funktionerna i Eclipse för refaktorisering Det är svårt att se nyttan i att deltagarna bara får lära sig hur man refaktoriserar i stället för när och varför Vi föreslår därför att man låter deltagarna refaktorisera en mycket stor funktion, i storleken ca rader, till mindre funktioner Detta skulle kunna få en del av deltagarna att inte leva efter devisen if it ain t broke then don t try to fix it Ett annat sätt att få deltagarna att förstå innebörden av refaktoriseringens fördelar är att låta de få uppleva de problem som uppstår då man har stora svårhanterliga funktioner Nämligen merge konflikter vid parallell utveckling och svårigheter att införa ytterligare funktionalitet Detta sätt tillsammans med rutinmässiga spikes på refaktorisering har dock inte fungerat fullt ut för våra team som ännu inte har försökt sig på att göra en uppdelning av deras stora komplicerade funktioner Ett sista sätt att få deltagarna att refaktorisera koden är att coachen/kunden går igenom koden noggrant och sedan delar ut stories/spike på detta Men detta är enligt vår mening inte coachens uppgift då de har tillräckligt mycket att hålla reda på pga ytterligare roller som manager/tracker/arkitekt Det är inte heller kundens uppgift då det inte är tänkt att han ska kunna programmera överhuvudtaget En annan idé som vi har är att man skulle kunna göra en ordentlig granskning av en annan grupps kod redan någon av de första veckorna Detta medför att de ser tidigt vilken kvalitet som de andra grupperna har och får uppleva svårigheterna med att sätta sig in i någon annans kod Vilket skulle kunna motivera dem att anstränga sig mer för att få en bra struktur på koden redan från början Detta kan passa rätt bra in i coachernas problem med att komma på spikes eftersom en del kan ägna sig åt att granska andras kod Under den första granskningen kan det vara bra om minst en av coacherna anordnar ett granskningsmöte och visar hur man kan gå till väga för att göra det noggrant Avslutningsvis anser vi att XP-kursen har lite väl höga mål för vad deltagarna ska hinna med och lära sig under kursens gång Tyvärr verkar det vara de grundläggande sakerna som har fått lida för det Ett barn måste få lära sig att gå innan man lär honom att cykla Att förvänta sig att de ska använda sig av automatiska refaktoriseringsfunktioner innan de egentligen har provat på att göra det manuellt har inte visats sig vara så lyckat - 6 -
8 6 Referenser 61 Litteratur R Jeffries, A Anderson, C Hendrickson, Extreme Programming Installed 62 Artiklar M Fowler, Refactoring K Beck, Embracing Change with Extreme Programming 63 Internet wwwrefactoringcom - 7 -
9 7 Appendix 71 Exempel 1 Före refaktorisering public String[] loadfile(){ String txt = ""; BufferedReader br = new BufferedReader(new FileReader(filename)); int onechar = brread(); while(onechar!= -1) { txt+=stringvalueof((char)onechar); onechar = brread(); Funktionen läser in en fil med ett tecken åt gången i den första while-loopen StringTokenizer st = new StringTokenizer(txt, "\n\r;"); String s; LinkedList td = new LinkedList(); while((s = stnexttoken())!=null) { s = strim(); tdadd(s); Iterator itr = tditerator(); String del; String[] textdelar = new String[tdsize()]; int i=0; while((del = (String)itrnext())!=null) { textdelar[i] = del; i++; return textdelar; Efter refaktorisering public String[] loadfile(){ Vector v = new Vector(); String[] strarray = null; String oneline = ""; BufferedReader br = new BufferedReader(new FileReader(fileName)); oneline = brreadline(); while(oneline!= null) { vadd(onelinetrim()); oneline = brreadline(); Här är while-loopen ändrad så att den läser in en rad åt gången strarray = new String[vsize()]; for (int i = 0; i < vsize(); i++) { strarray[i] = (String) vget(i); return strarray; - 8 -
10 72 Exempel 2 Före refaktorisering class DatabaseHandler { private FileHandler fh, fh2; private StartList sl; private FinishList fl; public DatabaseHandler(String start, String finish) { fh = new FileHandler(new String(start)); fh2 = new FileHandler(new String(finish)); sl = new StartList(); fl = new FinishList(); public StartList printstart() { String[] allstart = fhloadfile(); for(int n = 0; n <= allstartlength-1; n++) { sladdstart(new DriverTime(CharactergetNumericValue((char) allstart[n]charat(0)),allstart[++n])); return sl; public FinishList printfinish() { printfinishkod public class StartList { private LinkedList starttimes; public StartList() { starttimes = new LinkedList(); public void addstart(drivertime d){ starttimesadd(d); Efter refaktorisering public class TimeList { private LinkedList times; private FileHandler fh; public TimeList(){ times = new LinkedList(); public TimeList(String filename) { times = new LinkedList(); fh = new FileHandler(new String(filename)); String[] allstart = fhloadfile(); for(int n = 0; n <= allstartlength-1; n++) { int startnbr = CharactergetNumericValue(allStart[n]charAt(0)); String time = allstart[n]substring(2, allstart[n]length())trim(); addtime(new DriverTime(startNbr, time)); Det enda som klassen DatabaseHandler gör är att den har två funktioner för att fylla listor med tider Listklasserna å andra sidan har ingen egentlig funktionalitet utan den innehåller bara datastrukturen Vidare så är StartList och FinishList identiska förutom en del namn Därför är FinishList utelämnad här Alla de tre ovannämnda klasserna är här ihopslagna till en TimeList som fyller den interna listan då den skapas Den nya listan används till både start- och måltider public void addtime(drivertime d){ timesadd(d); - 9 -
11 73 Exempel 3 Före refaktorisering public static void merge(timelist start, TimeList finish, DriverList driver, String filename){ String tobewritten; FileHandler resultat = new FileHandler(filename); tobewritten = "StartNr; Namn; TotalTid; StartTider; Måltider\r\n"; Iterator itr = mapdriverkeyset()iterator(); while(itrhasnext()) { Integer startnr = (Integer)itrnext(); tobewritten += startnrtostring() + "; " + mapdriverget(startnr) + "; " + calctotaltime((string)mapstartget(startnr), (String)mapFinishget(startnr)) + "; " + mapstartget(startnr) + "; " + mapfinishget(startnr) + "\r\n"; resultatsavefile(tobewritten); Efter refaktorisering private static LinkedList completelist = new LinkedList(); public static void merge(timelist start, TimeList finish, DriverList driver, String filename){ savetofile(filename); private static void savetofile(string filename){ FileHandler filehandler = new FileHandler(filename); String tobewritten = "StartNr; Namn; TotalTid; StartTider; Måltider\r\n"; ListIterator listitr = completelistlistiterator(0); while(listitrhasnext()){ CompleteDriver compdrv = (CompleteDriver) listitrnext(); Funktionen merge slår samman starttider, måltider och förare till en resultat lista Denna del av funktionen är borttagen Allt sparas sedan till fil med hjälp av while-lopen Funktionen att spara till fil har nu extraherats till en egen metod De nya metoderna är en aning lättare att läsa än den ursprungliga tobewritten += compdrvgetstartnr() +"; "+ compdrvgetname() +"; "+ compdrvgettotaltime() +"; "+ compdrvgetstarttime() +"; "+ compdrvgetfinishtime() +"\r\n"; filehandlersavefile(tobewritten);
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
Läs merFöreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Läs merLabb 1: Vad, hur, och varför?
Labb 1: Vad, hur, och varför? jonas.kvarnstrom@liu.se 2017 "En sak i taget": Öva grunder innan det blir mer komplicerat Starkt önskemål från studenter: Prova på kontrollstrukturer Labb 1: Intro till grunder
Läs merFöreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Läs merKompilering 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
Läs merFöreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Läs mer//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.
/*==================================================================== Detta program hör ihop med dokumentet EXEMPEL_AVERAGE_POINTS.PDF där det finns förklaringar. ======================================================================*/
Läs merXP-projekt: En fördjupning
XP-projekt: En fördjupning Extreme Programming Martin Karlsson marka@itn.liu.se K7522 011 36 34 63 Fem värden Kommunikation Var öppna Var ärliga Ta konflikter Diskutera Tag beslut Tag ansvar Kräver feedback,
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Läs merTDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Läs merD J U P S T U D I E I E D A S I M P L E C O D E A N D D E S I G N
D J U P S T U D I E I E D A 2 7 0 S I M P L E C O D E A N D D E S I G N S. Marcus Jacobsson D03, Lunds Tekniska Högskola d03mj@efd.lth.se S. Magnus Weinberg D03, Lunds Tekniska Högskola d03mw@efd.lth.se
Läs mer725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
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 E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10
Objektorienterad programmering E Föreläsning 10 Rekursion Länkade datastrukturer Back to Basics Exekvera programmet för hand! public class Param { public static int f(int x) { return x+1; public static
Läs merFö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
Läs merRefaktorisering i praktiken. Aron Kornhall D00, Lunds Tekniska Högskola
Refaktorisering i praktiken Aron Kornhall D00, Lunds Tekniska Högskola d00ak@efd.lth.se 24 Februari 2004 Abstract Den här artikeln behandlar refaktorisering ur ett praktiskt perspektiv och riktar sig till
Läs merKritik av Extrem Programmering
Kritik av Extrem Programmering Markus Borggren d01mbo@efd.lth.se Martin Persson d01mp@efd.lth.se D01, Lunds Tekniska Högskola 15 februari, 2004 Abstract I denna djupstudie kommer vi att försöka, på ett
Läs merFöreläsning 23. Tobias Wrigstad. Refaktorering
Föreläsning 23 Tobias Wrigstad Refaktorering Traditionell syn på systemutveckling Analys & Design Implementation Testning (V&V) Den s.k. vattenfallsmodellen Diskreta steg som bildar en pipeline varje steg
Läs merTentamen, EDAA10 Programmering i Java
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDAA10 Programmering i Java 2019 08 21, 08.00 13.00 Anvisningar: Preliminärt ger uppgifterna 25 + 15 + 5 = 45 poäng. För godkänt betyg
Läs merDUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merTentamen 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
Läs merTentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merFöreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel
Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1, 2013 1 Innehåll OO-programmering fortsättning Skapa
Läs merTENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
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 merFöreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
Läs merFörändringskontroll i XP-team. Love Johansson (d00lj), Joakim Persson (d00jp)
Förändringskontroll i XP-team Love Johansson (d00lj), Joakim Persson (d00jp) 21 februari 2005 Sammanfattning Under sju veckor har vi agerat coacher åt en grupp relativt oerfarna programmerare i en större
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista
Läs merDjupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7
Djupstudie Code smells / Refaktorisering Martin Larsson dt08ml5 Stefan Johansson, dt08sj7 27 februari 2012 Innehåll 1 Inledning 1 2 Bakgrund 1 2.1 extreme programming....................... 1 2.2 Programvaruutveckling
Läs merITK: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,
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 mer4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &
TelefonKostnad static Math static $ & )&* +,-&. 0 +& + & 3 356+573 ) & & 6 3 3 & 3 * 6 3.:; < = 3 = 6 ; < : & >?.;,;@.A@;0,0,? @B0 C,0 > *. > 5 C D & D 5 * &! ; 66C! * C, 0 E,&! 0 F,G0 >: = = C 3 & HI
Läs merCommand line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Läs merObjektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2
Objektorienterad programmering E Algoritmer Linjär sökning Binär sökning Tidsuppskattningar Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk; dess syntax och semantik, bibliotek
Läs merProgrammering 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
Läs merOBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1
Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.
Läs merCult of Code Quality
Jakob Schyberg (d00jsc) 2005-02-13 Coaching av Programvaruteam Josef Granqvist (d00jgr) LTH Institutionen för Datavetenskap Cult of Code Quality Vad kan en coach göra? Denna djupstudie handlar om kodkvalitet.
Läs merTDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)
TDDI82 - Projekt Christoffer Holm Institutionen för datavetenskap (IDA) 1 Projektkrav 2 Projektplannering 3 Spelutveckling 1 Projektkrav 2 Projektplannering 3 Spelutveckling 3 / 26 Upplägg Spåna projektidé
Läs merNyttomaximering av spikes
Nyttomaximering av spikes Johan Hedin Sånemyr D11, LTH dat11jh1@student.lu.se Victor Shu-Ming Lam D11, LTH dat11vla@student.lu.se 2016-03-07 Sammanfattning Som projektledare av ett team programmerare så
Läs merFöreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Läs merUML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language
Ett modelleringsspråk : Exempel Fönster Klassnamn Unified Modelling Language Av Booch, Jacobson, Rumbaugh Exempel: En klass position storlek Attribut (instansvariaböe) Resultatet av en sammanslagning av
Läs merGruppdynamik och gruppsykologi i Extremet Programming
Gruppdynamik och gruppsykologi i Extremet Programming Jerry Malm, d02jm@efd.lth.se Gustav Olsson, d02og@efd.lth.se Lunds Tekniska Högskola Lund, den 22 februari 2005 Sammanfattning Denna djupstudie kan
Läs merAlgoritmer. Två gränssnitt
Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;
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 merPraktikum i programmering
Praktikum i programmering Föreläsning 1 Lärare: Fredrik Degerlund E post: fredrik.degerlund@abo.fi Rum A5051 (denna korridor) Kursens innehåll Att lära sig att programmera moduler som ingår i ett större
Läs merTentamen, EDAA20/EDA501 Programmering
LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna
Läs merTENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET
UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt
Läs merCoaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt
Coaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt Martin Malek Anders Hellström Lunds Tekniska Högskola 22 februari 2005 Version 1.0 Sammanfattning Som utgångspunkt för
Läs merLösningar för tenta 2 DAT043,
Lösningar för tenta 2 DAT043, 2018-06-08. Uppgift 1 public class Car{ private String model; private String year; private double price; public Car(String model, String year, double price){ this.model =
Läs merLaboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
Läs 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 merFöreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
Läs merKungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :
Läs merPåminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004
Programmering hh.se/db2004 Föreläsning 10: Objektorienterad programmering - datatyper Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Påminnelse: en datatyp för bilder Vad är
Läs merMalmö högskola 2012/2013 Teknik och samhälle
Laboration 5 Avsikten med laborationen är att du ska träna på att använda iterationer i dina program. I vanlig ordning placerar du dina lösningar i paketet laboration5. Uppgifterna är lätt matematiska
Läs merProj-Iteration1. Arkitektur alt. 1
Proj-Iteration1 PVG/Coaching Boris Magnusson Datavetenskap LTH Proj-Iter1-1 Registrering Registrering Arkitektur alt. 1 Personuppgifter Starttid Sorterare Måltid Efterbehandling Resultat Tre program som
Läs merF2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH
F2 XP Extrem Programmering översikt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH Vad är XP? En metod för hur man utvecklar programvara i grupp i nära samspel
Läs merTentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 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 merF2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH
F2 XP Extrem Programmering översikt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH Syfte & Mål Ge en helhet av vad XP är Mål & syfte med XP - varför ser metoden
Läs merTDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDI02 Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Verifikation, Validering och Testning XP Extreme Programming Vad är ett fel? I engelskan
Läs merGrundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Läs merAtt använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Läs merVerktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola
Verktyget FindBugs Djupstudie i kursen EDA 270 Coachning av programvaruteam Christofer Bach dt05cb6 Daniel Nilsson dt05dn4 Lunds Tekniska Högskola 15 feb 08 1. Sammanfattning Denna djupstudie kommer att
Läs merTestdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski
Testdriven utveckling Januari 2009, KTH Alexander Tarnowski Teorin bakom testdriven utveckling Bakgrund Testdriven utveckling började nämnas kring 1999-2000 av Kent Beck I praktiken implementationen av
Läs merJAVA Mer om klasser och objektorientering
JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs merInterface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Läs merChapter 4: Writing Classes/ Att skriva egna klasser.
Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad
Läs merDugga Datastrukturer (DAT036)
Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre
Läs merUpplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.
Introduktion Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är sunda den är praktiskt orienterad; vetenskapliga teorier finns,
Läs merOBJEKTORIENTERAD PROGRAMVARUUTVECKLING
Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller
Läs merUML. 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
Läs merF4. 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
Läs merArv. 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
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 merPROGRAMMERING-Java Omtentamina
PROGRAMMERING-Java Omtentamina Nicolina Månsson 2007-08 13 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 41 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. -
Läs merJAVAUTVECKLING LEKTION 4
JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet
Läs merMjukvarudesign. 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
Läs merTentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Läs merProj-Iteration 3. Grov plan för releaser
Proj-Iteration 3 PVG/Coaching Boris Magnusson Datavetenskap LTH Proj-Iter3-1 Grov plan för releaser Kunden är mycket nöjd med första releasen som visar att stora framsteg gjorts med implementationsarbetet.
Läs merLaboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Läs merF5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander
F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean
Läs merTentamen 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
Läs merLösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011
Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011 Text inom [] avser kommentarer till rättningen, ofta sådant som många missuppfattat eller gjort fel på. Del A. Teoriuppgifter 1. Återanvändning:
Läs merTentamen i Grundläggande programmering STS, åk 1 lördag 2002-05-25
Tentamen i Grundläggande programmering STS, åk 1 lördag 2002-0-2 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Elena Fersman besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka
Läs merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs merScrum + XP samt konsekvensanalys
Scrum + XP samt konsekvensanalys Daniel Nimren dt05dn8 Douglas Frisk dt05df1 Dept. of Computer Science, Lunds Tekniska Högskola, Sweden {dt05dn8 dt05df1}@student.lth.se 1 mars 2010 Sammanfattning Denna
Läs merLaboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2019-03-22 Skrivtid: 14:00 19:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merSpråkkonventioner och redigering av tal.
Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner
Läs merTentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:
Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-01-13, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex
Läs merMalmö högskola 2008/2009 CTS
Laboration 5 Avsikten med laborationen är att du ska träna på att använda iterationer i dina program. I vanlig ordning placerar du dina lösningar i paketet laboration5. Uppgifterna är lätt matematiska
Läs mer