Presentation laddar. Vänta.

Presentation laddar. Vänta.

Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License 732G14 Programmering II: “Kursen om CliMate” Human Centered Systems Inst. för datavetenskap.

Liknande presentationer


En presentation över ämnet: "Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License 732G14 Programmering II: “Kursen om CliMate” Human Centered Systems Inst. för datavetenskap."— Presentationens avskrift:

1 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License 732G14 Programmering II: “Kursen om CliMate” Human Centered Systems Inst. för datavetenskap Linköpings universitet

2 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Översikt Översikt över kursen Vad var Java nu igen? Introduktion till CliMate Labb 0 och labb 1 Likt Sherlock Holmes: “Varje detalj är intressant” “Det är spännande när det inte fungerar”

3 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Kursens syfte Fördjupa förståelsen av tidigare programmeringskurser Bygga ett sammanhängande system Bli bättre programmerare - projektkunnade eng. software craftsmanship tyst kunskap & tumregler Förbättra designkunnande Större system har större behov av struktur Arbeta med flera java-filer och paket

4 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Litteratur och examination Litteratur: "Java från grunden" av Torkel Franzen (Studentlitteratur) Java Direkt av Jan Skansholm (Studentlitteratur) Thinking in Java (2nd Edition) av Bruce Eckel, Prentice Hall Examination Godkänd/väl godkänt motsv “fungerande/väl-fungerande” projekt, uppdelat i 1+3 labbar arbete i par eller individuellt 1 inlämningsuppgift via epost individuelllt egna ord/formuleringar

5 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Kursens projekt: CliMate Att bygga ett verktyg för hantering av meteorologiska data Göra arbeta i givet kodskelett i Java Swing Arbeta igenom hela processen för dataprocessning i miniatyr Använda Java 1.4 och MySQL på SMHI-filer Göra en objekt-orienterad design för ett mindre system

6 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Javas grundbegrepp Ett program består av klasser (.java-filer) Klasser kan ses som “moduler” med besläktade metoder (tillstånds)variabler Ett program består normalt av flera klasser Klasser med en metod main är exekverbara Klasser instansieras till objekt objekt har tillstånd Objekt kan anropa varandra Klasser grupperas i paket (mappar)

7 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License javac och java från Eclipse Texteditor Konsol Meddelanden från javac Filträd Kör java

