Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund
|
|
- Anton Bengtsson
- för 4 år sedan
- Visningar:
Transkript
1 Djupstudie Verktyg för att förebygga problem i källkod Anders Forslund (d04afr@student.lth.se) Anders Lund (et05al1@student.lth.se) 2 mars 2010
2 Sammanfattning Då kodningsstandard ej hålls så blir ofta kod svår att förstå och arbeta med. Detta resulterar i vad som kallas illaluktande kod och den här studien tar upp olika av de största mjukvaruverktyg för att nna illaluktande kod i Java-program. Olika typer av vanligaste sorters dålig kod tas upp och verktygen testas på projekt som innehåller åtskilliga sorters illaluktande kod. Resultaten visar på att verktygen är goda hjälpmedel för att nna dålig kod, men de nner bara vissa typer av illaluktande kod och missar ofta väldigt viktiga saker. Dessa brister tas upp i studien och jämförs mot varandra. Verktygen kan i dagsläget endast användas som ett komplement till manuellt arbete. Olika sätt att göra koden mer lättläst och lättarbetad presenteras kort här. 2
3 INNEHÅLL INNEHÅLL Innehåll 1 Inledning 4 2 Code Smells Kommentarer Långa metoder Långa parameter-listor Duplicerad kod Stora klasser Inkonsistenta/dåligt namngivna metoder Död kod Oanvända variabler/objekt Refaktoriseringar 6 4 Testade verktyg Metodik Resultat Eclipse PMD Checkstyle FindBugs Analys Otestade verktyg Japroch Elbereth Slutsats 12 3
4 2 CODE SMELLS 1 Inledning Då era personer arbetar med kod så nns alltid risken att kodning inte sker enhetligt. Om någon kodar enligt ett visst mönster och någon annan vill refaktorisera detta, som i sin tur kodar på ett annat sätt, uppstår ofta problem [1]. Det nns många er typer av fel, så kallade kodlukter, och det går inte att formulera ett generellt sätt att lösa dessa om det inte formuleras extremt abstrakt. Ofta är det svårt att hitta dessa fel. De upptäcks ofta av duktiga programmerare som nner det intuitivt fel. För att underlätta för utvecklare så har det släppts verktyg som är till för att nna dessa felaktigheter i programkod. För Java nns det åtskilliga. Genom att studera vetenskapliga dokument och testa olika verktyg kan man nna i vilken grad dessa kan appliceras på PVGprojektet. Några välkända verktyg för att hitta code smells i Java kommer att testas och analyseras lite senare i denna rapport. 2 Code Smells Illaluktande kod är något som alla programmerare någon gång kommer stöta på under sin karriär. Skickliga utvecklare med stor kunskap brukar dock ha en känsla för design av kod så att lukter kan minskas markant. Även olika verktyg kan användas för att identiera dessa och också åtgärda dem. Vad är då illaluktande kod? Det är ett begrepp som myntades av Kent Beck i WikiWikiWeb, världens första wiki. Han denierade det som en liten ledtråd till att något i koden hade gått fel, att det fanns ett djupare problem. Det kan vara allt från att programmet i fråga är långsammare än vad det behöver vara till att programmet är svårt att vidareutveckla för andra programmerare. Metaforen code smell blev dock vanligare i folkmun efter att ha använts i boken Refactoring: Improving the Design of Existing Code skriven av M. Fowler [2]. Nedan kommer några av de vanligaste kodlukterna listas och förklaras [3]. Notera att kodlukter kan skilja sig åt i olika programpråk (här kommer det mest fokuseras på Java) och att vissa är mer eller mindre allvarliga samt att de i allas ögon inte alls anses vara fel. Kommentarer. Långa metoder. Långa parameter-listor. Duplicerad kod. Stora klasser. Inkonsistenta/dåligt namngivna metoder. Död kod. Oanvända variabler/objekt. 4
5 2.1 Kommentarer 2 CODE SMELLS 2.1 Kommentarer En metods namn bör vara skriven så att man förstår vad dess uppgift är. Ett bra exempel är getinvoicablecreditlimit() istället för getinvcrlmt(). Därför ska en metodkommentar inte beskriva vad metoden gör, utan snarare varför metoden nns. I vissa fall, till exempel kod skriven i Assembler som är väldigt svår att förstå, måste däremot kommentarer beskriva vad koden gör. 2.2 Långa metoder En lång metod gör att det blir svårare att se vad metoden i fråga egentligen gör, den blir oöversiktlig. Men vad är egentligen en lång metod? Hur många rader kod är långt? Ett ganska vanlig generellt svar på denna fråga är att det nns ingen tydlig denition, utan man bör helt enkelt se till att en metod har en enda huvuduppgift. Gör den för mycket bör den refaktoriseras, förslagsvis genom att delas upp i era mindre metoder. 2.3 Långa parameter-listor Alan Perlis, en pionjär inom programvaruutveckling sade en gång If you have a procedure with 10 parameters, you probably missed some. Den underliggande meningen är att en metod ska ha så få parametrar som möjligt. Istället för att skicka in parametrar från ett visst objekt är det ofta bättre att skicka in hela objektet. En metod med många parametrar är svårläst och svår att tolka. Istället för: int low = daystemprange().getlow(); int high = daystemprange().gethigh(); withinplan = plan.withinrange(low, high); gör man exempelvis: withinplan = plan.withinrange(daystemprange()); 2.4 Duplicerad kod Redundans i kod är något man helst vill undvika. Ofta uppkommer det på grund av en dålig eller lat programmerare (i form av copy-paste). En anledning till att undvika duplicerad kod är exempelvis att den blir svårare att förstå för en annan utvecklare. En lång metod med duplicerad kod är svårare att snabbt komma in i än en kort refaktoriserad. Det blir också svårare att uppdatera koden eftersom man måste ändra på era ställen. Lösningen på problemet är att extrahera den redundanta koden och skapa EN metod av det istället som sedan kan anropas från era ställen. 2.5 Stora klasser Likt långa metoder är även långa/stora klasser en riktig stinkbomb. En stor klass kan ofta identieras genom att studera antalet attribut. Är det många sådana är det i många fall även en för stor klass som gör för mycket och som borde delas upp. 5
6 2.6 Inkonsistenta/dåligt namngivna metoder 3 REFAKTORISERINGAR I guren nedan visas ett exempel. Figur 1: Stor klass refaktoriseras 2.6 Inkonsistenta/dåligt namngivna metoder När det gäller metoder (även variabler, klasser etc.) bör de vara namngivna så att man förstår vad dess uppgift är. Det ska vara tydligt utan att behöva läsa kommentarer. En konsistent namngivning är också den viktig för att inte skapa förvirring. Att följa Code Conventions for Java av Sun gör att detta inte bör blir några problem. När man döper metoder bör man också undvika redundans. Det är att föredra schedule.add(course) framför schedule.addcourse(course). 2.7 Död kod En variabel, metod, parameter eller annan typ av kodfragment som aldrig exekveras. Som utvecklare eftersträvar man alltid ren kod som är lätt att förstå och död kod ingår inte i denna kategori. 2.8 Oanvända variabler/objekt Till skillnad från död kod så kan oanvända datatyper exekveras och ta upp plats i minnet. Men likt död kod vill man undvika detta. 3 Refaktoriseringar När verktyg har funnit illaluktande kod så är det en lämplig ide att modiera koden. Det nns ett väldigt begränsat stöd för att göra det helt automatiskt. Det nns refaktoriseringsverktyg, men inget som direkt ansluter processen att automatiskt nna illaluktande kod med refaktorisering. Detta får göras manuellt. För den sortens illaluktande kod som vi behandlat i testning nns följande refaktoriseringlösningar: Långa metoder : Löses i första hand genom att extrahera koden till en egen metod. Duplicerad kod: Löses genom att extrahera koden till en egen metod. Ibland är det så att den duplicerade koden har små variationer på de ställen där den förekommer. Då får lite mer komplext arbete ske när koden extraheras, men det är helt genomförbart. 6
7 4 TESTADE VERKTYG Död kod: Om koden avsiktligt placerats som död så bör den tas bort från projektet. Nästlade if-satser : Försök sätta de booleska uttrycken som en if-sats istället för era. 4 Testade verktyg Manuell jakt på illaluktande kod är något som är extremt tidskrävande och kan vara väldigt svårt. Nedan nns verktyg som ska underlätta detta genom att automatiserat leta upp illaluktande kod. Alla testade verktyg är open source och använder sig av statisk analys, vilket innebär att källkoden analyseras. Detta gör att programmet inte behöver exekveras. FindBugs skiljer sig något genom att analysera bytekod statiskt, det vill säga kompilerade klassler. PMD är ett öppet verktyg som söker efter code smells i Java-kod. Verktyget kan användas som plugin till ett tiotal utvecklingsmiljöer. PMD analyserar kod utan att exekvera den vilket gör att den kan kommentera detaljer som variabelnamn [4]. FindBugs letar huvudsakligen efter buggar, men ger även varningar då väldigt avancerade funktioner i ett språk används. På grund av dess sätt att analysera ett program så kan inte FindBugs kommentera saker som variabelnamn [5]. Eclipse är en utvecklingsmiljö som ger varningar för åtskilliga saker som relaterar till illaluktande kod. Eclipse analyserar koden utan att den behöver exekveras och kommenterar saker som den anser vara direkta felaktigheter [6]. Checkstyle är ett verktyg som främst är till för att se till att kodningsstandarder följs. Indirekt innebär det att illaluktande kod hittas då de ofta uppstår när kodningsstandarder bryts [7]. 4.1 Metodik Verktygen har testats på två sätt. För en realistiskt testning har tre projekt som behandlar samma uppgift använts. Detta är projekt som utvecklas under sju heldagar av tio utvecklare som går kursen EDA260 på Lunds Tekniska Högskola (kursen förkortad PVG). Projekten innehåller illaluktande kod som uppstått på naturligt sätt. Då utvecklarna kan tänkas vara för duktiga för skriva kod som luktar väldigt illa så har det skapats ett, av författarna, egenskrivet projekt. Det består av medvetet illaluktande kod. Kodlukterna har denierats och implementerats enligt följande: Korta metodnamn. Testas genom att ha med en metod vars namn är två tecken. Långa metodnamn. Testas genom att ha med en metod vars namn är tjugo tecken. Långa metoder. Testas genom att ha med en metod på över 100 rader kod. 7
8 4.2 Resultat 4 TESTADE VERKTYG Duplicerad kod. Testas genom att dels ha återkommande kodstycken, men också genom att ha snarlik kod på era ställen. Död kod. Testas genom att ha kod i en if-sats där det boolska uttrycket alltid är falskt. Koden kommer aldrig att exekveras. Många parametrar. Testas genom att ha en metod som har tio parametrar. Nästlade If-satser. Testas genom att ha fyra if-satser i varandra. Åtskilliga verktyg körs på projekten och de kodlukter som identieras, som relaterar till de faktiska vi skrivit, registreras. Då det nns olika standarder att identiera illaluktande kod så hittar vissa verktyg väldigt många saker som enligt andra verktyg ej är illaluktande kod. Dessa nämns men studeras ej i detalj. 4.2 Resultat Eclipse Kommentarer. Till föga förvåning varnar Eclipse ej för brist på kommentarer. Nästlade If-satser. Eclipse hittar ej nästlade if-statser. Långa metoder. Eclipse varnar ej för långa metoder. Långa parameter-listor. Eclipse varnar ej för långa parameter-listor. Duplicerad kod. Eclipse varnar ej för duplicerad kod. Stora klasser. Eclipse varnar ej för stora klasser. Inkonsistenta/dåligt namngivna metoder. Eclipse varnar för dålig namngivning på paket och klasser. Varning uppstår endast när versaler och gemener används fel. Död kod. Eclipse hittar endast vår döda kod om det booleska uttrycket som gör if-satsen död, ligger i samma klass som if-satsen. Om if-satsen anropar en konstant från ett annat objekt så kommer det inte någon varning. Oanvända variabler. Oanvända variabler varnar programmet om direkt. Skapas ett objekt utan att användas på något sätt ges en varning. Gör man ett nonsens-anrop på objektet försvinner varningen, även om metodanropet inte fyller någon funktion. Se kodexempel nedan: String text="12345"; //varning för oanvänt objekt syns text.charat(2); //ingen varning syns om denna metod anropats Eclipse varnar inte för allt som man vill att ett code smell detection tool ska varna för, men hittar ändå ganska mycket. För att vara en integrerad utvecklingsmiljö (IDE) gör Eclipse väldigt mycket. 8
9 4.2 Resultat 4 TESTADE VERKTYG Figur 2: Eclipse detekterar död kod PMD Kommentarer. PMD ger inga varningar för dåliga kommentarer. Nästlade If-satser. Verktyget nner nästlade if-satser och rekommenderar lösningsförslag. Långa metoder. PMD hittar långa metoder. Vår långa metod får varning med meddelandet Avoid really long methods. Långa parameter-listor. PMD hittar metoden med tio parametrar och varnar för att det är för många. Duplicerad kod. Verktyget låter användaren specicera hur stort ett kodstycke ska vara för att den ska hitta duplicerad kod. PMD är väldigt bra på att hitta duplicerad kod och hittar den även om det används olika variabelnamn på de olika platserna. Både i riktiga projekt och i dummy-projektet nner PMD duplicerad kod. Stora klasser. PMD ger varning då klasser är för stora. Inkonsistenta/dåligt namngivna metoder. PMD varnar för namn som är för korta och för långa. Används versaler på fel sätt genereras även en varning. Död kod. PMD nner död kod, men på samma sätt som Eclipse hittas inte död kod om inte det booleska uttrycket i if-satsen ligger i samma klass. Oanvända variabler. PMD varnar för objekt som inte används. PMD hittar väldigt mycket, men mycket relaterar till annat än vad i denna studien denierats som illaluktande kod. Exempelvis vill PMD att objekt som skickas in i en metod utan att förändras ska sättas som final när metodparametrarna skrivs. Detta är standard enligt C++ kodningskonventioner men är inte något som är ett måste i Java. PMD upplevs som ett väldigt kompetent verktyg men många av dess varningar måste ltreras bort. Då det används som en plug-in i Eclipse är det något svårt att sortera resultaten, då användaren får en lista med alla varningar, vilket i våra fall är era tusen. Det blir väldigt tidskonsumerande att studera denna resultatsrepresentation. 9
10 4.2 Resultat 4 TESTADE VERKTYG Figur 3: Exempel på PMD:s gränssnitt Checkstyle Kommentarer. Checkstyle klagar på brist samt felaktigt skriven Javadoc, vilket är en väldigt bra egenskap. Nästlade If-satser. Verktyget noterar ej nästlade if-satser. Långa metoder. Checkstyle nner ej långa metoder. Långa parameter-listor. Checkstyle klagar då det nns mer än 7 parametrar i en metod. Duplicerad kod. Checkstyle nner ej duplicerad kod. Stora klasser. Verktyget genererar varning då en metod är på väldigt många rader. Inkonsistenta/dåligt namngivna metoder. Checkstyle ger extremt bra varningar för namngivning. Konventioner följs väldigt strikt och alla kommentarer, objekt, parametrar, metodnamn, klassnamn, konstanter etc. får varningar om de inte följer standarden helt. Död kod. Checkstyle nner ej död kod. Oanvända variabler. Checkstyle klagar ej på oanvända variabler. Checkstyle påminner om PMD. Den hittar några extra fel, men saknar några som att hitta långa metoder och nästlade if-satser. Verktyget upplevs som väldigt mycket mer relaterat till kommentarer och namngivning än PMD. Verktyget är knepigare att arbeta med i Eclipse än PMD, då det är ännu svårare än det är i PMD att sortera och ltrera olika typer av fel FindBugs Kommentarer. FindBugs klagar ej på brist på kommentarer. Nästlade If-satser. FindBugs noterar ej nästlade if-satser. Långa metoder. Verktyget nner ej långa metoder. Långa parameter-listor. FindBugs klagar ej på långa parameter-listor. Duplicerad kod. FindBugs nner ej duplicerad kod. Stora klasser. FindBugs klagar ej på stora klasser. 10
11 4.3 Analys 5 OTESTADE VERKTYG Död kod. Verktyget nner ej död kod. Oanvända variabler. FindBugs klagar på oanvända variabler. FindBugs hittar endast oanvända objekt. Verktyget söker mer efter väldigt specika saker som till exempel varning när MyObject.equals anropas om det råkar vara ett Comparable-objekt. De generella saker som testas här hittar inte FindBugs. Det upplevs tveksamt att kalla FindBugs ett verktyg för att identiera illaluktande kod. Verktyget har potential för att höja kodkvalitet men verkar inte kunna nna det denna studien relaterar till. 4.3 Analys Verktygen fungerar inte fullt så bra att de kan ersätta manuellt arbete. Eclipse ger information som underlättar programmerandet väldigt mycket, men som ändå är ganska lätta att hitta manuellt. FindBugs ger ännu färre meddelanden. PMD ger relativt mycket och ser något mer komplexa felaktigheter, men mycket saknas fortfarande. Testkoden testar förstås inte dessa program på alla aspekter och låter därför inte dem visa full potential. Med det sagt är det ändå udda att endast PMD ger varningar för duplicerad kod, och död kod får man endast varning för om man skrivit död kod på ett specikt sätt som passar verktygen. PMD är även väldigt inkonsekvent. På något ställe i koden nns objekt med korta namn. Dessa genererar varningar. Längre ner i koden nns andra objekt med lika korta namn, dessa genererar inga varningar. Egen testning har visat att dessa verktyg är bra komplement till manuell detektion, men räcker inte för att ersätta arbetet. Känner användare till begränsningarna i mjukvaran så kan verktygen eektivisera arbetet väldigt mycket. Användning av dessa tre verktyg på projekt är något som rekommenderas starkt. Det har exempelvis skolan Adams State College visat när de använt bland annat PMD och FindBugs i programmeringsundervisning [8]. Varje elev ck köra PMD, FindBugs och Checkstyle på sin kod och åtgärda felen som detekterades. Ibland upptäcker verktygen sådant som eleven kanske inte anser vara fel. Då kommenterades den raden med en förklaring till varför eleven i fråga inte ville ha en förändring. Enligt skolan gör detta att man lär sig tänka kritiskt och kan även ge upphov till diskussioner i klassrummet angående olika kodningsstandarder. Studenterna lär sig också att refaktorisera kod som blivit alldeles för komplex. När artikeln skrevs hade verktygen använts i undervisningen i 2 år. Under dessa år sågs en klar skillnad i kodkvalitet och läsbarhet. Skolan menar att dessa statiska kodanalys-verktyg, som nämnts ovan, skapar en medvetenhet bland studenterna om programkods kvalitet och att de lär sig på ett snabbt och enkelt sätt att upptäcka fel och brister. 5 Otestade verktyg I följande kapitel beskrivs kort olika verktyg som kan hjälpa utvecklare att spåra och åtgärda kodlukter. Av olika skäl har vi själva inte testat dem, men går ändå igenom dem lite kort. 11
12 5.1 Japroch 6 SLUTSATS 5.1 Japroch Att följa en bra kodstil när man programmerar är väldigt viktigt. För att hjälpa nya utvecklare har Sami Mäkelä och Ville Leppänen från University of Turku and TUCS skapat ett verktyg som visuellt kan visa var i ett program en viss stil inte följs [9]. Japroch, som verktyget heter, är fullt kongurerbart så att era olika stilar ska kunna följas. Enligt författarna nns det fyra olika aspekter av problem med kodningsstil: Typograska. Alla problem som är relaterade till det visuella utseendet i koden. Exempel på detta är indentering, placering av paranteser och maxlängd av kodrad. Syntaktiska. Problem som är relaterade till en dålig programmeringsstil även om programkonstruktionen i sig kan vara syntaktiskt korrekt. Exempelvis att man inte har en default-branch till en switch-case-sats. Semantiska. Exempelvis att klassnamn ska börja med stor bokstav och att alla deklarerade variabler borde användas i programmet. Logiska. Problem som är relaterade till den logiska strukturen i programmet. Exempel på detta är för många nästlade loopar och för många parametrar i metoder. Japroch har bra stöd för typograska och syntaktiska problem. De två andra kategorierna kan också kollas men bara i viss grad. I framtiden nns det förhoppningar att även semantiska problem ska stödjas fullt ut. 5.2 Elbereth Elbereth är ett verktyg för att spåra problem i kod och utföra refaktoriseringar [10]. Verktyget är utvecklat av studenten Walter Fred Korman från University of California. Elbereth använder sig av ett stjärndiagram-koncept för att hitta problem. Visuellt, med denna stjärndiagram-vy, kan man snabbt se klasshierarkier och komplexa klassrelationer och på sätt hitta kodlukter och dylikt. Tyvärr hittades inte programmet och kunde ej heller därför testas. 6 Slutsats De olika verktygen som testats underlättar detektering av lukter och andra brister i kod på ett bra sätt. De kan dock inte hitta alla fel och ibland fås även fel som man får analysera manuellt och besluta om åtgärd eller inte. Detta gör att programmerare lättare kan lära sig att analysera sin kod. Som Adams State College har gjort genom att införa verktyg i undervisningen, borde även det införas i de olika teamen i PVG-kursen. Ett verktyg som hela tiden påminner en om olika problem i koden gör att man snabbt blir medveten om dem och därmed också snabbt kan refaktorisera. Eftersom XP-metodiken är väldigt viktig att följa i kursen, där refaktorisering är en viktig del, är chansen stor att vissa iterationer där det krävs att man 12
13 6 SLUTSATS gör big bang refactorings blir mindre påtaglig om man följer en bra standard och har en hög kvalitet på koden. I slutändan kan detta ge ett bättre slutresultat med er stories gjorda, mer läsbar kod men framförallt studenter som lärt sig mycket. 13
14 REFERENSER REFERENSER Referenser [1] E. V. Emden and L. Moonen, Java quality assurance by detecting code smells, Los Alamitos, CA, USA, p. 97, [2] M. Fowler and K. Beck, Refactoring: Improving the design of existing code, p. 403, [3] [4] [5] [6] [7] [8] S. Loveland, Using open source tools to prevent write-only code, April 2009, pp [9] S. Maekelae and V. Leppaenen, Japroch: A tool for checking programming style, University of Turku and TUCS, Department of Information Technology, [10] W. F. Korman, Masters thesis, elbereth: Tool support for refactoring java programs, University of California,
Djupstudie 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 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 merAtt lära sig av kodanalys
Att lära sig av kodanalys Om att använda kodanalysverktyg i utbildningssyfte tillsammans med XP Daniel Bengtsson, c02db@student.lth.se Mikael Piotrowski, c04mpi@student.lth.se Lunds Tekniska Högskola den
Läs merKlassdeklaration. 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
Läs merPetter Berglund. Sammanfattning
EDA270 - Coaching av programvaruteam Verktyg för kodanalys Petter Berglund D05, Lunds Tekniska Högskola dt05pb2@student.lth.se 2008-02-10 Sammanfattning Verktyg för kodanalys blir allt vanligare i programvaruutvecklingsprojekt
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 merTDDD78 Objektorientering: Lagring och livstid
jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()
Läs merJava's kodkonventioner och arbete i grupp
Java's kodkonventioner och arbete i grupp Anders Hagsten Lunds tekniska högskola d01ah@efd.lth.se 2005-02-13 Sammanfattning Denna djupstudie handlar om faktorerna som ger tydlig och lättläst kod och hur
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merPROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar hur mjukvaror skapas, anpassas och utvecklas samt programmeringens roll i informationstekniska sammanhang som datorsimulering och praktisk datoriserad problemlösning.
Läs merAnalysverktyg för Code smells och Test coverage. Djupstudie för Coaching av programvaruteam 2015
Analysverktyg för Code smells och Test coverage Djupstudie för Coaching av programvaruteam 2015 Lund, 6/3 2015 Christian Kuijer Andersen Rickard Johansson dat11can@student.lu.se dat11rjo@student.lu.se
Läs merUppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
Läs merObjektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merTUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Läs merÖversikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)
Översikt Programmering tillämpningar och datastrukturer 729G58 (HKGBB7) Kursinformation Objektorienterad programmering: Klasser och objekt Arv Polymorfism Metoder Programexempel Programmering tillämpningar
Läs merTUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
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 merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merÖverlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!
Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar
Läs merArv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Läs merSKOLFS. beslutade den XXX 2017.
1 (11) Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan, inom kommunal vuxenutbildning på gymnasial nivå och inom vidareutbildning
Läs merObjektorientering: Lagring och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop
Läs merÖversikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning
Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class
Läs merFöreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merParameterö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
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Läs merPlanering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
Läs merProgrammeringsteknik II
Programmeringteknik II Kursintroduktion http://www.it.uu.se/edu/course/homepage/prog2/vt18/ 2018-03-19 Programmeringsteknik II 2018-03-19 1 / 9 Lärare Carl Nettelblad (kursansvarig) Anna Eckerdal Biträdande
Läs merTentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Läs merFöreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera
Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på
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 merAnvändarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Läs merProgramdesign. Dokumentera. Dokumentera
Programdesign Dokumentera Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden
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 merContinuous Integration med Jenkins. Linus Tolke Enea Experts
Continuous Integration med Jenkins Linus Tolke Enea Experts Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem
Läs merKodanalys med hjälp utav SemmleCode
Kodanalys med hjälp utav SemmleCode Henrik Andersson, D05 (dt05ha1@student.lth.se) Erik Mossberg, D01 (d01em@student.lth.se) 18 Februari 2008 Sammanfattning Avsikten med denna rapport är att läsaren ska
Läs merObjektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del
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 merVerktyg för statisk kodanalys
Verktyg för statisk kodanalys Av: Peter Seimar, adi09pse 4 mars 2013 Att hitta fel, bad smells och brister i en stor kodbas kan vara både svårt och tidsödande. För att hjälpa till med det arbetet nns en
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 merVerktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merFöreläsning 2. Täcker material från lektion 1, 2, 3 och 4:
(22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard
Läs merObjektorientering: Lagring, räckvidd och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)
Läs merProgramdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20
Programdesign Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden vid
Läs merProjekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...
Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss
Läs merSystem.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);
1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende
Läs merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merTENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs 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 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 merTDP005: Introduktion till Make
TDP005: Introduktion till Make Jonas Lindgren jonas.lindgren@liu.se Torbjörn Lönnemark torbjorn.lonnemark@liu.se Niklas Hayer 2013-11-14 1 1 PROGRAMMET MAKE 2 1 Programmet make Om du kör make letar programmet
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
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 merAlla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.
Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merProgrammering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk
Läs merTentamen. 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 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Läs merÖversikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22
Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2014 2017 jonas.kvarnstrom@liu.se
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs 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 merInlämningsuppgifter, EDAF30, 2015
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgifter, EDAF30, 2015 Det finns två deluppgifter som båda ska lösas: 1. skriv ett program för att hantera bankkonton
Läs merVälkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA
Välkommen till Datastrukturer, algoritmer och programkonstruktion eller DOA Jag: Christer Labbassar: Caroline: Johan: Agenda, före lunch Inledning om DOA-kursen Backspegel Mål Syfte Examination Om lärande
Läs merTENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Läs merGrundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1
Grundläggande programmering DVG A08 & ISG A04 Allmän information Grupp C och D slås ihop Schemat är ändrat Kurs i programmering utan förkunskaper Hjälp oss med detta Lita inte på era klasskamrater De ställer
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se
Läs merPROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Läs merObjektorienterad 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
Läs merKlasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.
TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program
Läs merFöreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
Läs merFöreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Läs merTDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Introduktion till Java -- för Pythonprogrammerare Historia: C, C++ 3 Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad
Läs mer+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.
Uppgift 1 Ett programmeringsparadigm är i grund och botten ett sätt att arbeta, ett sätt att möta problem. Det finns flera olika paradigm där varje paradigm har sina egna styrkor och svagheter. Det som
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Läs mer2D1339 Programkonstruktion för F1, ht 2004
2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga
Läs merLektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)
Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val
732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==
Läs merProgrammering. Den första datorn hette ENIAC.
Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och
Läs merConfiguration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar
Skapa testfall Testing Köra testen Hitta fel Inspections and reviews Verifiera resultatet Formal methods Static analysis Completeness Verifiering Kvalitet Maintainability Validering Traceability Fault
Läs merFöreläsning 3: Typomvandling, villkor och val, samt textsträngar
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar
Läs merI Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Läs merA ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices
A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices Mattias Jarheden och Thomas Forsström Sammanfattning Denna djupstudie försöker ge en inblick
Läs merVerktyg och Utvecklingsmiljö. Jochim von Hacht
Verktyg och Utvecklingsmiljö Jochim von Hacht Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg Editorer Kompilatorer Avlusare (debugger) Versionhantering (kommer i projektkurs)
Läs merFöreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merNågra inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0
Läs merTDDD78, TDDE30, 729A85 Objektorienterad programmering och Java
jonas.kvarnstrom@liu.se 2018 TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java Kursinformation Examinator, kursledare: Jonas Kvarnström Fråga kommentera avbryt! Utan OO har vi datastrukturer
Läs merJava, klasser, objekt (Skansholm: Kapitel 2)
Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma
Läs mer2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det
Läs merBakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige
Är varje påstående som kan formuleras matematiskt*) alltid antingen sant eller falskt? *) Inom Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige Exempel: 12 = 13 nej, falskt n! >
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 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 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 mer