F5 Kodkvalitet. Programutveckling sker i faser. Livscykel, vidareutveckling och återanvändning
|
|
- Klara Sandberg
- för 5 år sedan
- Visningar:
Transkript
1 F5 Kodkvalitet 151 Programutveckling sker i faser Här: starkt förenklat version Passar bara mindre projekt Fem delmoment: Fastställa och analysera förutsättningarna/kraven Skapa en design Implementera koden Testning Dokumentation OBS! Testning och dokumentation ska ske parallellt med de övriga momenten. 152 Livscykel, vidareutveckling och återanvändning Scenario 1: Nyproduktion av ett hus, som ska fungera som skola Scenario 2: Ombyggnation av ett modernt hus, byggt 2010 används som en förskola och ska fortsätta att användas som F-9 skola Scenario 3: Ombyggnation av ett gammal K- märkt skola byggt 1870, till kontor Scenario 4: Åtgärda en skola som är klassat som ett sjukt hus. Skolan är bygg
2 Legacy code - ärvd kod Skriva kod som lever i flera generationer och varianter, som andra än du själv jobbar med. Ändra/jobba med kod som andra (eller du själv) har utvecklat, tex.» Bygga vidare» Ny version» Kundanpassa» Rätta fel 154 Legacy code - ärv kod Vad är viktigt då för att minimera kostnader och risker? Systemen/koden är lätt att förstå Lätt att testa det nya utan att ha sönder det gamla Samt Färdigheten att läsa och förstå andras system och kod, 155 dokumentation, etc. Livscykel, vidareutveckling och återanvändning Scenario 1: Nytt system som ska byggas från grunden Scenario 2: Utökning av funktionalitet i RSV system för folkbokföring som påbörjades 1985 Scenario 3: Anpassning ett system mot en helt ny kund, systemet utvecklat sedan 2010 Scenario 4: Jobba bort felrapporter som kommer in på mobiltelefonsystem, för att komma ut med en helt ny release. 156
3 Sträva efter kod som är kod som är bra, dvs, hög kodkvalitet kod som är man kan stå för, för man kan garantera att den gör det den ska göra och inget annat, bra testad kod som är beskriven på ett bra och tydligt sätt, dvs bra dokumenterad 157 Kodkvalitet Vad är god kodkvalitet? Vad är dålig kodkvalitet? Hur mäter vi kodkvalitet? Vem bär ansvaret för kvalitet på koden? 158 Kodkvalitet Hur kan man jobba för att nå hög kvalité? Vems ansvar är det om en klass eller metod beter sig konstigt och orsakar fel? 159
4 Hur kan man jobba med kodkvalité? 1. Jobba strukturerat genom hela processen 160 Hur kan man jobba med kodkvalité? Fokusera på kvalité och inte kvantitet Bygg det viktigaste först Jobba tillsammans Gemensamt ansvar en för alla alla för en Kontinuerlig uppföljning av processen Kod-granskning Lätt att läsa, lätt att testa, förklara Koden följer grundläggande kodprinciper Koden, systemet är inte onödig svårt att förstå Involvera testning i ett tidigt skede av processen 161 Hur kan man jobba med kodkvalité? Tydlighet i förväntningar Tydliga krav vad som ska systemet ska kunna göra Tydliga definitioner när en funktion/del fungerar som den ska både i det lilla och i det stora Tydliga definitioner på när det inte fungerar (undantag, fel, etc) Bra design System/klassdesign/metoddesign Systemarkitektur, klasser, metoder, etc Dokumenterad testning på många nivåer Enhets, integrering, system, acceptans-test Hur ska man följa upp/garantera att koden fungerar även efter flera generationer Mer om det senare 162
5 163 Johan Eliasson F6 Klass och metoddesign 165
6 Hur kan man jobba med kodkvalité? 1. Jobba strukturerat genom hela processen 166 Skapa en OO-design Bestäm klasser, objekt och metoder som behövs Vad finns redan? Bestäm algoritmer för problemlösningen I princip oberoende av programmeringsspråk Diagram Pseudokod Designa för återanvändning? Det är svårare att göra generella lösningar Kan löna sig i framtiden Återanvändning har varit en stor anledning till OOboomen 167 Implementation När man kommer till detta steg så har man ritning klar, det mesta av materialvalen är gjorda Översättning av design till källkod Implementationen fokuserar på kod-detaljer Alla viktiga beslut tas vid analys och design 168
7 Kodkonvention Klasser påbörjas med stor bokstav (i övrigt små utom om flera ord då Inledande bokstav i övriga ord också görs stor) AClass Metoder/attribut inleds med liten bokstav (i övrigt små utom om flera ord då inledande bokstav i övriga ord också görs stor) amethod(), avariable Konstanter Bara stora bokstäver. Ord åtskiljs med _ PI Följer man dessa konventioner så kommer ens egna klasser att se ut som javas inbyggda. 169 Bra klasser är grunden Bra namn som säger vad den gör eller är till för Hanterar undantag och fel på ett bra sätt Väldokumenterad Vad den gör Hur dess relation är till andra klasser Publika metoder är dokumenterad Minimera möjligheten att ändra tillstånden använd setter och getters för att jobba med tillståndsförändring tänk efter om det behövs setters, eller fungerar det utan Undvik statiska attribut och metoder i så stor utsträckning det bara går 170 Bra klasser är grunden Typer av klasser Actor-classes Utility-classes Oförändliga klasser, dvs man kan bara skapa objekt med värden och man har inga setters för att ändra tillståndet -String är en sådan klass Inte för stora ansvar för en klass -> avspeglar sig i det publika interfacet Synligheten ligger på rätt nivå Minska beroendet till andra klasser Tex. undvik att lägga in metoder för utskrift i klasser försök att lägga dom så högt upp i klasshierarkin som det bara går helst i main-klassen. System.out.println finns inte i alla miljöer 171
8 Några olika typer av klasser Actor-classes Gör saker med objekten, ändrar tillstånd, har ett beteende, mm Utility-classes Ofta statiska klasser som inte jobbar med att förändra objekts tillstånd, typ Math-klassen Oföränderliga klasser Klasser med ett fast tillstånd Man kan bara skapa objekt med värden och man har inga setters för att ändra tillståndet - String är en sådan klass 172 Vad kännetecknar en god klass Med andra ord En odelad, väldefinierad abstraktion Coupling Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat sätt Har ett koncist och sammanhängande gränssnitt Cohesion Har tillstånd och beteende 173 Coupling Klasserna ska vara så oberoende som möjligt av varandra Löst kopplade Coupling mäter hur starkt klasserna är kopplade Ju lösare klasserna är kopplade, desto enklare är det att förstå en enstaka klass enklare och förståeligare blir systemet som helhet Klasserna med lös koppling kan lättare ändras utan att andra klasser påverkas Systemet blir lättare att ändra Dvs, Mera flexibilitet 174
9 UML: Klassrelationer svag koppling stark koppling 175 Klassdiagram Johan Eliasson Metoddesign Konsistens när det gäller parametrar och namn Följ en kodkonversion Undvik sidoeffekter i metoder om det går, beräknar och returnera ett värde Undvik att förändra objekten som parametrarna refererar till, returnera ett nytt objekt om det är görbart Ibland använder man returvärdet för att säga något om beräkningen hur den gick, trots att metoden inte returnerar något riktigt värda Exceptions så långt det går jobba med undantag för att tala om att det har skett något som anroparen behöver veta för att hantera ev. konstigheter 177
10 Kategorier av metoder Konstruktorer Skapa instanser Selektor (get-metod) Returnerar information om objektets tillstånd Mutator (set-metod) Ändra objektets tillstånd Annat Gör någonting En metod ska tillhöra bara en kategori 178 Metoddesign Java jobbar med Call-By-Value på attributen, dvs värdet från anropssidan kopieras till attributen i metoden Undvik att förändra värdet på de anropade attributen, speciellt när de är av referenstyp. Vad händer på anropssidan om du ändrar på parametern/ attributet inne i en metod använd final i attribut-listan för att göra det omöjligt att ändra attributen inne i metoden Java kan inte förändra innehållet i variabeln som används för anropet Java förändrar objektet som variabeln refererar till inne i en metod 179 package callbyvalue; import figures.triangle; public class CallByValue { public static void main(string args[]){ int a = 42; System.out.println("a before somemethod(a): " + a); // a is copied and the copy is passed into the method somemethod(a); System.out.println("a after somemethod(a): " + a); Triangle triangle = new Triangle(); System.out.println("triangle before trianglemethod(triangle): " + triangle); // triangle ref is copied and the copy is passed into the method trianglemethod(triangle); System.out.println("triangle after trianglemethod(triangle): " + triangle); public static void somemethod(int a){ a = 23; System.out.println("a within somemethod(a) after changing it: " + a); public static void trianglemethod(triangle triangle){ triangle.changesize(10, 400); System.out.println("triangle within trianglemethod(triangle) after changing it: " + triangle); triangle = new Triangle(); System.out.println("a within trianglemethod(triangle) after created a new triagle: " + triangle); 180
11 Cohesion Varje metod ska vara ansvarig för bara en uppgift Cohesion mäter huruvida en metod uppfyller detta krav Ju mer en metod fokuserar på en enda uppgift, desto enklare är det att finna ett bra namn enklare och förståeligare blir koden Metoder med stark samhörighet kan lättare ändras utan att andra metoder påverkas Det ska vara möjligt att beskriva en metod med en enkel mening med ett verb och ett objekt 181 Exempel 1: Cohesion: Exempel 1 public void setnameandage (String name, int age); Bättre: public void setname (String name); public void setage (int age); Exempel 2: /* Anropas en gång om året */ public void calculateholidays(); { holidays += new Holidays(); age++; Bättre: public void calculateholidays(); public void incrementage(); 182 Exempel 3: Cohesion: Exempel 2 public void setfirstname (String name){ firstname = name; public void setlastname (String name){ lastname = name; fullname = firstname + + lastname; Bättre: public void setfirstname (String name) { firstname = name; fullname = firstname + + lastname; public void setlastname (String name){ lastname = name; fullname = firstname + + lastname; 183
12 F6 Filer och IO 184 Input/ output Utströmmar från programmet Inströmmar till programmet 185 Input/output Externa data kan tillhandahållas på många sätt i Java : Via GUI Läsas och skrivas direkt till och från tangentbord och bildskärm Läsas och skrivas till och från filer Läsas och skrivas till och från databaser Java API tillhandahåller paketet java.io Klasser som stöder input/output Klasser för att hantera när I/O-operationer går fel Typfel En fil som inte går att hitta/öppna 186
13 Filer Filer kan användas för att lagra data permanent mellan programkörningar eller för utbyte an information mellan program. Textfiler läsbara även för oss (med tex en texteditor) till skillnad från binära filer som lagrar datat mer som i datorns minne. 187 Skriva och läsa textfiler Strömmarna betraktas som innehållande värden av typen char Klasser som hanterar textfiler kallas readers och writers Tre viktiga åtgärder Öppna filen Skriv/läs data Stäng filen Samtliga dessa kan misslyckas Man måste förutse undantag! 188 Öppna/Skriva/Stänga Skapa ett FileWriter objekt En konstruktor tar filnamnet som parameter (String) FileWriter writer = new FileWriter( testfil.txt ); Skriv med metoden write() Överlagrad, tex. med signaturen write(string str) writer.write("första raden\n"); Stäng filen med metoden close() writer.close(); //(Obs stäng ej System.in) 189
14 Läsa från filer Scanner har en konstruktor som tar ett Fileobjekt som parameter Alternativt kan man koppla ihop den med En Reader klass File f=new File( minfil.txt ); Scanner in=new Scanner(f); //Kastar ett kontrollerat undantag Scanner in2=new Scanner(new FileReader( minfil.txt )); String str=in2.next(); in2.close(); 190 Exempel import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.ioexception; public class CopyBytes { public static void main(string[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read())!= -1) { out.write(c); finally { if (in!= null) { in.close(); if (out!= null) { out.close(); 191 Input/ output Java I/O baseras på streams (strömmar) En ström är en sekvens av bytes som flödar från en källa till ett mål Fördefinierade standardströmmar: ström System.in System.out syfte läsa input skriva output enhet tangentbord bildskärm System.err skriva fel bildskärm Standard strömmarna kan läggas om med System.setIn/Out/Err metoderna datatyp InputStream PrintStream PrintStream 192
15 InputStream Inputströmmar är mera komplicerade InputStream är en abstrakt klass InputStream har väldigt begränsad mängd metoder för att hantera inläsning System.in måste därför ofta kapslas in i en mer specifik ström med de egenskaper man vill ha Läsa in strängar Läsa in heltal Läsa in Vi kommer titta på några olika klasser vi kan använda till detta tex Scanner 193 Scanner Osmidigt att läsa in en hel rad som sträng! Bättre med ett ord i taget. Vad är ett ord? Tecknen måste grupperas till s.k. Tokens Tidigare mycket eget jobb Sedan Java 1.5 (5.0) finns klassen Scanner... Man kopplar en scanner till en ström Scanner myscan = new Scanner(System.in); Finns metoder för att läsa in heltal, flyttal, ord, rader etc. Se metoder i API:n Scanner.html 194 Koppla ihop strömmar För mer avancerat beteende kan de enkla strömmarna som läser/skriver från någon kopplas ihop med mer avancerade strömmar. Ex: PrintWriter out=new PrintWriter(new out.println( hej ); out.close(); FileWriter( filnamn.txt )); Strömmar finns tex för buffring, hantera radnummer, komprimering och kryptering PrintWriter.html 195
16 Exempel import java.io.filereader; import java.io.bufferedreader; import java.io.ioexception; import java.util.scanner; import java.util.locale; public class ScanSum { public static void main(string[] args) throws IOException { Scanner s = null; double sum = 0; try { s = new Scanner(new BufferedReader(new FileReader("usnumbers.txt"))); s.uselocale(locale.us); while (s.hasnext()) { if (s.hasnextdouble()) { sum += s.nextdouble(); else { s.next(); finally { s.close(); System.out.println(sum); 196 Object Serialization Object serialization är ett sätt att spara ett objekts tillstånd (tex i en fil) så att vi sedan kan komma åt det. Även efter att programmet avslutats. Object serialization åstadkoms mha Serializable interfacet och klasserna ObjectOutputStream och ObjectInputStream writeobject metoden används för att serializera ett objekt readobject används för att återskapa objektet 197 Input Streams Output Streams Data Streams I/O Streams Processing Streams Character Streams Byte Streams Byte Streams handle I/O of raw binary data. Character Streams handle I/O of character data, automatically handling translation to and from the local character set. Buffered Streams optimize input and output by reducing the number of calls to the native API. Scanning and Formatting allows a program to read and write formatted text. I/O from the Command Line describes the Standard Streams and the Console object. Data Streams handle binary I/O of primitive data type and String values. Object Streams handle binary I/O of objects. 198
Klass och metoddesign. Skapa en OO-design. Kodkonvention. Hur kan man jobba med kodkvalité? Implementation. Bra klasser är grunden
Klass och metoddesign Hur kan man jobba med kodkvalité? 1. Jobba strukturerat genom hela processen 170 171 Skapa en OO-design Bestäm klasser, objekt och metoder som behövs Vad finns redan? Bestäm algoritmer
Läs merAbstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser
Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta
Läs merInnehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och
Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält
Läs merUndantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
Läs merUndantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
Läs merProblemlösning. Analys och design OOA&D. Programutveckling sker i faser OOA&D. Fastställa och analysera förutsättningarna/ kraven.
Analys och design med hjälp av CRC Problemlösning Alla större projekt misslyckas, eftersom det är omöjligt för utvecklarna att till fullo förstå uppgiften som ska lösas och vilka alla problem som är inneboende
Läs merFördjupad Java. Undantagshantering. Fel
Fördjupad Java 1 Undantagshantering Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java
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 merSpråkkonventioner och redigering av tal.
Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner
Läs merAnalys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram
Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,
Läs merJAVAUTVECKLING LEKTION 7
JAVAUTVECKLING LEKTION 7 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Olika språkversioner (Klassen Locale) Utskrift i kommandofönster Inläsning via kommandofönster Standardklassen
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs 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 merOOP Objekt-orienterad programmering
OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via
Läs merFöreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
Läs merUndantag. Engelska: exceptions. Skansholm: exceptionella händelser
Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker öppna en fil som inte finns, dividera med noll, indexera utanför en array osv. bjectorienterad programmering
Läs merObjektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Läs merParsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck
Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation
Läs merInstuderingsuppgifter läsvecka 6 - LÖSNINGAR
Instuderingsuppgifter läsvecka 6 - LÖSNINGAR 1. 2. Om vi använder interfacet List behöver vi inte bry oss om den konkret implementation som används, därför kan implementationen bytas ut genom att endast
Läs merLÖ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
Läs mer1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Strömmar Filer m.m. 1 In- och utmatning Definition: En ström (en.
Läs merFöreläsning 14. Filhantering
Föreläsning 14 Filhantering Filhantering Att hantera filer, dvs att läsa eller skriva data till en fil är en viktig del i de flesta program. Ur Javas synvinkel är filer objekt med egenskaper och metoder
Läs merKlasser och objekt? Objekt och klasser. Analys och design. Objekt. Klass. Programmering?
Objekt och klasser Analys och design med hjälp av CRC Objekt Modeller av saker i problemdomänen ( den röda bilen i parkeringshuset Nanna ) Klasser Representerar alla objekt av ett visst slag ( bil ) 45
Läs merSurfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets
Surfning Webbklienter och webbservrar Starta Firefox (eller Opera, eller Internet Explorer, eller... ). Skriv en URL i adressfältet: http://www.w3.org/history/1989/proposal.html. Webbläsaren kopplar upp
Läs merTentamen , 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
Läs merProgramstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser
// En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Bubblesort, Shakersort, Mergesort Strömmar,
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs 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 merTentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Läs merGrundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Läs merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs mer//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.
/*==================================================================== Detta program hör ihop med dokumentet EXEMPEL_AVERAGE_POINTS.PDF där det finns förklaringar. ======================================================================*/
Läs merÖversikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop
Översikt Repetition for-loopar Skriva till och läsa från filer Strömmar Eclipse Hur anpassa till vad du gillar? Skriva och läsa data Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 Kontrollflöde
Läs merFöreläsning 2, vecka 8: Repetition
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning
Läs merVem ä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)
Läs merOutline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Läs merEtt problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Läs merIdag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Läs merVad 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
Läs merExempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer
Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num
Läs merSystem.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
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
Läs merF2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
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 merDD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye
DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics
Läs merF6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander
F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning
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 merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merInre klasser Anonyma klasser Kloning I/O-ramverket. anonyma klasser
Föreläsning 12 Inre klasser Anonyma klasser Kloning I/O-ramverket 1 Nästlade klasser En nästlad klass är en klass som är definierad i en annan klass. Det finns fyra olika slag av nästlade klasser: statiska
Läs merIdag. 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
Läs merTDDE10 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:
Läs merFöreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merOOP Objekt-orienterad programmering
OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Input/Output Programsatser Selektion Output OOP F2:2 Görs via System.out, anropa antingen print eller println: System.out.print("Hej"); System.out.println(
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
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 merInkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Läs merProgrammering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Läs merTDDE10 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
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Läs 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 merVad gör vi idag? F8 Uppsamling/Repetition. Tentamen. Detta har vi gått igenom. Detta kommer vi att gå igenom. Detta har vi gått igenom.
F8 Uppsamling/Repetition Vad gör vi idag? Sammanfattar läget Vad har vi gått igenom OOPM Java Laborationerna Lab 1 fokus på Java som språk Lab och Lab 3OOP i praktiken Kollar lite bakåt (lite kursvärdering)
Läs merLösningar för tenta 2 DAT043,
Lösningar för tenta 2 DAT043, 2018-06-08. Uppgift 1 public class Car{ private String model; private String year; private double price; public Car(String model, String year, double price){ this.model =
Läs merObjektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetion: Klasser och objekt Vi definierar nya objekttyper i klasser. Ett objekt
Läs merHämta data mha URLer Föreläsning 2b. Innehåll Klassen URL
Hämta data mha Föreläsning 2b För För mer mer info info se se tex texharold, Hall Halleller Tut Tut (den (den senare senare är är ganska ganska rättfram). Innehåll Klassen URL Arbeta med, exempel Hur hittar
Läs merFöreläsning 9-10 Innehåll
Föreläsning 9-10 Innehåll Inläsning från textfil, utskrift från textfil Vektorer med objekt Matriser Datavetenskap (LTH) Föreläsning 9-10 HT 2018 1 / 41 Klassen Scanner Läsa från System.in Vi har tidigare
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2019-03-22 Skrivtid: 14:00 19:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merCommand line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merEDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Läs merDel A (obligatorisk för alla)
Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Vad blir resultatet av följande kod? b) Satsen double h = (double)(1/10); double s = 0; for (int i= 1;
Läs merpublic och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Läs merArv: 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
Läs merIngenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1
Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva
Läs merKapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ
Organisation En array Šr en ordnad lista av všrden Varje všrde har ett numeriskt index - deklaration & anvšndning som parametrar flerdimensionella fšlt N element indexeras med 0 till N-1 0 1 2 3 4 5 6
Läs merFÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl
Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merKungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
Läs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
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 merFöreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER
Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Logiska uttryck datatypen boolean Logiska uttryck kan ha två möjliga värden, true eller false. Variabler av typen boolean kan tilldelas
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 merIdag. 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
Läs merTentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.
Tentamen Programmeringsteknik II för STS 2007-03-09 Skrivtid: 1500-2000 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd
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 mer1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:
Program element - Introduktion : Ð data typer Ð variabler Ð operatorer och uttryck Ð val och loopar Ð input och output 1 2 import java.io.*; class Addition //===========================================================
Läs merArrayer. results
Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1
Läs merMalmö högskola 2007/2008 Teknik och samhälle
Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa
Läs mer(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
Läs merJAVA Mer om klasser och objektorientering
JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det
Läs merSMD 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
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merDagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen
(10 februari 2019 F4 1 ) Dagens föreläsning Sett i datorsalarna Mer om arrayer Matriser Formatering av utskrifter Inläsning med hjälp av Scanner-klassen (10 februari 2019 F4 2 ) Hört och sett if-loop Skall
Läs merDUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (11) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt namn och personnummer på varje blad
Läs merSkillnader mellan Python och Java
Java Utvecklat på SUN Microsystems mitten 1990-talet Ursprungligen för Webprogram Nu mycket spritt Massor med läroböcker Vi använder Lewis&Loftus http://javasuncom/javase/6/docs/api/ Skillnader mellan
Läs merObjektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.
Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge
Läs mer