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

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
Imperativ Programmering
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Filhantering Grundprincipen för filhantering Öppna filen
Om Java C =>Java syntax variabler metoder färdiga klasser
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Programmering i C# Laborationer.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
Föreläsning 7 Metoder Parametrar Klassmetod.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Föreläsning 3: Booleans, if, switch
Föreläsning 4: for, while, do-while
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

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

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”

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

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

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

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)

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

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

Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på objekt: Account public static void main(String[] args) { Account a = new Account("Lars", ); 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

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

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...

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!

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 Uppgift 2: filtrera fildata filter som hittar fel filter som transformerar använd sträng-operationer och regexp

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

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

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

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: // 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 ")); String line = r.readLine(); OBS: Generell Reader från filström OBS: specifik filläsare med fixerad kodning Titta i javadoc för detaljer!

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

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

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 ls | grep "C.*Q" CareQuest CQ_miand.tgz CQ-OLD-WORKS

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

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} , [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

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();

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

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