8 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Syntax för ett en Java-klass public class MyHelloWorld { public static void main(String[] args) { System.out.println(“Hej Värld”); } Klassnamn Nyckelord Separator Klass- deklaration Atomisk sats/kommando/metodanrop Satsavslut Metod- block Metod- deklaration

9 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på objekt: Account public static void main(String[] args) { Account a = new Account("Lars", 102434); a.makeDeposit(437); System.out.println( a.getName() + " konto: " + a.getBalance()); a.addInterest(); System.out.println( a.getName() + " konto: " + a.getBalance()); a.addInterest(); System.out.println( a.getName() + " konto: " + a.getBalance()); } Lars konto: 437 Lars konto: 452 Lars konto: 467

10 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Labb 0: CliMate i Eclipse (med Ant) CliMate source java metadata media sql build dist build.xml build.properties lib Ant-skript-filer källfiller t ex.java-filer Använda kodbibliotek s k jar (java archive) “exekverbart program” dvs.class filer etc jar och zip för CliMate Ant/Eclipse Ant

11 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Java-paket och klasser i CliMate Utterance.java CliMate.java MetaData.java Utterance.java... package climate package climate.ui.action ReadFile.java...etc...

12 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate.java – main metoden public static void main(String[] args) { try { CliMate cliMate = new CliMate(); cliMate.setVisible(true); cliMate.pack(); } catch (Throwable th) { th.printStackTrace(); System.err.println("Exception Thrown: system exit with -1"); System.exit(-1); } Startar systemet!

13 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate Labb 1 Uppgift 1: inläsning av data läsa in hela mappar blank-tecken separator sifferdata filnamnet betyder något olika kodning UTF-16 och ISO-8859-1 Uppgift 2: filtrera fildata filter som hittar fel filter som transformerar använd sträng-operationer och regexp

14 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Primitiva nummertyper ett antal typer: int (32-bit), short (16-bit), long (64-bit) float (32-bit), double (64-bit) Polymorfa relationer och operatorer t ex: double x = 2 * 3.14 java.lang.Math: extra operationer t ex max och min

15 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Tecken och värden: översikt Java är baserat på Unicode både för tecken och för källkod Alla primitiva värden består av tecken char är en typ där värdet är “ett tecken” tecken i sin tur är sifferkoder (hex)...t ex \u00C4 är 'Ä' ett värdes semantik är beroende på dess typ t ex heltalet 71 inte detsamma som strängen “71” Värden kan konverteras mellan typer heltalet 71 kan konverteras till “71” eller 71.0

16 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Unicode Unicode är globalt teckenkodningsystem U+xyzu där xyzu är hexa-decimalt tal (16-bit) Flera kända implementationer finns Unicode Transformation Format: UTF-8, UTF-16,... Universal Character Set: UCS-2, UCS-4,... Java är baserat på Unicode “internt” men filerna vi läser från/till kan ha olika kod-system t ex ISO-8859, UTF-8 och UTF-16

17 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Läsning från fil Tip #1: Använd Reader och Writer för “plattformens defaultkodning” Tip #2: Håll reda på vilken kodning filen har Källa: http://www.jorendorff.com/articles/unicode/java.html // WARNING: does not specify encoding BufferedReader r = new BufferedReader(new FileReader(FILE_NAME)); String line = r.readLine(); BufferedReader r = new BufferedReader( new InputStreamReader(new FileInputStream(FILE_NAME), "ISO-8859-1")); String line = r.readLine(); OBS: Generell Reader från filström OBS: specifik filläsare med fixerad kodning Titta i javadoc för detaljer!

18 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Filer som objekt java.io.File åtkomst av fil i det lokala filsystemet, även foldrar relativa sökvägar från foldern där java startades Använd File.separator för rätt sökvägsformat: '/' eller '\'. Systemresurs å tkomst av fil via classpath ClassLoader.getSystemResourceAsStream(“foo/fee.prop”) Använd alltid '/' för sökvägar URL (Universal Resource Locator) – ej i kursen

19 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel till på filhantering med File public static void main(String[] args) { String name = System.getProperty("user.dir"); System.out.println("Programmet körs i katalogen: " + name); File dir = new File(name); File[] children = dir.listFiles(); if (children != null) { List files = new ArrayList (); List subdirectories = new ArrayList (); for (File file : children) { String fileName = file.getName(); if (file.isFile()) { files.add(fileName); } else { subdirectories.add(fileName); } System.out.println("Filer: " + files); System.out.println("Subkataloger: " + subdirectories); } Nuvarande arbetskatalog Läs in katalogen Välj ut “vanliga” filer

20 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Reguljära uttryck - “regexp” mönster (eng pattern) att matcha mot strängar (input) arbeta med ostrukturerad data: rå text syntax varierar men liknande i många språk Perl, Emacs, awk, grep, Java etc för sökning och substitution larde@~/prj: ls | grep "C.*Q" CareQuest CQ_miand.tgz CQ-OLD-WORKS

21 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Syntax för java.util.regex.Pattern (Se javadoc för detaljer) A, \A – tecknet 'A' XY – logisk och X|Y – logisk eller (X) – X som deluttryck \u00C4 – tecknet 'Ä' \n – “new line” [abc] – a, b eller c [a-i] – a, b,... eller i [^abc] – inte a, b eller c. – valfritt tecken Repetition-operator: * – 0 eller fler + – 1 eller fler ? – 0 eller 1 {n,m} – min m, max n \s – whitespace \d – siffra dvs [0-9] ^ – början på rad $ – slutet på rad

22 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på uttryck (cat|dog)+ cat, catcat, catdog, dogdogcat 07\d{1,3}-?[1-9]\d{6,8}0701-5074646, 070013333333 [Hh]ello [Ww]orldhello World, Hello World, hello world ^root root:axcD:/var, men inte larde:dfGh:/root.*[1-9]\.xmlchap1.xml, chap-2.xml, men inte chap12.xml, chap.xml

23 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på sökning String input = “The moose and goose are on the loose”; Pattern p = Pattern.compile(“.oose”); Matcher m = p.matcher(input); while (m.find()) { System.out.println(input.substring(m.start(), m.end())); } moose goose loose Alternativt: m.group();

24 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på substitution String input = "a b c a b c"; String expr = "a"; String replacement = "X"; Pattern pattern = Pattern.compile(expr); Matcher matcher = pattern.matcher(input); String output = matcher.replaceAll(replacement); System.out.println(input); X b c

25 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Summering Detta är en projektkurs = fokus på laboration Den ger erfarenhet av byggande av ett “komplett” system Knyter ihop Java + databaser med tillämpning mot statististik En föreläsning per labb


Ladda ner ppt "Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License 732G14 Programmering II: “Kursen om CliMate” Human Centered Systems Inst. för datavetenskap."

Liknande presentationer


Google-annonser