Java's kodkonventioner och arbete i grupp
|
|
- Maj-Britt Jonsson
- för 8 år sedan
- Visningar:
Transkript
1 Java's kodkonventioner och arbete i grupp Anders Hagsten Lunds tekniska högskola d01ah@efd.lth.se Sammanfattning Denna djupstudie handlar om faktorerna som ger tydlig och lättläst kod och hur namngivningen påverkar detta. Med utgångspunkt från Java's kodkonventioner behandlas vanligt förekommande namngivningsproblem som till exempel för långa eller intetsägande namn. Konventionernas funktion i att lösa problem när man arbetar i grupp studeras även närmare.
2 Innehåll 1 Inledning 3 2 Konventioner Syftet med konventioner Kort om Javas kodkonventioner Ofta förekommande namngivningsproblem Magiska nummer Långa namn Korta namn Förkortningar Intetsägande namn Vilseledande klassnamn Felstavade namn Utvecklingsplattformen Eclipse 7 5 Projekterfarenheter Allmänt De vanligaste problemen Slutsatser 8 7 Vidare undersökningar 8 2
3 1 Inledning Namngivning är något som alltför ofta ställer till förtret. Det många glömmer bort är att när man namnger något medför detta också förväntningar på funktionen hos detta. När man arbetar själv fungerar det bra att döpa saker efter eget tyckte men när man arbetar i grupp måste mer eftertanke nnas. Detta på grund av att alla i gruppen inte pratar samma språk. Precis som i matematiken kan man i kod skriva en sak på era olika sätt men med samma resultat. Här kommer kodkonventioner in i bilden för att avgöra vilket sätt som är bäst. I denna rapport tar jag upp syftet med konventioner och vanliga problem som uppstår när man arbetar i grupp. Jag har valt att utgå från Java's kodkonventioner då detta är mitt primära språk. 2 Konventioner 2.1 Syftet med konventioner Fördelarna med att ha konventioner för namngivning, formatering och hur man skriver den faktiska koden är många. Det som kan vara lätt att glömma, när man programmerar, är att någon i framtiden faktiskt ska underhålla koden genom att till exempel lägga till ny funktionalitet. Har den som skrivit koden då valt att följa givna konventioner underlättas underhållsarbetet. Det är helt enkelt lättare att sätta sig in i koden då den följer en vedertagen standard. För företag är detta extremt viktigt då 80% av livstidskostnaden för mjukvaran utgörs av underhållsarbete. Vidare är det så att anställda tenderar att byta jobb ibland eller företaget omorganiseras. Det gör att personen som skrev koden från början inte alltid nns tillgänglig för att förklara den. Faktum är att det mycket sällan är personen som skrev programmet som underhåller det. 2.2 Kort om Javas kodkonventioner Företaget bakom Java, Sun Microsystems, tillhandahåller på sin hemsida Javas kodkonventioner [1]. Detta dokument specicerar allt från metodernas längd till hur man bör namnge sina variabler. Nedan presenteras de viktigare poängerna i dokumentet: Formatering: Undvik rader längre än 80 tecken. Detta för att många program har svårt att hantera längre rader. Ett exempel på detta är programmet LATEXsom denna text formaterats av. Vidare anges att metoder ej bör vara över 150 rader och hela Java-ler ej bör överstiga 2000 rader. Klassnamn: Klassnamn ska alltid vara ett, eller en kombination, av substantiv. Samtliga substantiv i klassens namn ska ha stor bokstav. Exempel: ResultGenerator.java Gränssnitt: Gränssnitt ska, precis som klassnamn, vara en kombination av substantiv samt börja med stor bokstav. Javas kodkonventioner ger inga riktlinjer om hur de bör namnges men om man tittar i Javas API ser man att de ofta namges med adjektiv eller substantiv. Adjektiv har fördelen att de ger en indikation på beteendet hos gränssnittet. Exempel: Observer.java, Adjustable.java 3
4 Metodnamn: Metodnamn ska innehålla verb för att tala om vad man gör och gärna kombineras med substantiv eller adjektiv för att tydliggöra metodens eekt på objektet. Första bokstaven i metodnamnet ska alltid vara gemen och efterföljande inre ord ska börja med en versal. Exempel: printcompetitiondata(), isempty(), getdriver() Variabler: Variabelnamn skrivs på samma sätt som metodnamn. Programmerare som skolats i andra programspråk bör vara medvetna om att variabelnamn som börjar med _ och $ ej, enligt konvention, bör användas men ändå tillåts. Variabelnamn bör vara korta men ändå meningsfulla och indikera användningsområdet. Korta namn som exempelvis i bör undvikas utom när de används tillfälligt inuti en metod som räknare eller dylikt. Exempel: int startnumber, ArrayList starttimes Konstanter: Konstanter skrivs med versaler och om konstantens namn består av era ord separeras dessa med _. Exempel: static final int MAX_SIZE = 4 3 Ofta förekommande namngivningsproblem När man studerar kodexempel nns det fall som är ofta förekommande. Dessa fall kommer vi titta närmare på här. 3.1 Magiska nummer Magiska nummer [3] är tal som bara dyker upp från ingenstans och används i koden. Siror som 1, -1, 0 och 2 anses inte vara magiska då användandet av dessa är vida spritt. Exempel: class Physics { /** * This method calculates the length contraction of an object. v - the velocity of the object. l - the length of the object. The length as experienced by the observer. */ public double lengthcontraction(double v, double l) { double ratio = (v * v) / ( * ); double obsl = l * Math.sqrt(1- ratio); return obsl; Exemplet ovan är väldigt enkelt men visar ändå på hur otydligt det blir med magiska nummer. Det fungerar felfritt men det blir svårt att läsa. När programmet sedan ska underhållas kommer det med största sannolikhet ställa till problem för de som ska göra det. Tilldela istället en konstant detta värde och skriv på följande sätt: 4
5 class Physics { /* Speed of light in vacuum (m/s) */ public static final int SPEED_OF_LIGHT = ; /** * This method calculates the length contraction of an object. v - the velocity of the object. l - the length of the object. The length as experienced by the observer. */ public double lengthcontraction(double v, double l) { double ratio = (v * v) / (SPEED_OF_LIGHT * SPEED_OF_LIGHT); double obsl = l * Math.sqrt(1 - ratio); return obsl; Detta är mycket tydligare, mer lättanvänt och om man, mot förmodan, skulle vilja ändra ljusets hastighet i vakuum behöver man bara göra det på ett ställe. 3.2 Långa namn Långa namn är en eekt av att man vill vara övertydlig i metoden, klassens eller variabelns funktion. Fördelarna med detta är att man eventuellt inte behöver läsa dokumentationen utan det inses direkt vad den gör. Nackdelarna är dock era, exempelvis får eventuellt inte anropen plats på.java-lens rader om man ska följa kodkonventionerna på max 80 tecken på en rad. Vidare blir de arbetsamma att skriva om man skriver i en lättare editor utan komplettering och därmed ökas risken för slarvfel. Ytterligare ett problem är att långa beskrivande namn begränsar möjligheterna att lägga till ny funktionalitet utan att döpa om klassen och därför medför extra arbete. Ett exempel på långt namn är ResultGeneratorSortedResultWithPlaceNumbers som jag lånat från projektet jag just nu coachar. Detta är ett exempel på övertydlig namngivning som resulterar i långa namn. Mycket av det som inkluderas i namnet borde stå i dokumentationen för klassen. Detta problem påtalades och klassens namn ändrades till ResultGeneratorByRank som ger samma intryck men på ett tydligare sätt. 3.3 Korta namn Korta namn såsom i, j och c bör, enligt Java's kodkonventioner, endast användas som temporära variabler inne i metoder. I t.ex forloopar är det närmast konvention att man döper första loop-variabeln till i och sen om det nns en inre loop döper den till j och så vidare. Problemet är att programmerare har lätt att döpa sina variabler till temp eller liknande när de testar fram nya lösningar för att sedan glömma ändra dem till förklarande namn. Exempel: public String giggleloop(int nbrgiggles) { String temp = ""; 5
6 for (int i = 0; i<nbrgiggles; i++) { temp += "giggle"; return temp; Ovan är ett exempel på hur det ofta ser ut. Programmeraren har förstått att han behöver en sträng att bearbeta men inte brytt sig om att ändra det när metoden sedan färdigställts. Nedan visas resultatet efter namnbyte. public String giggleloop(int nbrgiggles) { String gigglesequence = ""; for (int i = 0; i<nbrgiggles; i++) { gigglesequence += "giggle "; return gigglesequence; Trots att detta exempel är väldigt trivialt ser man redan här att det blir mer lättläst. Detta kan härledas till att namnet temp används ofta och i olika sammanhang vilket gör det svårt att förstå betydelsen i varje fall utan att verkligen kontrollera. 3.4 Förkortningar Förkortningar bör inte användas om inte förkortningen är mer använd än ordet och det därmed blir tydligare med dem. Jämför till exempel geturl() med getuniversalresourcelocator(). I vissa, dock ofta förekommande, fall är det mer frågan om att nna ett gemensamt språk än att använda förkortningar eller ej. I vårt projekt fanns en variabel som höll reda på startnumret för en förare. Denna variabel hade till en början inte mindre än tre namn: nbr, startnumber och startnbr. Dessa hade den erhållit från handskrivna 1 get- och setmetoder. Detta upptäcktes emellertid snart och ändrades till startnumber. Det hela berodde på att programmerare med olika stil skrivit metoderna för att hämta och sätta variabeln. 3.5 Intetsägande namn I vårt projekt skrev vi en datastruktur för de tävlande för att sedan kunna bearbeta dem på olika sätt, t.ex sortera och visa alla som inte kom i mål. Problemet var att denna namngavs till DataStructure. Detta namn talar bara om vad vi redan vet, nämligen att det är en datastruktur. Det talar inte om på något sätt hur klassen kan användas och gav ingen indikation på vilken sorts information man ck ut. Klassens namn byttes senare ut mot DriverList som säger mycket mer om form och funktion. 3.6 Vilseledande klassnamn Det första som möter programmeraren när han ska använda en klass är klassnamnet. Klassnamnet ger ett initialt tips till programmeraren om hur den kan 1 Eclipse kan automatgenerera så kallade getters och setters utifrån ett variabelnamn. 6
7 användas. Det är därför viktigt att namngivandet inte är vilseledande, t.ex om vi hade döpt DriverList ovan till DriverTable ger det ett helt annat intryck om klassens funktion för programmeraren. 3.7 Felstavade namn När man programmerar skriver man oftast på engelska och då detta inte är vårt modersmål kan ibland mindre problem uppstå på grund av detta. De esta är dock medvetna om sina begränsningar när det gäller stavning på det engelska språket och väljer därför att hellre hitta en synonym än att riskera att stava fel. Något konkret exempel från vårt projekt lyckades jag inte nna så jag har konstruerat ett: competitiontype och racetype. Detta är typiskt en omskrivning som sker om man är osäker på stavning. De betyder, i princip, samma sak men kräver olika ansträngning att stava. Det största problemet med felstavade namn är att kompileringsfelen blir väldigt svåra att hitta i koden. Vi tenderar att inte upptäcka stavfel om vi inte letar efter dem [4]. 4 Utvecklingsplattformen Eclipse De projekt som vi genomför använder sig av Eclipse som utvecklingsverktyg. Eclipse är bra då layoutdelarna från Java's kodkonventioner i stort sett är implementerade i textformateringen som det använder sig av. Vid skapande av klasser får man en varning av programmet om man använder sig av liten bokstav och det formaterar koden med hjälp av några enkla knapptryckningar. Några missar nns ändå där, exempelvis när man namnger metoder får man ingen varning om dessa skulle ha stor bokstav och detsamma gäller för variabelnamn. Stödet för namnbyte är exemplariskt, med refektoriseringsverktyget kan man byta till exempel ett metodnamn och samtidigt döpa om alla anrop till denna, något som kan ta lång tid i en vanlig text-editor så som Emacs. 5 Projekterfarenheter 5.1 Allmänt I början av ett projekt är det bra att fastställa vilka konventioner som skall råda. I vårt projekt bestämde vi under första mötet att Java's kodkonventioner skulle gälla samt att alla skulle fräscha upp minnet genom att läsa dessa. Detta gav oss en slags lagstiftning inom projektet. Under projektets gång kunde vi sedan lösa många dispyter med hjälp av dessa, till exempel hur man skriver if-satser eller vilket som är det bästa namnet på en klass. Att ha en lag att hänvisa till gjorde vår styrande roll enklare. En annan eekt som märktes av var att deltagarna, allt eftersom projektet fortlöpte, blev mycket mer medvetna om namngivningens betydelse. Detta beror med stor säkerhet på att de aldrig tidigare behövt arbeta med ett program under så lång tid och under ständiga förändringar i kravspecikationen. 7
8 5.2 De vanligaste problemen Under vårt projekt uppstod merparten av de problem som nns beskrivna i kapitel 3 men vissa var mer frekventa, exempelvis korta och långa namn. Problemet med korta namn uppstod i början av projektet då arbetssättet och stressfaktorn var helt ny för deltagarna. Detta var första gången de skrev kod som inte bara skulle fungera utan även vara läsbar. Jag tog upp problemet med de korta namnen under ett planeringsmöte och ck bra respons från deltagarna, de hade också märkt att det ställde till problem. Eekten blev att det gick från en extrem till en annan och vi ck väldigt långa namn som talade om exakt var och hur det namngivna användes. De långa namnen var bra att ha under utvecklingsfasen men när projektet började röra sig mot sitt slut fann vi att deras roll var utspelad och namnen refaktoriserades till kortare versioner. 6 Slutsatser Namngivning utan konvention fungerar så länge man arbetar i små grupper på mjukvara som inte skall underhållas men så fort utvecklingen sker i större grupp blir namngivningen kritisk. Dåliga namn för med sig kostsamma misstag som kunde sparat både tid och pengar om några extra minuter lagts på namngivning. Det har visat sig smidigt att tidigt i ett projekt välja en konvention som skall gälla då det ger en lagstiftning åt projektet. Dispyter kan lösas snabbare när man har en lag att hänvisa till istället för att dras in i ändlösa diskussioner. Slutligen bör sägas att Java's kodkonventioner inte har lösningen på alla namngivningsproblem utan det måste nnas en dialog inom projektgruppen. 7 Vidare undersökningar För den som vill utforska namngivning och dess inverkan vid projektarbete ges här ett par förslag för vidare undersökningar: Hur man får alla deltagare att följa konventionen När man arbetar i större grupper är det ofelbart så att någon har en egen konvention som denne anser är bättre. Hur styr man gruppen så att alla följer samma konvention? Genomför ett projekt utan kodkonventioner Undersök vilka konsekvenser ett projekt utan kodkonvention ger. Detta kan vara svårt att göra under rådande kursformer då den endast är åtta veckor lång men ändå väldigt intressant. Vilka roller har verktygen i hur väl kodkonventioner åtlyds Eclipse, som används vid våra projekt, innehåller verktyg som xar till de mindre delarna av Java's kodkonventioner, exempelvis 80 tecken på en rad och stor bokstav på klassnamnet. Vad händer om exempelvis Emacs istället används och hur väl kommer konventionerna att åtföljas? Skriv antipatterns för namngivning Roedy Green tar i sin text How to Write Unmaintainable Code upp en rad av vad man kan kalla antipatterns och då bland annat vad gäller 8
9 namngivning. Green är dock inte så tydlig i sitt framställande av dessa. Använd Greens text för att nna tydligare antipatterns som kan vara till nytta för andra som går kursen. 9
10 Referenser [1] Scott Hommel. Java Code Conventions [2] Cunningham med era. System of Names [3] Edward Parrish. Document and Organize Java Code [4] Roedy Green How to Write Unmaintainable Code 10
TDDD78 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()
Kort 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å
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Objektorientering: 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
Lite 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
Anvä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...
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Objektorienterad Programmering (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
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
TUTORIAL: 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
Objektorientering: 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)
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
System.out.println("Jaså du har "+ antaldollar + " stycken.");
1 Vad vi vet Vi har tidigare sett exemplet med inmatning från tangentbordet. Exemplet innehåller flera aspekter av klasser och objekt. import java.util.*; class KeyboardReading { public static void main(string
725G61 - 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
Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner
Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Tentamen, 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
Klasser 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
Uppgiften ä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
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
PROGRAMMERING-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. -
TENTAMEN 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
Grundlä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)
Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Objektorienterad 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
Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel
Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/
Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering
Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad
Metoder (funktioner) Murach s: kap Winstrand Development
(funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod
Ö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
(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Klasser och objekt. Henrik Johansson. August 20, 2008
Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
PROGRAMMERING-JAVA TENTAMINA
PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift
Att använda Java SE JDK 6
Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.
Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!
Tentamen, EDA501 Programmering M L TM W K V
LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 04 13, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna
TENTAMEN 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
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Java, 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
Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar
Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto
Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska
Fö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
Att 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
Tentamen i Programmering
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen i Programmering EDAA65/EDA501/EDAA20 M MD W BK L 2018 05 30, 8.00 13.00 Preliminärt ger uppgifterna 7 + 14 + 6 + 9 + 4 = 40 poäng.
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 2 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin, 2018 Outline Emacs Introduktion till Objektorienterad Programmering Introduktion till Java Variabler
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift
732G 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 (
I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else
Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.
Laboration 1 Avsikt Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java. Del 1 Ta fram dokumentet NetBeans5_5.pdf från kurssidan och arbeta med
Fö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
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund
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 Sammanfattning Då kodningsstandard ej hålls så blir ofta
Tentamen i Grundläggande programmering STS, åk 1 fredag
Tentamen i Grundläggande programmering STS, åk 1 fredag 2003-05-23 Skrivtid: 09.00 14.00 Hjälpmedel: Inga Lärare: Anders Berglund. Anders besöker tentan vid två tillfällen: cirka kl. 10.30 samt cirka kl.
Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes
Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Tentamen i Grundläggande Programvaruutveckling, TDA548
Tentamen i Grundläggande Programvaruutveckling, Joachim von Hacht/Magnus Myreen Datum: 2017-08-14 Tid: 14.00-18.00 Hjälpmedel: Lexikon Engelskt-Valfritt språk. Betygsgränser: U: -23 3: 24-37 4: 38-47 5
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Chapter 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
Tentamen 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
Ö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
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Ö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
Objektorientering/1.2. 3 Klasser
3 Klasser 3.1 Att hantera många objekt 3.2 Klasser 3.3 Krav för att bilda en klass 3.4 Får två objekt vara helt identiska? 3.5 Måste vi använda klasser i objektorientering? 3.6 En klassbeskrivning 3.7
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg
Loopar och upprepning Vill man upprepa kod flera gånger så istället för att skriva en massa rader så kan man lägga koden i ett kodblock som man sedan loopar. Det finns ett par olika typer av loopar, FORloop,
kl Tentaupplägg
Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut
Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler
Outline Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vända om inlästa värden Vända om inlästa
Laboration 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
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
Tentamen , Introduktion till Java, dtaa98, dtea53
Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Föreläsning 10. Besiktningsprotokollet
Föreläsning 10 Besiktningsprotokollet 1 Besiktningsprotokollet 2 Användarvänlighet Informativa utskrifter Programmet ska tala om för användaren vad programmet gör i varje steg och vilken inmatning som
kl Tentaupplägg
Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Anteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska
Chapter 3: Using Classes and Objects
Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop
Tentamen, EDAA20/EDA501 Programmering
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2016 01 13, 08:00 13:00 Anvisningar: Denna tentamen består av tre uppgifter. Preliminärt ger uppgifterna 6
Grundkurs 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